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)10 foo (void *p)
11 {
12   struct Foo *f = (struct Foo *)p - 1;
13   *f->p = 0;
14 }
15 
bar(void)16 int 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()25 int 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