| /* PR rtl-optimization/57459 */ |
| /* { dg-do run } */ |
| /* { dg-options "-fno-inline -O2 -minline-all-stringops -fno-omit-frame-pointer" } */ |
| |
| int total1[10], total2[10], total3[10], total4[10], total5[10], a[20]; |
| int len; |
| |
| void stackclean() { |
| void *ptr = __builtin_alloca(20000); |
| __builtin_memset(ptr, 0, 20000); |
| } |
| |
| void foo(const char *s) { |
| int r1 = a[1]; |
| int r2 = a[2]; |
| int r3 = a[3]; |
| int r4 = a[4]; |
| int r5 = a[5]; |
| |
| len = __builtin_strlen(s); |
| |
| if (s != 0) |
| return; |
| |
| while (r1) { |
| total1[r1] = r1; |
| r1--; |
| } |
| |
| while (r2) { |
| total2[r2] = r2; |
| r2--; |
| } |
| |
| while (r3) { |
| total3[r3] = r3; |
| r3--; |
| } |
| |
| while (r4) { |
| total4[r4] = r4; |
| r4--; |
| } |
| |
| while (r5) { |
| total5[r5] = r5; |
| r5--; |
| } |
| } |
| |
| extern void abort (void); |
| |
| int main() { |
| stackclean(); |
| foo("abcdefgh"); |
| if (len != 8) |
| abort (); |
| return 0; |
| } |
| |