/* { dg-do run } */ | |
/* { dg-options "-O2 --param global-var-threshold=1" } */ | |
extern void abort(void); | |
struct Bar { int p; }; | |
struct Foo { struct Bar *p; }; | |
struct Bar p0 = { 0 }; | |
struct Bar p1 = { 1 }; | |
void bar(struct Foo *f) | |
{ | |
f->p = &p0; | |
} | |
int foo(struct Foo *f) | |
{ | |
f->p->p = 1; | |
bar(f); | |
return f->p->p; | |
} | |
int main() | |
{ | |
struct Foo f; | |
f.p = &p1; | |
if (foo(&f) != 0) | |
abort (); | |
return 0; | |
} |