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

Reply via email to