------- Comment #3 from pinskia at gcc dot gnu dot org 2006-09-28 02:53 -------
Reduced testcase:
static double a[2000000 +0],avgtime[4] = {0},maxtime[4] = {0};
main()
{
int j, k;
for (j=0; j<4; j++)
{
avgtime[j] = avgtime[j]/(double)(10 -1);
g(avgtime[j],maxtime[j] );
}
}
checktick(double asum, int j)
{
asum += a[j];
if (asum)
f();
}
-------------------
The instruction which it is failing on is:
(insn:TI 22 121 138 (set (subreg:DF (reg:DI 9 9) 0)
(mem/s/c:DF (plus:SI (reg/f:SI 29 29 [130])
(reg:SI 3 3 [131])) [3 avgtime+0 S8 A64])) 919 {*frob_di_df_2}
(nil)
(expr_list:REG_DEAD (reg:SI 3 3 [131])
(nil)))
Which is invalid as you should be splitting the DI part.
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
GCC host triplet|x86_64-unknown-linux-gnu |
Keywords| |ice-on-valid-code
Last reconfirmed|0000-00-00 00:00:00 |2006-09-28 02:53:34
date| |
Summary|[4.2.0 regression] ICE on |[4.2 regression] ICE on
|valid code |valid code
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29255