/* { dg-do run } */ /* { dg-options "-O -fno-tree-fre -fdump-tree-dom1" } */ extern void abort (void); int a; int __attribute__((noinline)) foo (int b) { a = 0; if (b) { a = 1; return a; } /* DOM should be able to CSE both loads here, forwarding 0 and 1 to the PHI feeding the return. */ return a; } int main() { if (foo (0) != 0 || foo (1) != 1) abort (); return 0; } /* { dg-final { scan-tree-dump "= PHI <\[01\]\\\(.\\\), \[01\]\\\(.\\\)>" "dom1" } } */ /* { dg-final { cleanup-tree-dump "dom1" } } */