From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28893 invoked by alias); 23 Dec 2013 13:04:48 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 28692 invoked by uid 48); 23 Dec 2013 13:04:42 -0000 From: "hp at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/59584] New: [4.9 Regression]: gcc.dg/pr50251.c ICE exposed by "Don't reject TER unnecessarily" Date: Mon, 23 Dec 2013 13:04:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: middle-end X-Bugzilla-Version: 4.9.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: hp at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status keywords bug_severity priority component assigned_to reporter cc cf_gcchost cf_gcctarget Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2013-12/txt/msg02053.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59584 Bug ID: 59584 Summary: [4.9 Regression]: gcc.dg/pr50251.c ICE exposed by "Don't reject TER unnecessarily" Product: gcc Version: 4.9.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: hp at gcc dot gnu.org CC: jakub at gcc dot gnu.org Host: x86_64-unknown-linux-gnu Target: cris-axis-elf This test previously passed, now it fails. A patch in the revision range (last_known_working:first_known_failing) 206008:206011 exposed or caused this regression. Since then it fails as follows: Running /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/dg.exp ... ... FAIL: gcc.dg/pr50251.c (internal compiler error) FAIL: gcc.dg/pr50251.c (test for excess errors) In gcc.log: Executing on host: /tmp/hpautotest-gcc1/cris-elf/gccobj/gcc/xgcc -B/tmp/hpautotest-gcc1/cris-elf/gccobj/gcc/ /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c -fno-diagnostics-show-caret -fdiagnostics-color=never -O2 -S -isystem /tmp/hpautotest-gcc1/cris-elf/gccobj/cris-elf/./newlib/targ-include -isystem /tmp/hpautotest-gcc1/gcc/newlib/libc/include -o pr50251.s (timeout = 300) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c: In function 'main': /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c:18:1: internal compiler error: in fixup_args_size_notes, at expr.c:3978 0x698221 fixup_args_size_notes(rtx_def*, rtx_def*, int) /tmp/hpautotest-gcc1/gcc/gcc/expr.c:3978 0x67aef9 try_split(rtx_def*, rtx_def*, int) /tmp/hpautotest-gcc1/gcc/gcc/emit-rtl.c:3602 0x886e61 split_insn /tmp/hpautotest-gcc1/gcc/gcc/recog.c:2850 0x887104 split_all_insns() /tmp/hpautotest-gcc1/gcc/gcc/recog.c:2940 0x8871d2 rest_of_handle_split_after_reload /tmp/hpautotest-gcc1/gcc/gcc/recog.c:3889 0x8871d2 execute /tmp/hpautotest-gcc1/gcc/gcc/recog.c:3918 Please submit a full bug report, with preprocessed source if appropriate. (as the test-case is without preprocessing directives no such action necessary) A few more hints from gdb shows that gcc ties itself in a knot when splitting: (set (reg/f:SI 14 sp) (mem/f/c:SI (symbol_ref:SI ("p"))) into: (gdb) call debug_rtx_range (seq, 0) (insn 33 0 34 (set (reg/f:SI 14 sp) (symbol_ref:SI ("p") )) -1 (nil)) (insn 34 33 0 (set (reg/f:SI 14 sp) (mem/f/c:SI (reg/f:SI 14 sp) [2 p+0 S4 A8])) -1 (expr_list:REG_ARGS_SIZE (const_int 0 [0]) (nil))) (nil) While this define_split has a bug (by matching sp, allowing to set the stack temporarily in an inconsistent state by using sp as a temporary for the symbol), I doubt that's the actual bug causing internal inconsistency within gcc. Anyway: (gdb) r -fpreprocessed pr50251.i -melf -quiet -dumpbase pr50251.c -auxbase-strip pr50251.s -O2 -version -fno-diagnostics-show-caret -fdiagnostics-color=never -o pr50251.s GNU C (GCC) version 4.9.0 20131223 (experimental) [trunk revision 206176] (cris-elf) compiled by GNU C version 4.4.4 20100630 (Red Hat 4.4.4-10), GMP version 4.3.0, MPFR version 2.4.1, MPC version 0.8 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 GNU C (GCC) version 4.9.0 20131223 (experimental) [trunk revision 206176] (cris-elf) compiled by GNU C version 4.4.4 20100630 (Red Hat 4.4.4-10), GMP version 4.3.0, MPFR version 2.4.1, MPC version 0.8 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 Compiler executable checksum: cc4b37aa04284e09676146c2c3d35a20 Breakpoint 1, fancy_abort (file=0xd4f878 "/tmp/hpautotest-gcc1/gcc/gcc/expr.c", line=3978, function=0xd50d50 "fixup_args_size_notes") at /tmp/hpautotest-gcc1/gcc/gcc/diagnostic.c:1182 1182 { Missing separate debuginfos, use: debuginfo-install glibc-2.11.1-1.x86_64 libgcc-4.4.4-10.fc12.x86_64 libstdc++-4.4.4-10.fc12.x86_64 (gdb) up #1 0x0000000000698222 in fixup_args_size_notes (prev=0x0, last=, end_args_size=) at /tmp/hpautotest-gcc1/gcc/gcc/expr.c:3978 3978 gcc_assert (!saw_unknown); (gdb) p prev (gdb) p prev $1 = (rtx_def *) 0x0 (gdb) p last $2 = (gdb) up #2 0x000000000067aefa in try_split (pat=, trial=0x7ffff7ea47e0, last=1) at /tmp/hpautotest-gcc1/gcc/gcc/emit-rtl.c:3602 3602 fixup_args_size_notes (NULL_RTX, insn_last, INTVAL (XEXP (note, 0))); (gdb) p insn_last $3 = (rtx_def *) 0x7ffff7ea4c60 (gdb) p note $4 = (rtx_def *) 0x7ffff7ea2df8 (gdb) pr (expr_list:REG_ARGS_SIZE (const_int 0 [0]) (nil)) (gdb) call debug_rtx_range ($3, 0) (insn 34 33 0 (set (reg/f:SI 14 sp) (mem/f/c:SI (reg/f:SI 14 sp) [2 p+0 S4 A8])) -1 (expr_list:REG_ARGS_SIZE (const_int 0 [0]) (nil))) (nil) (gdb) bt #0 fancy_abort (file=0xd4f878 "/tmp/hpautotest-gcc1/gcc/gcc/expr.c", line=3978, function=0xd50d50 "fixup_args_size_notes") at /tmp/hpautotest-gcc1/gcc/gcc/diagnostic.c:1182 #1 0x0000000000698222 in fixup_args_size_notes (prev=0x0, last=, end_args_size=) at /tmp/hpautotest-gcc1/gcc/gcc/expr.c:3978 #2 0x000000000067aefa in try_split (pat=, trial=0x7ffff7ea47e0, last=1) at /tmp/hpautotest-gcc1/gcc/gcc/emit-rtl.c:3602 #3 0x0000000000886e62 in split_insn (insn=0x7ffff7ea47e0) at /tmp/hpautotest-gcc1/gcc/gcc/recog.c:2850 #4 0x0000000000887105 in split_all_insns () at /tmp/hpautotest-gcc1/gcc/gcc/recog.c:2940 #5 0x00000000008871d3 in rest_of_handle_split_after_reload (this=) at /tmp/hpautotest-gcc1/gcc/gcc/recog.c:3889 #6 (anonymous namespace)::pass_split_after_reload::execute (this=) at /tmp/hpautotest-gcc1/gcc/gcc/recog.c:3918 #7 0x000000000086680a in execute_one_pass (pass=0x1171600) at /tmp/hpautotest-gcc1/gcc/gcc/passes.c:2226 #8 0x0000000000866a86 in execute_pass_list (pass=0x1171600) at /tmp/hpautotest-gcc1/gcc/gcc/passes.c:2279 #9 0x0000000000866a98 in execute_pass_list (pass=0x11714e0) at /tmp/hpautotest-gcc1/gcc/gcc/passes.c:2280 #10 0x0000000000866a98 in execute_pass_list (pass=0x11703a0) at /tmp/hpautotest-gcc1/gcc/gcc/passes.c:2280 #11 0x00000000005f3699 in expand_function (node=0x7ffff7eb5000) at /tmp/hpautotest-gcc1/gcc/gcc/cgraphunit.c:1763 #12 0x00000000005f557d in expand_all_functions () at /tmp/hpautotest-gcc1/gcc/gcc/cgraphunit.c:1897 #13 compile () at /tmp/hpautotest-gcc1/gcc/gcc/cgraphunit.c:2241 #14 0x00000000005f6c6a in finalize_compilation_unit () at /tmp/hpautotest-gcc1/gcc/gcc/cgraphunit.c:2318 #15 0x00000000004a90f3 in c_write_global_declarations () at /tmp/hpautotest-gcc1/gcc/gcc/c/c-decl.c:10400 #16 0x00000000008e560d in compile_file () at /tmp/hpautotest-gcc1/gcc/gcc/toplev.c:561 #17 0x00000000008e6826 in do_compile (argc=15, argv=0x7fffffffe028) at /tmp/hpautotest-gcc1/gcc/gcc/toplev.c:1887 #18 toplev_main (argc=15, argv=0x7fffffffe028) at /tmp/hpautotest-gcc1/gcc/gcc/toplev.c:1963 #19 0x00000037d421eb1d in __libc_start_main () from /lib64/libc.so.6 #20 0x00000000004952c9 in _start () (gdb) up #3 0x0000000000886e62 in split_insn (insn=0x7ffff7ea47e0) at /tmp/hpautotest-gcc1/gcc/gcc/recog.c:2850 2850 rtx last = try_split (PATTERN (insn), insn, 1); (gdb) p insn $5 = (rtx_def *) 0x7ffff7ea47e0 (gdb) pr (insn 14 13 32 2 (set (reg/f:SI 14 sp) (mem/f/c:SI (symbol_ref:SI ("p") ) [2 p+0 S4 A8])) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c:15 37 {*movsi_internal} (expr_list:REG_ARGS_SIZE (const_int 0 [0]) (nil))) (gdb) up #4 0x0000000000887105 in split_all_insns () at /tmp/hpautotest-gcc1/gcc/gcc/recog.c:2940 2940 if (split_insn (insn)) (gdb) p insn $6 = (rtx_def *) 0x7ffff7ea47e0 (failing sequence trying to call get_insns() omitted, instead using the equivalent) (gdb) call debug_rtx_range ((&x_rtl)->emit.x_first_insn, 0) (note 1 0 3 NOTE_INSN_DELETED) (note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK) (note 2 3 7 2 NOTE_INSN_FUNCTION_BEG) (insn 7 2 8 2 (set (mem/f/c:SI (symbol_ref:SI ("p") ) [2 p+0 S4 A8]) (reg/f:SI 14 sp)) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c:13 37 {*movsi_internal} (nil)) (note 8 7 9 2 NOTE_INSN_DELETED) (insn 9 8 31 2 (set (reg/f:SI 0 r0 [31]) (symbol_ref:SI ("bar") [flags 0x41] )) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/ gcc.dg/pr50251.c:14 37 {*movsi_internal} (expr_list:REG_EQUIV (symbol_ref:SI ("bar") [flags 0x41] ) (nil))) (insn 31 9 10 2 (set (reg:SI 10 r10) (const_int -4 [0xfffffffffffffffc])) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c:14 37 {*movsi_internal} (nil)) (insn 10 31 11 2 (set (reg:SI 10 r10) (plus:SI (reg:SI 10 r10) (reg/f:SI 8 r8))) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c:14 74 {*addsi3_non_v32} (expr_list:REG_EQUAL (plus:SI (reg/f:SI 8 r8) (const_int -4 [0xfffffffffffffffc])) (nil))) (call_insn 11 10 12 2 (parallel [ (call (mem:QI (reg/f:SI 0 r0 [31]) [0 bar S1 A8]) (const_int 0 [0])) (clobber (reg:SI 16 srp)) ]) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c:14 220 {*expanded_call_non_v32} (nil) (expr_list:REG_UNUSED (use (reg:SI 10 r10)) (nil))) (insn 12 11 13 2 (clobber (mem:BLK (scratch) [0 A8])) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c:15 -1 (nil)) (insn 13 12 14 2 (clobber (mem:BLK (reg/f:SI 14 sp) [0 A8])) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c:15 -1 (nil)) (insn 14 13 32 2 (set (reg/f:SI 14 sp) (mem/f/c:SI (symbol_ref:SI ("p") ) [2 p+0 S4 A8])) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c:15 37 {*movsi_internal} (expr_list:REG_ARGS_SIZE (const_int 0 [0]) (nil))) (insn 32 14 17 2 (set (reg:SI 10 r10) (const_int -4 [0xfffffffffffffffc])) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c:16 37 {*movsi_internal} (nil)) (insn 17 32 18 2 (set (reg:SI 10 r10) (plus:SI (reg:SI 10 r10) (reg/f:SI 8 r8))) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c:16 74 {*addsi3_non_v32} (expr_list:REG_EQUAL (plus:SI (reg/f:SI 8 r8) (const_int -4 [0xfffffffffffffffc])) (nil))) (call_insn 18 17 23 2 (parallel [ (call (mem:QI (reg/f:SI 0 r0 [31]) [0 bar S1 A8]) (const_int 0 [0])) (clobber (reg:SI 16 srp)) ]) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c:16 220 {*expanded_call_non_v32} (nil) (expr_list:REG_UNUSED (use (reg:SI 10 r10)) (nil))) (insn 23 18 26 2 (set (reg/i:SI 10 r10) (const_int 0 [0])) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c:18 37 {*movsi_internal} (nil)) (insn 26 23 29 2 (use (reg/i:SI 10 r10)) /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/pr50251.c:18 -1 (nil)) (note 29 26 0 NOTE_INSN_DELETED) (nil) (gdb) Author of (all) suspect commits in revision range CC:ed.