1 /* { dg-do run } */ 2 /* { dg-options "-fdump-tree-alias" } */ 3 /* { dg-skip-if "" { *-*-* } { "-O0" "-fno-fat-lto-objects" } { "" } } */ 4 5 struct Foo { 6 int *p; 7 }; 8 9 void __attribute__((noinline)) foo(void * p)10foo (void *p) 11 { 12 struct Foo *f = (struct Foo *)p - 1; 13 *f->p = 0; 14 } 15 bar(void)16int bar (void) 17 { 18 struct Foo f; 19 int i = 1; 20 f.p = &i; 21 foo (&f + 1); 22 return i; 23 } 24 extern void abort (void); main()25int main() 26 { 27 if (bar () != 0) 28 abort (); 29 return 0; 30 } 31 32 /* { dg-final { scan-tree-dump "ESCAPED = {\[^\n\}\]* i f \[^\n\}\]*}" "alias" } } */ 33