[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #20 from ian at airs dot com 2005-11-07 18:41 --- By the way, Richard, I just want to note that while this is obviously a compiler bug, it is only being triggered for the original test case because of the uninitialized variable i in sha1_update: void sha1_update(SHA1_CONTEXT* context, unsigned char* data, Q_UINT32 len) { Q_UINT32 i, j; if((j + len) 63) { for ( ; i + 63 len; i += 64) { transform(context-state, data[i]); } } } I don't know if that was a consequence of your test case reduction or not. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #21 from mueller at kde dot org 2005-11-07 18:45 --- its an error in the testcase, the original code initializes i: if((j + len) 63) { 562 memcpy(context-buffer[j], data, (i = 64-j)); 563 transform(context-state, context-buffer); 564 for ( ; i + 63 len; i += 64) { 565 transform(context-state, data[i]); 566 } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #22 from ian at gcc dot gnu dot org 2005-11-07 18:52 --- Subject: Bug 24683 Author: ian Date: Mon Nov 7 18:52:24 2005 New Revision: 106601 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=106601 Log: ./: PR rtl-optimization/24683 * config/i386/i386.c (legitimize_pic_address): If constant operand to PLUS is too large, put it in a register. testsuite/: PR rtl-optimization/24683 * gcc.dg/pr24683.c: New test. Added: trunk/gcc/testsuite/gcc.dg/pr24683.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/i386.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #23 from ian at gcc dot gnu dot org 2005-11-07 18:55 --- Subject: Bug 24683 Author: ian Date: Mon Nov 7 18:55:03 2005 New Revision: 106602 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=106602 Log: ./: PR rtl-optimization/24683 * config/i386/i386.c (legitimize_pic_address): If constant operand to PLUS is too large, put it in a register. testsuite/: PR rtl-optimization/24683 * gcc.dg/pr24683.c: New test. Added: branches/gcc-4_0-branch/gcc/testsuite/gcc.dg/pr24683.c Modified: branches/gcc-4_0-branch/gcc/ChangeLog branches/gcc-4_0-branch/gcc/config/i386/i386.c branches/gcc-4_0-branch/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #24 from ian at airs dot com 2005-11-07 18:58 --- Fixed on 4.0 branch and on mainline. The 3.4 branch breaks in a slightly different way. I'm not going to worry about it since you can only create this problem by building implausible addresses that include offsets of more than 2GB. -- ian at airs dot com changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #19 from ian at airs dot com 2005-11-07 02:26 --- Created an attachment (id=10160) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10160action=view) Patch I'm testing this patch. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #10 from pinskia at gcc dot gnu dot org 2005-11-05 16:10 --- And here is a testcase which fails in 3.4.5 and above: int* block; void final(unsigned int j){ int * lsm_tmp1; unsigned char * data; unsigned int i; data = (unsigned char *) ; lsm_tmp1 = block; i = 0; do { if (j == 4294967233) { lsm_tmp1 = (int *) (data + 4294967233); j = 1; } i = i + 1; } while (i != 8); block = lsm_tmp1; } -- pinskia at gcc dot gnu dot org changed: What|Removed |Added Known to fail|4.1.0 4.0.3 4.0.2 |4.1.0 4.0.3 4.0.2 3.4.5 Known to work|3.4.0 |3.3.6 Summary|[4.0/4.1 Regression] ICE in |[3.4/4.0/4.1 Regression] ICE |in extract_insn, at |in in extract_insn, at |recog.c:2084|recog.c:2084 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
-- pinskia at gcc dot gnu dot org changed: What|Removed |Added Severity|critical|normal GCC target triplet|x86_64-unknown-linux-gnu|x86_64-*-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #11 from steven at gcc dot gnu dot org 2005-11-05 16:34 --- Comment #5 is not helpful. Why is this a loop.c bug, you think? In my backtrace we bail out from regmove. It would be far more helpful if you'd add some explanation for why you think this is a loop.c bug. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
-- rguenth at gcc dot gnu dot org changed: What|Removed |Added Severity|normal |critical http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #12 from steven at gcc dot gnu dot org 2005-11-05 16:55 --- Breakpoint 4, emit_move_insn (x=0x2a95a69320, y=0x2a9594c820) at expr.c:3140 3140 enum machine_mode mode = GET_MODE (x); (gdb) p debug_rtx(x) (reg:DI 68) $10 = void (gdb) p debug_rtx(y) (const:DI (plus:DI (symbol_ref/f:DI (*.LC0) [flags 0x2] string_cst 0x2a95a62510) (const_int 4294967233 [0xffc1]))) $11 = void (gdb) bt #0 emit_move_insn (x=0x2a95a69320, y=0x2a9594c820) at expr.c:3140 #1 0x00a6e5a9 in move_movables (loop=0xe72f80, movables=0xe766d8, threshold=93, insn_count=9) at loop.c:2365 #2 0x00a6c59a in scan_loop (loop=0xe72f80, flags=0) at loop.c:1522 #3 0x00a6a1a1 in loop_optimize (f=0x2a9589b940, dumpfile=0x0, flags=0) at loop.c:909 #4 0x00a81e30 in rest_of_handle_loop_optimize () at loop.c:11784 #5 0x00946f77 in execute_one_pass (pass=0xd9ae80) at passes.c:827 A bit further down: 3185 last_insn = emit_move_insn_1 (x, y); (gdb) disab 4 (gdb) next 3187 if (y_cst REG_P (x) (gdb) p debug_rtx(last_insn) (insn 60 59 0 (set (reg:DI 68) (plus:DI (reg/f:DI 69) (const_int 4294967233 [0xffc1]))) -1 (nil) (nil)) $12 = void (gdb) p recog_memoized (last_insn) $13 = -1 (gdb) next 3191set_unique_reg_note (last_insn, REG_EQUAL, y_cst); (gdb) 3193 return last_insn; (gdb) 3194} So there's your wrong instruction, produced by emit_move_insn itself... :-( -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #13 from steven at gcc dot gnu dot org 2005-11-05 16:59 --- ICE on a primary platform, in a popular package. -- steven at gcc dot gnu dot org changed: What|Removed |Added Priority|P3 |P1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #14 from pinskia at gcc dot gnu dot org 2005-11-05 17:26 --- (In reply to comment #13) ICE on a primary platform, in a popular package. As I mentioned in another bug, I think Mark should be the only one which changes the Priority. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #15 from pinskia at gcc dot gnu dot org 2005-11-05 17:31 --- (In reply to comment #14) (In reply to comment #13) ICE on a primary platform, in a popular package. As I mentioned in another bug, I think Mark should be the only one which changes the Priority. I should note that Mark agreed with me (though it was via a private email). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #16 from pinskia at gcc dot gnu dot org 2005-11-05 17:47 --- And here is one which also fails in 3.3.6: int final(int j){ unsigned int i = 0; do { if (j) j = (__SIZE_TYPE__)[4294967233]; i = i + 1; } while (i != 8); return j; } -- pinskia at gcc dot gnu dot org changed: What|Removed |Added Known to fail|4.1.0 4.0.3 4.0.2 3.4.5 |4.1.0 4.0.3 4.0.2 3.4.5 ||3.3.6 Known to work|3.3.6 | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #17 from pinskia at gcc dot gnu dot org 2005-11-05 17:48 --- (In reply to comment #16) And here is one which also fails in 3.3.6: Hmm but passes in 4.0.3. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683
[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084
--- Comment #18 from rguenth at gcc dot gnu dot org 2005-11-05 17:50 --- Note that the original problem, ICE in kdenetwork3 only happens with mainline. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24683