1/* PR rtl-optimization/57459 */ 2/* { dg-do run } */ 3/* { dg-options "-fno-inline -O2 -minline-all-stringops -fno-omit-frame-pointer" } */ 4 5int total1[10], total2[10], total3[10], total4[10], total5[10], a[20]; 6int len; 7 8void stackclean() { 9 void *ptr = __builtin_alloca(20000); 10 __builtin_memset(ptr, 0, 20000); 11} 12 13void foo(const char *s) { 14 int r1 = a[1]; 15 int r2 = a[2]; 16 int r3 = a[3]; 17 int r4 = a[4]; 18 int r5 = a[5]; 19 20 len = __builtin_strlen(s); 21 22 if (s != 0) 23 return; 24 25 while (r1) { 26 total1[r1] = r1; 27 r1--; 28 } 29 30 while (r2) { 31 total2[r2] = r2; 32 r2--; 33 } 34 35 while (r3) { 36 total3[r3] = r3; 37 r3--; 38 } 39 40 while (r4) { 41 total4[r4] = r4; 42 r4--; 43 } 44 45 while (r5) { 46 total5[r5] = r5; 47 r5--; 48 } 49} 50 51extern void abort (void); 52 53int main() { 54 stackclean(); 55 foo("abcdefgh"); 56 if (len != 8) 57 abort (); 58 return 0; 59} 60 61