/* PR37997 */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-pre-details -fno-code-hoisting" } */ int foo (int i, int b, int result) { int mask; if (b) mask = -2; else mask = 0; result = i + 1; result = result & mask; return result; } /* We should insert i + 1 into the if (b) path as well as the simplified i + 1 & -2 expression. And do replacement with two PHI temps. */ /* With hoisting enabled we'd hoist i + 1 to before the if, retaining only one PHI node. */ /* { dg-final { scan-tree-dump-times "with prephitmp" 2 "pre" } } */