1 /* { dg-do run { target ia32 } } */ 2 /* { dg-options "-O0 -mregparm=3" } */ 3 4 typedef int ptrdiff_t; 5 extern void abort (void); 6 int check_int(int * i,int align)7check_int (int *i, int align) 8 { 9 *i = 20; 10 if ((((ptrdiff_t) i) & (align - 1)) != 0) 11 abort (); 12 return *i; 13 } 14 void check(void * p,int align)15check (void *p, int align) 16 { 17 if ((((ptrdiff_t) p) & (align - 1)) != 0) 18 abort (); 19 } 20 typedef int aligned __attribute__((aligned(64))); 21 void foo(void)22foo (void) 23 { 24 aligned j; 25 void bar () 26 { 27 aligned i; 28 if (check_int (&i, __alignof__(i)) != i) 29 abort (); 30 if (check_int (&j, __alignof__(j)) != j) 31 abort (); 32 j = -20; 33 } 34 bar (); 35 if (j != -20) 36 abort (); 37 if (check_int (&j, __alignof__(j)) != j) 38 abort (); 39 } 40 int main()41main() 42 { 43 foo (); 44 return 0; 45 } 46