[Bug rtl-optimization/24683] [3.4/4.0/4.1 Regression] ICE in in extract_insn, at recog.c:2084

2005-11-07 Thread ian at airs dot com


--- 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

2005-11-07 Thread mueller at kde dot org


--- 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

2005-11-07 Thread ian at gcc dot gnu dot org


--- 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

2005-11-07 Thread ian at gcc dot gnu dot org


--- 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

2005-11-07 Thread ian at airs dot com


--- 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

2005-11-06 Thread ian at airs dot com


--- 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

2005-11-05 Thread pinskia at gcc dot gnu dot org


--- 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

2005-11-05 Thread pinskia at gcc dot gnu dot org


-- 

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

2005-11-05 Thread steven at gcc dot gnu dot org


--- 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

2005-11-05 Thread rguenth at gcc dot gnu dot org


-- 

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

2005-11-05 Thread steven at gcc dot gnu dot org


--- 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

2005-11-05 Thread steven at gcc dot gnu dot org


--- 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

2005-11-05 Thread pinskia at gcc dot gnu dot org


--- 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

2005-11-05 Thread pinskia at gcc dot gnu dot org


--- 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

2005-11-05 Thread pinskia at gcc dot gnu dot org


--- 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

2005-11-05 Thread pinskia at gcc dot gnu dot org


--- 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

2005-11-05 Thread rguenth at gcc dot gnu dot org


--- 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