> > Sadly this doesn't appear to have fixed the issue. I have now reproduced it on AIX. We die at: /* Sanity check user variables for flag changes. */ if (sect->named.decl != NULL && DECL_P (sect->named.decl) && decl != sect->named.decl) { if (decl != NULL && DECL_P (decl)) error ("%+D causes a section type conflict with %D", decl, sect->named.decl); else error ("section type conflict with %D", sect->named.decl); inform (DECL_SOURCE_LOCATION (sect->named.decl), "%qD was declared here", sect->named.decl); }
here we have decl and its local alias: (gdb) p debug_tree (sect->named.decl) <var_decl 70f7d060 _ZTCSt14basic_ifstreamIcSt11char_traitsIcEE0_Si type <array_type 70dd8840 type <pointer_type 700f5840 __vtbl_ptr_type type <function_type 700f57e0> unsigned SI size <integer_cst 70006498 constant 32> unit size <integer_cst 700064b0 constant 4> align 32 symtab 45 alias set 3 canonical type 700f5840 pointer_to_this <pointer_type 700f5900>> BLK size <integer_cst 708002d0 constant 320> unit size <integer_cst 708000d8 constant 40> align 32 symtab 0 alias set 3 canonical type 70dd8840 domain <integer_type 701a78a0 type <integer_type 7001d000 sizetype> type_6 SI size <integer_cst 70006498 32> unit size <integer_cst 700064b0 4> align 32 symtab 0 alias set -1 canonical type 701a78a0 precision 32 min <integer_cst 700064c8 0> max <integer_cst 701a5b88 9>> pointer_to_this <pointer_type 71272d80>> readonly addressable used public static tree_1 tree_5 tree_6 ignored weak in_system_header virtual decl_5 SI file /home/jh/trunk/c/powerpc-ibm-aix7.1.0.0/libstdc++-v3/include/fstream line 444 col 11 size <integer_cst 708002d0 320> unit size <integer_cst 708000d8 40> user align 32 context <record_type 701eb000 basic_ifstream> initial <constructor 70f63680> (mem/u/c:SI (symbol_ref/i:SI ("_ZTCSt14basic_ifstreamIcSt11char_traitsIcEE0_Si") [flags 0x82] <var_decl 70f7d060 _ZTCSt14basic_ifstreamIcSt11char_traitsIcEE0_Si>) [3 _ZTCSt14basic_ifstreamIcSt11char_traitsIcEE0_Si+0 S40 A32])> $6 = 10 (gdb) p debug_tree (decl) <var_decl 714174e0 _ZTCSt14basic_ifstreamIcSt11char_traitsIcEE0_Si.localalias.69 type <array_type 70dd8840 type <pointer_type 700f5840 __vtbl_ptr_type type <function_type 700f57e0> unsigned SI size <integer_cst 70006498 constant 32> unit size <integer_cst 700064b0 constant 4> align 32 symtab 45 alias set 3 canonical type 700f5840 pointer_to_this <pointer_type 700f5900>> BLK size <integer_cst 708002d0 constant 320> unit size <integer_cst 708000d8 constant 40> align 32 symtab 0 alias set 3 canonical type 70dd8840 domain <integer_type 701a78a0 type <integer_type 7001d000 sizetype> type_6 SI size <integer_cst 70006498 32> unit size <integer_cst 700064b0 4> align 32 symtab 0 alias set -1 canonical type 701a78a0 precision 32 min <integer_cst 700064c8 0> max <integer_cst 701a5b88 9>> pointer_to_this <pointer_type 71272d80>> readonly addressable used static tree_1 tree_5 tree_6 ignored in_system_header decl_5 SI file /home/jh/trunk/c/powerpc-ibm-aix7.1.0.0/libstdc++-v3/include/fstream line 444 col 11 size <integer_cst 708002d0 320> unit size <integer_cst 708000d8 40> user align 32 context <record_type 701eb000 basic_ifstream> > $7 = 10 this seems correct - the alias definitely belongs to the section that its terget is placed into. I am not however sure what the test is really checking. It seems to insist on named sections to consist only of one decl. The error happens when we attempt to produce RTL for alias: #0 _Z5errorPKcz (gmsgid=0x11775e44 <__gmpn_bases+42484> "%+D causes a section type conflict with %D") at ../../gcc/diagnostic.c:1048 #1 0x1088d0a0 in _Z11get_sectionPKcjP9tree_node (name=0x711de9d0 "_ZTCSt14basic_ifstreamIcSt11char_traitsIcEE0_Si", flags=2097667, decl=0x714174e0) at ../../gcc/varasm.c:320 #2 0x1088d4d0 in _Z17get_named_sectionP9tree_nodePKci (decl=0x714174e0, name=0x711de9d0 "_ZTCSt14basic_ifstreamIcSt11char_traitsIcEE0_Si", reloc=0) at ../../gcc/varasm.c:419 #3 0x1088f2e8 in _Z20get_variable_sectionP9tree_nodeb (decl=0x714174e0, prefer_noswitch_p=true) at ../../gcc/varasm.c:1112 #4 0x1088f594 in _ZL18get_block_for_declP9tree_node (decl=0x714174e0) at ../../gcc/varasm.c:1161 #5 0x1088ff60 in _Z13make_decl_rtlP9tree_node (decl=0x714174e0) at ../../gcc/varasm.c:1376 Perhaps get_vairable_section should look for alias target, since that is the decl really deciding on the section? Richard? Honza