2 /* { dg-require-effective-target split_stack } */
3 /* { dg-options "-fsplit-stack -O2" } */
4 /* { dg-options "-fsplit-stack -O2 -mno-accumulate-outgoing-args" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
6 /* A case that used to fail on 32-bit x86 when optimizing and not
7 using -maccumulate-args. The stack adjustment of the alloca got
8 mixed up with the arguments pushed on the stack to the function
9 before the call of alloca. */
13 typedef struct { const char* s
; int l
; } s
;
15 typedef unsigned long long align16
__attribute__ ((aligned(16)));
17 s
gobats (const void *, int) __attribute__ ((noinline
));
20 gobats (const void* p
__attribute__ ((unused
)),
21 int l
__attribute__ ((unused
)))
29 void check_aligned (void *p
) __attribute__ ((noinline
));
32 check_aligned (void *p
)
34 if (((__SIZE_TYPE__
) p
& 0xf) != 0)
38 void gap (void *) __attribute__ ((noinline
));
47 main (int argc
, char **argv
)
51 space
= (s
*) alloca(sizeof(s
) + 1);