noticed we have this fixed since GCC 6. Committed.
Richard. 2016-06-29 Richard Biener <rguent...@suse.de> PR middle-end/15256 * gcc.dg/tree-ssa/forwprop-34.c: New testcase. Index: gcc/testsuite/gcc.dg/tree-ssa/forwprop-34.c =================================================================== *** gcc/testsuite/gcc.dg/tree-ssa/forwprop-34.c (revision 0) --- gcc/testsuite/gcc.dg/tree-ssa/forwprop-34.c (working copy) *************** *** 0 **** --- 1,15 ---- + /* { dg-do compile } */ + /* { dg-options "-O -fdump-tree-cddce1" } */ + + unsigned int + foo (unsigned int eax) + { + unsigned int edx = eax & 1; + edx ^= 1; + eax &= -2; + eax |= edx; + return eax; + } + + /* { dg-final { scan-tree-dump-times " = " 1 "cddce1" } } */ + /* { dg-final { scan-tree-dump " = eax_\[0-9\]+\\(D\\) \\^ 1;" "cddce1" } } */