This ICE breaks alpha bootstrap, it can be reproduced with (to be) attached preprocessed source on a cross from x86_64-pc-linux-gnu to alpha-linux-gnu.
~/gcc-build-alpha/gcc/cc1 -quiet -O2 -g -mlong-double-128 libgcc2.i ../../../gcc-svn/trunk/libgcc/../gcc/libgcc2.c: In function '__divtc3': ../../../gcc-svn/trunk/libgcc/../gcc/libgcc2.c:1948:1: internal compiler error: in loc_cmp, at var-tracking.c:2456 Please submit a full bug report, (gdb) bt #0 fancy_abort (file=0xae4ac0 "../../gcc-svn/trunk/gcc/var-tracking.c", line=2456, function=0xae5073 "loc_cmp") at ../../gcc-svn/trunk/gcc/diagnostic.c:727 #1 0x00000000008bf675 in loc_cmp (x=0xca67dd8, y=0xca77808) at ../../gcc-svn/trunk/gcc/var-tracking.c:2456 #2 0x00000000008bf6bd in onepart_variable_different_p (var1=<value optimized out>, var2=<value optimized out>) at ../../gcc-svn/trunk/gcc/var-tracking.c:3932 #3 0x00000000008c8022 in variable_merge_over_cur (s1slot=0xca9b0b0, data=<value optimized out>) at ../../gcc-svn/trunk/gcc/var-tracking.c:3037 #4 0x0000000000a26dd8 in htab_traverse_noresize (htab=<value optimized out>, callback=0x8c7bd0 <variable_merge_over_cur>, info=0x7ffff827c7f0) at ../../gcc-svn/trunk/libiberty/hashtab.c:750 #5 0x00000000008c13fc in dataflow_set_merge (dst=0xcac47f0, src=<value optimized out>) at ../../gcc-svn/trunk/gcc/var-tracking.c:3294 #6 0x00000000008cc632 in variable_tracking_main () at ../../gcc-svn/trunk/gcc/var-tracking.c:5462 (gdb) up #1 0x00000000008bf675 in loc_cmp (x=0xca67dd8, y=0xca77808) at ../../gcc-svn/trunk/gcc/var-tracking.c:2456 2456 gcc_assert (GET_MODE (x) == GET_MODE (y)); (gdb) p debug_rtx (x) (value/s/u:TF 179 @0xca67dd8/0xca69328) $1 = void (gdb) p debug_rtx (y) (value/s/u:DI 325 @0xca77808/0xca78118) $2 = void (gdb) up #2 0x00000000008bf6bd in onepart_variable_different_p (var1=<value optimized out>, var2=<value optimized out>) at ../../gcc-svn/trunk/gcc/var-tracking.c:3932 3932 if (loc_cmp (lc1->loc, lc2->loc)) (gdb) p debug_variable (var1) Program received signal SIGSEGV, Segmentation fault. dump_variable (file=0x3365150860, var=0x0) at ../../gcc-svn/trunk/gcc/tree-dfa.c:273 273 if (TREE_CODE (var) == SSA_NAME) The program being debugged was signaled while in a function called from GDB. GDB remains in the frame where the signal was received. To change this behavior use "set unwindonsignal on" Evaluation of the expression containing the function (debug_variable) will be abandoned. (ouch...) Following patch is also needed to get that far on native alpha bootstrap: Index: config/alpha/alpha.c =================================================================== --- config/alpha/alpha.c (revision 151367) +++ config/alpha/alpha.c (working copy) @@ -7664,7 +7664,7 @@ alpha_does_function_need_gp (void) pop_topmost_sequence (); for (; insn; insn = NEXT_INSN (insn)) - if (INSN_P (insn) + if (NONDEBUG_INSN_P (insn) && ! JUMP_TABLE_DATA_P (insn) && GET_CODE (PATTERN (insn)) != USE && GET_CODE (PATTERN (insn)) != CLOBBER -- Summary: VTA: bootstrap failure, ICE in loc_cmp, at var- tracking.c:2456 Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ubizjak at gmail dot com GCC host triplet: x86_64-linux-gnu GCC target triplet: alpha-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41238