https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67766

            Bug ID: 67766
           Summary: [6 Regression]: Bootstrap failure on alpha-linux-gnu:
                    ICE in simplify_subreg, at simplify-rtx.c
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ubizjak at gmail dot com
                CC: aoliva at gcc dot gnu.org
  Target Milestone: ---
            Target: alpha-linux-gnu

Created attachment 36416
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36416&action=edit
Preprocessed testcase

alpha-linux-gnu bootstrap is currently broken due to r228175:

2015-09-27  Alexandre Oliva <aol...@redhat.com>

        PR rtl-optimization/64164
        PR tree-optimization/67312
        PR middle-end/67340
        PR middle-end/67490
        PR bootstrap/67597
        * cfgexpand.c (parm_in_stack_slot_p): Remove.
        (ssa_default_def_partition): Remove.
        (get_rtl_for_parm_ssa_default_def): Remove.
        (set_rtl): Check that RTL assignments match expectations.
        Loop on SUBREGs, CONCATs and PARALLELs subexprs.  Set only the
        default def location for params and results.  Record SSA names
        or types in REG and MEM attrs, respectively.
        ...

The ICE can be reproduced with a crosscompiler from x86_64-linux-gnu to
alpha-linux-gnu, configured with: --target=alpha-linux-gnu --enable-languages=c
--with-long-double-128

~/gcc-build-alpha/gcc/cc1 -O2 -quiet -fpreprocessed -o libgcc2.o libgcc2.i
/space/homedirs/uros/gcc-svn/trunk/libgcc/libgcc2.c: In function ‘__mulsc3’:
/space/homedirs/uros/gcc-svn/trunk/libgcc/libgcc2.c:1992:1: internal compiler
error: in simplify_subreg, at simplify-rtx.c:5807
0xa50bb0 simplify_subreg(machine_mode, rtx_def*, machine_mode, unsigned int)
        ../../gcc-svn/trunk/gcc/simplify-rtx.c:5807
0xa5104c simplify_gen_subreg(machine_mode, rtx_def*, machine_mode, unsigned
int)
        ../../gcc-svn/trunk/gcc/simplify-rtx.c:6031
0xa1a494 gen_lowpart_general(machine_mode, rtx_def*)
        ../../gcc-svn/trunk/gcc/rtlhooks.c:54
0x7885cf convert_move(rtx_def*, rtx_def*, int)
        ../../gcc-svn/trunk/gcc/expr.c:581
0x7e6edd expand_function_end()
        ../../gcc-svn/trunk/gcc/function.c:5461
0x67c669 construct_exit_block
        ../../gcc-svn/trunk/gcc/cfgexpand.c:5820
0x67c669 execute
        ../../gcc-svn/trunk/gcc/cfgexpand.c:6326
Please submit a full bug report,
[...]

gdb session:

Breakpoint 1, internal_error (gmsgid=0x11f6cd5 "in %s, at %s:%d") at
../../gcc-svn/trunk/gcc/diagnostic.c:1134
1134    internal_error (const char *gmsgid, ...)
(gdb) bt
#0  internal_error (gmsgid=0x11f6cd5 "in %s, at %s:%d") at
../../gcc-svn/trunk/gcc/diagnostic.c:1134
#1  0x000000000102091c in fancy_abort (file=<optimized out>, line=5807, 
    function=0x1121860 <simplify_subreg(machine_mode, rtx_def*, machine_mode,
unsigned int)::__FUNCTION__> "simplify_subreg")
    at ../../gcc-svn/trunk/gcc/diagnostic.c:1209
#2  0x0000000000a50bb1 in simplify_subreg (outermode=VOIDmode,
op=0x2aaaaeae4d20, innermode=SCmode, byte=0)
    at ../../gcc-svn/trunk/gcc/simplify-rtx.c:5807
#3  0x0000000000a5104d in simplify_gen_subreg (outermode=18836693, 
    op=0x1121860 <simplify_subreg(machine_mode, rtx_def*, machine_mode,
unsigned int)::__FUNCTION__>, innermode=17959616, byte=5807)
    at ../../gcc-svn/trunk/gcc/simplify-rtx.c:6031
#4  0x0000000000a1a495 in gen_lowpart_general (mode=VOIDmode, x=0x2aaaaeae4d20)
at ../../gcc-svn/trunk/gcc/rtlhooks.c:54
#5  0x00000000007885d0 in convert_move (to=0x2aaaaea95df0, from=<optimized
out>, unsignedp=0) at ../../gcc-svn/trunk/gcc/expr.c:581
#6  0x00000000007e6ede in expand_function_end () at
../../gcc-svn/trunk/gcc/function.c:5461
#7  0x000000000067c66a in construct_exit_block () at
../../gcc-svn/trunk/gcc/cfgexpand.c:5820
#8  (anonymous namespace)::pass_expand::execute (this=<optimized out>,
fun=0x2aaaaea8b348) at ../../gcc-svn/trunk/gcc/cfgexpand.c:6326

convert_move tries to generate a VOIDmode subreg:

(gdb) f 5
#5  0x00000000007885d0 in convert_move (to=0x2aaaaea95df0, from=<optimized
out>, unsignedp=0) at ../../gcc-svn/trunk/gcc/expr.c:581
581           emit_move_insn (to, gen_lowpart (to_mode, from));
(gdb) p debug_rtx (to)
(parallel/i [
        (expr_list:REG_DEP_TRUE (reg:SF 32 $f0)
            (const_int 0 [0]))
        (expr_list:REG_DEP_TRUE (reg:SF 33 $f1)
            (const_int 4 [0x4]))
    ])
$4 = void
(gdb) f 4
#4  0x0000000000a1a495 in gen_lowpart_general (mode=VOIDmode, x=0x2aaaaeae4d20)
at ../../gcc-svn/trunk/gcc/rtlhooks.c:54
54        rtx result = gen_lowpart_common (mode, x);
(gdb) p mode
$5 = VOIDmode
(gdb) p debug_rtx (x)
(concat:SC (reg:SF 608)
    (reg:SF 609))
$6 = void

Reply via email to