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