[Bug middle-end/31058] array overflow warning due to incorrect loop unrolling

mueller at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Tue Mar 6 15:22:00 GMT 2007



------- Comment #1 from mueller at gcc dot gnu dot org  2007-03-06 15:22 -------
after prefetch-loop-arrays run, vrp2 looks like this: 

<L81>:;
  D.1885_87 = &r_4(D)->sig[i_13];
  D.1886_88 = D.1885_87 + 160B;
  __builtin_prefetch (D.1886_88, 1);
  r_4(D)->sig[i_13] = 0;
  i_8 = i_13 + 1;
  i_26 = i_8;
  r_4(D)->sig[i_26] = 0;
  i_28 = i_26 + 1;
  i_30 = i_28;
  r_4(D)->sig[i_30] = 0;
  i_32 = i_30 + 1;
  i_34 = i_32;
  r_4(D)->sig[i_34] = 0;
  i_36 = i_34 + 1;
  i_38 = i_36;
  r_4(D)->sig[i_38] = 0;
  i_40 = i_38 + 1;
  i_42 = i_40;
  r_4(D)->sig[i_42] = 0;
  i_44 = i_42 + 1;
  i_46 = i_44;
  r_4(D)->sig[i_46] = 0;
  i_48 = i_46 + 1;
  i_50 = i_48;
  r_4(D)->sig[i_50] = 0;
  i_52 = i_50 + 1;
  i_54 = i_52;
  r_4(D)->sig[i_54] = 0;
  i_56 = i_54 + 1;
  i_58 = i_56;
  r_4(D)->sig[i_58] = 0;
  i_60 = i_58 + 1;
  i_62 = i_60;
  r_4(D)->sig[i_62] = 0;
  i_64 = i_62 + 1;
  i_66 = i_64;
  r_4(D)->sig[i_66] = 0;
  i_68 = i_66 + 1;
  i_70 = i_68;
  r_4(D)->sig[i_70] = 0;
  i_72 = i_70 + 1;
  i_74 = i_72;
  r_4(D)->sig[i_74] = 0;
  i_76 = i_74 + 1;
  i_78 = i_76;
  r_4(D)->sig[i_78] = 0;
[...]

and so on. since it definitely writes more than 5 ints, I don't see how it
should *not* overflow the array. 


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31058



More information about the Gcc-bugs mailing list