/* { dg-options "-O3 -fno-vect-cost-model" } */ struct { float real; float img; } g[11]; float __attribute__ ((noclone)) foo_11 (void) { float sum = 0.0; for (int i = 0; i < 11; ++i) sum += g[i].real; return sum; } float __attribute__ ((noclone)) foo_10 (void) { float sum = 0.0; for (int i = 0; i < 10; ++i) sum += g[i].real; return sum; } int main (void) { float check_10 = 0.0; float check_11 = 0.0; for (int i = 0; i < 11; ++i) { asm volatile ("" : : : "memory"); g[i].real = (float) i; g[i].img = (float) -i; if (i < 10) check_10 += (float) i; check_11 += (float) i; } if (foo_10 () != check_10) __builtin_abort (); if (foo_11 () != check_11) __builtin_abort (); return 0; }