]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.dg/torture/stackalign/nested-3.c
Get rid of dg-skip-if etc. default args
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / torture / stackalign / nested-3.c
1 /* { dg-do run } */
2 /* { dg-skip-if "Stack alignment is too small" { hppa*-*-hpux* } } */
3 /* { dg-require-effective-target alloca } */
4
5 #include "check.h"
6
7 #ifndef ALIGNMENT
8 #define ALIGNMENT 64
9 #endif
10
11 typedef int aligned __attribute__((aligned(ALIGNMENT)));
12 extern int strncmp (const char *, const char *, size_t);
13
14 int global;
15
16 void
17 copy (char *p, int size)
18 {
19 __builtin_strncpy (p, "good", size);
20 }
21
22 void
23 foo (int size)
24 {
25 aligned j;
26
27 __attribute__ ((__noinline__))
28 void bar (int size)
29 {
30 char *p = __builtin_alloca (size + 1);
31 aligned i;
32
33 copy (p, size);
34 if (strncmp (p, "good", size) != 0)
35 {
36 #ifdef DEBUG
37 p[size] = '\0';
38 printf ("Failed: %s != good\n", p);
39 #endif
40 abort ();
41 }
42
43 if (check_int (&i, __alignof__(i)) != i)
44 abort ();
45
46 if (check_int (&j, __alignof__(j)) != j)
47 abort ();
48
49 j = -20;
50 }
51 bar (size);
52
53 if (j != -20)
54 abort ();
55
56 if (check_int (&j, __alignof__(j)) != j)
57 abort ();
58 }
59
60 int
61 main()
62 {
63 foo (5);
64 return 0;
65 }