URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [gcc.dg/] [tree-ssa/] [20050719-1.c] - Rev 816
Compare with Previous | Blame | View Log
/* { dg-do run } */ /* { dg-options "-O2" } */ extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); struct bootLoader { int x; }; void zap(struct bootLoader *bootLoader) { /* The expression on the RHS of the assignment is *not* a dereference of pointer 'bootLoader'. It is merely used as an offset calculation. VRP was erroneously removing the if() because it thought that 'bootLoader' was always dereferenced. */ int *boot = &bootLoader->x; if (bootLoader) { useboot (boot); } } int useboot (void *boot) { abort (); } main() { zap (0); return 0; }