/* { dg-do run } */ /* { dg-skip-if "Stack alignment is too small" { hppa*-*-hpux* } "*" "" } */ #include "check.h" #ifndef ALIGNMENT #define ALIGNMENT 64 #endif typedef int t_align __attribute__((aligned(ALIGNMENT))); int global, global2; void bar() { volatile t_align a = 1; int i,j,k; i=j=k=0; for (i=0; i < global; i++) for (j=0; j < i; j++) { global2 = k; throw 0; } if (check_int ((int *) &a, __alignof__(a)) != a) abort (); } int main() { int ll = 1; int i = 0,j = 1,k = 2,l = 3,m = 4,n = 5; try { for (; i < global; i++) for (; j < i; j++) for (; k < j; k++) for (; l < k; l++) for (; m < l; m++) for (; n < m; n++) global2 = k; bar (); } catch (...) { } ll = i+j+k+l+m+n; if (ll != 15) { #ifdef DEBUG printf("FAIL: sum %d != 15\n", ll); #endif abort(); } return 0; }