http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51174
--- Comment #5 from David Edelsohn <dje at gcc dot gnu.org> 2011-11-16 18:30:29 UTC --- The rs6000.c failure looks like rs6000_xcoff_section_type_flags() should deal with decl == NULL. But the other similar failure is in trans-mem.c: (gdb) where #0 internal_error ( gmsgid=0x10bcf1dc "tree check: %s, have %s in %s, at %s:%d") at /farm/dje/src/src/gcc/diagnostic.c:844 #1 0x10131540 in tree_check_failed (node=0x0, file=0x10c68e50 "/farm/dje/src/src/gcc/trans-mem.c", line=4107, function=0x10c68ec8 "tm_mangle") at /farm/dje/src/src/gcc/tree.c:8815 #2 0x10881f00 in tm_mangle (old_asm_id=0x0) at /farm/dje/src/src/gcc/trans-mem.c:4107 #3 0x1088ca48 in ipa_tm_execute () at /farm/dje/src/src/gcc/trans-mem.c:8862 #4 0x1019f6e8 in execute_one_pass (pass=0x300f7d7c) at /farm/dje/src/src/gcc/passes.c:2074 #5 0x101a0104 in execute_ipa_pass_list (pass=0x300f7d7c) at /farm/dje/src/src/gcc/passes.c:2441 #6 0x1048eb38 in cgraph_optimize () at /farm/dje/src/src/gcc/cgraphunit.c:4155 #7 0x1048f2a8 in cgraph_finalize_compilation_unit () at /farm/dje/src/src/gcc/cgraphunit.c:1327 #8 0x109453b8 in cp_write_global_declarations () at /farm/dje/src/src/gcc/cp/decl2.c:4050 #9 0x100031a8 in toplev_main (argc=4, argv=0x2ff22268) at /farm/dje/src/src/gcc/toplev.c:581 #10 0x100003a0 in main (argc=280818140, argv=0x2ff21d90) at /farm/dje/src/src/gcc/main.c:36 DECL_COMDAT_GROUP (new_decl) = tm_mangle (DECL_COMDAT_GROUP (old_decl)); (gdb) print old_decl $3 = 0x700d6000 (gdb) pt <function_decl 700d6000 __comp_dtor type <method_type 700d4e40 type <void_type 70014780 void VOID align 8 symtab 0 alias set -1 canonical type 70014780 pointer_to_this <pointer_type 700147e0>> SI size <integer_cst 70005620 constant 32> unit size <integer_cst 70005640 constant 4> align 32 symtab 0 alias set -1 canonical type 700d4d20 attributes <tree_list 700d2660 purpose <identifier_node 700bf2d8 transaction_safe bindings <0> local bindings <0>>> method basetype <record_type 700d4b40 shared_count> arg-types <tree_list 700d2648 value <pointer_type 700d4d80> chain <tree_list 70013d80 value <void_type 70014780 void>>> pointer_to_this <pointer_type 700da6c0>> addressable used public static weak autoinline decl_5 SI defer-output file /farm/dje/src/src/gcc/testsuite/g++.dg/tm/pr45940-3.C line 53 col 5 align 32 context <record_type 700d4b40 shared_count> initial <block 7001acc0> abstract_origin <function_decl 700c6f00 shared_count> arguments <parm_decl 700d03c8 this type <pointer_type 700d4de0 type <record_type 700d4b40 shared_count> readonly unsigned SI size <integer_cst 70005620 32> unit size <integer_cst 70005640 4> align 32 symtab 0 alias set -1 canonical type 700d4de0> readonly used unsigned SI file /farm/dje/src/src/gcc/testsuite/g++.dg/tm/pr45940-3.C line 53 col 19 size <integer_cst 70005620 32> unit size <integer_cst 70005640 4> align 32 context <function_decl 700d6000 __comp_dtor > abstract_origin <parm_decl 700d0268 this> arg-type <pointer_type 700d4de0>> result <result_decl 700c2910 D.2008 type <void_type 70014780 void> ignored VOID file /farm/dje/src/src/gcc/testsuite/g++.dg/tm/pr45940-3.C line 56 col 5 align 8 context <function_decl 700d6000 __comp_dtor >> full-name "shared_count::~shared_count()" pending-inline-info 700d7b00 struct-function 700da2a0> (gdb) print new_decl $4 = 0x700e5480 (gdb) pt <function_decl 700e5480 __comp_dtor type <method_type 700d4e40 type <void_type 70014780 void VOID align 8 symtab 0 alias set -1 canonical type 70014780 pointer_to_this <pointer_type 700147e0>> SI size <integer_cst 70005620 constant 32> unit size <integer_cst 70005640 constant 4> align 32 symtab 0 alias set -1 canonical type 700d4d20 attributes <tree_list 700d2660 purpose <identifier_node 700bf2d8 transaction_safe bindings <0> local bindings <0>>> method basetype <record_type 700d4b40 shared_count> arg-types <tree_list 700d2648 value <pointer_type 700d4d80> chain <tree_list 70013d80 value <void_type 70014780 void>>> pointer_to_this <pointer_type 700da6c0>> addressable used public static weak autoinline decl_5 SI defer-output file /farm/dje/src/src/gcc/testsuite/g++.dg/tm/pr45940-3.C line 53 col 5 align 32 context <record_type 700d4b40 shared_count> initial <block 7001acc0> abstract_origin <function_decl 700c6f00 shared_count> arguments <parm_decl 700d03c8 this type <pointer_type 700d4de0 type <record_type 700d4b40 shared_count> readonly unsigned SI size <integer_cst 70005620 32> unit size <integer_cst 70005640 4> align 32 symtab 0 alias set -1 canonical type 700d4de0> readonly used unsigned SI file /farm/dje/src/src/gcc/testsuite/g++.dg/tm/pr45940-3.C line 53 col 19 size <integer_cst 70005620 32> unit size <integer_cst 70005640 4> align 32 context <function_decl 700d6000 __comp_dtor > abstract_origin <parm_decl 700d0268 this> arg-type <pointer_type 700d4de0>> result <result_decl 700c2910 D.2008 type <void_type 70014780 void> ignored VOID file /farm/dje/src/src/gcc/testsuite/g++.dg/tm/pr45940-3.C line 56 col 5 align 8 context <function_decl 700d6000 __comp_dtor >> full-name "shared_count::~shared_count()" pending-inline-info 700d7b00 struct-function 700da2a0>