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