1 /* { dg-skip-if "requires alloca" { ! alloca } { "-O0" } { "" } } */
2 /* Verify that alloca storage is sufficiently aligned.  */
3 /* ??? May fail if BIGGEST_ALIGNMENT > STACK_BOUNDARY.  Which, I guess
4    can only happen on !STRICT_ALIGNMENT targets.  */
5 
6 typedef __SIZE_TYPE__ size_t;
7 
8 struct dummy { int x __attribute__((aligned)); };
9 #define BIGGEST_ALIGNMENT __alignof__(struct dummy)
10 
foo(void)11 _Bool foo(void)
12 {
13   char *p = __builtin_alloca(32);
14   return ((size_t)p & (BIGGEST_ALIGNMENT - 1)) == 0;
15 }
16 
main()17 int main()
18 {
19   if (!foo())
20     abort ();
21   return 0;
22 }
23