1 /* Test for alignment handling when a variable is accessed by nested 2 function. */ 3 /* Origin: Joey Ye <joey.ye@intel.com> */ 4 5 /* Force bigger stack alignment for PowerPC EABI targets. */ 6 /* { dg-options "-mno-eabi" { target powerpc-*-eabi* } } */ 7 8 #include <stddef.h> 9 10 typedef int aligned __attribute__((aligned)); 11 extern void abort (void); 12 13 void check(int * i)14check (int *i) 15 { 16 *i = 20; 17 if ((((ptrdiff_t) i) & (__alignof__(aligned) - 1)) != 0) 18 abort (); 19 } 20 21 void foo(void)22foo (void) 23 { 24 aligned jj; 25 void bar () 26 { 27 jj = -20; 28 } 29 jj = 0; 30 bar (); 31 if (jj != -20) 32 abort (); 33 check (&jj); 34 if (jj != 20) 35 abort (); 36 } 37 38 int main()39main() 40 { 41 foo (); 42 return 0; 43 } 44