* gcc.dg/torture/stackalign/builtin-apply-2.c: Fix skip-if syntax.
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / stackalign / vararg-2.c
blobc678b519495c05faca86c91d5dbbd4c9a10c96cd
1 /* { dg-do run } */
2 /* { dg-skip-if "Stack alignment is too small" { hppa*-*-hpux* } "*" "" } */
3 /* { dg-require-effective-target alloca } */
5 #include <stdarg.h>
6 #include "check.h"
8 #ifndef ALIGNMENT
9 #define ALIGNMENT 64
10 #endif
12 typedef int aligned __attribute__((aligned(ALIGNMENT)));
14 int global;
16 void
17 bar (char *p, int size)
19 __builtin_strncpy (p, "good", size);
22 void
23 test (va_list arg)
25 char *p;
26 aligned i;
27 int size;
28 double x;
30 size = va_arg (arg, int);
31 if (size != 5)
32 abort ();
34 p = __builtin_alloca (size + 1);
36 x = va_arg (arg, double);
37 if (x != 5.0)
38 abort ();
40 bar (p, size);
41 if (__builtin_strncmp (p, "good", size) != 0)
43 #ifdef DEBUG
44 p[size] = '\0';
45 printf ("Failed: %s != good\n", p);
46 #endif
47 abort ();
50 if (check_int (&i, __alignof__(i)) != i)
51 abort ();
54 void
55 foo (const char *fmt, ...)
57 va_list arg;
58 va_start (arg, fmt);
59 test (arg);
60 va_end (arg);
62 int
63 main()
65 foo ("foo", 5, 5.0);
66 return 0;