Rebase.
[official-gcc.git] / gcc / testsuite / g++.dg / torture / stackalign / throw-2.C
blob63a8c6e7c21b997bfa966192a7c61f08a692e7e5
1 /* { dg-do run } */
2 /* { dg-skip-if "Stack alignment is too small" { hppa*-*-hpux* } "*" "" } */
4 #include "check.h"
6 #ifndef ALIGNMENT
7 #define ALIGNMENT       64
8 #endif
10 typedef int t_align __attribute__((aligned(ALIGNMENT)));
13 int global, global2;
14 void bar()
16         volatile t_align a = 1;
17         int i,j,k;
18         i=j=k=0;
19         for (i=0; i < global; i++)
20           for (j=0; j < i; j++)
21                 global2 = k;
22         if (check_int ((int *) &a,  __alignof__(a)) != a)
23           abort ();
24         throw 0;
27 int main()
29         int ll = 1;
30         int i = 0,j = 1,k = 2,l = 3,m = 4,n = 5;
31         try {
32           for (; i < global; i++)
33           for (; j < i; j++)
34           for (; k < j; k++)
35           for (; l < k; l++)
36           for (; m < l; m++)
37           for (; n < m; n++)
38                 global2 = k;
39           bar ();
40         }
41         catch (...)
42         {
43         }
44         ll = i+j+k+l+m+n;
45         if (ll != 15)
46         {
47 #ifdef DEBUG
48                 printf("FAIL: sum %d != 15\n", ll);
49 #endif
50                 abort();
51         }
52         return 0;