| /* PR middle-end/37009 */ |
| /* { dg-do run { target { { i?86-*-* x86_64-*-* } && ia32 } } } */ |
| /* { dg-additional-options "-mincoming-stack-boundary=2 -mpreferred-stack-boundary=2" } */ |
| |
| #include "check.h" |
| |
| void |
| bar (char *p, int size) |
| { |
| __builtin_strncpy (p, "good", size); |
| } |
| |
| void |
| __attribute__ ((noinline)) |
| foo (double x, double y ,double z ,double a, int size) |
| { |
| char *p = __builtin_alloca (size + 1); |
| double i; |
| |
| bar (p, size); |
| if (__builtin_strncmp (p, "good", size) != 0) |
| { |
| #ifdef DEBUG |
| p[size] = '\0'; |
| printf ("Failed: %s != good\n", p); |
| #endif |
| abort (); |
| } |
| |
| check (&i, __alignof__(i)); |
| } |
| |
| int |
| main (void) |
| { |
| double x = 1.0 ; |
| |
| foo (x, x, x, x, 5); |
| |
| return 0; |
| } |