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