URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.target/] [arm/] [pr42495.c] - Rev 691
Compare with Previous | Blame | View Log
/* { dg-options "-mthumb -Os -fpic -fdump-rtl-hoist" } */ /* { dg-require-effective-target arm_thumb1_ok } */ /* { dg-require-effective-target fpic } */ /* Make sure all calculations of gObj's address get hoisted to one location. */ /* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" } } */ struct st_a { int data; }; struct st_b { struct st_a *p_a; struct st_b *next; }; extern struct st_b gObj; extern void foo(int, struct st_b*); int goo(struct st_b * obj) { struct st_a *pa; if (gObj.p_a->data != 0) { foo(gObj.p_a->data, obj); } pa = obj->p_a; if (pa == 0) { return 0; } else if (pa == gObj.p_a) { return 0; } return pa->data; }