https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103359
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The other thing is: -ftree-bit-ccp Visiting statement: _4 = _3 & 1; which is likely CONSTANT Applying pattern match.pd:1641, gimple-match.c:23146 Lattice value changed to CONSTANT 0x0 (0x1). Adding SSA edges to worklist. marking stmt to be not simulated again vs -fno-tree-bit-ccp _4 = _3 & 1; which is likely CONSTANT Applying pattern match.pd:1641, gimple-match.c:23146 Lattice value changed to VARYING. Adding SSA edges to worklist. In the first case we mark the stmt as not be simulated again while in the second case we didn't. Someone who understands ccp better should look into this.