https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115841
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- Same IL but no ICE: static unsigned char xl[132]; void jerate (unsigned char *, unsigned char *, unsigned char *, unsigned char *); float foo (unsigned n) { unsigned char A170[132]; unsigned char A166[132]; unsigned char A167[132]; jerate (xl, A170, A166, A167); unsigned i = 32; int kr = 1; float sfn11s = 0.f; float sfn12s = 0.f; do { int krm1 = kr - 1; long j = krm1; float a = (*(float(*)[n])A170)[j]; float b = (*(float(*)[n])xl)[j]; float c = a * b; float d = c * 6.93149983882904052734375e-1f; float e = (*(float(*)[n])A166)[j]; float f = (*(float(*)[n])A167)[j]; float g = d * e; sfn11s = sfn11s + g; float h = f * d; sfn12s = sfn12s + h; kr++; } while (--i != 0); float tem = sfn11s + sfn12s; return tem; }