On 25/10, Andrew Pinski wrote:
| On 10/25/07, Samuel Tardieu <[EMAIL PROTECTED]> wrote:
| > With yesterday's SVN sources, the following source produces the same
| > result with -ftree-cselim and -fno-tree-cselim on x86:
|
| Because another patch does this optimization, the RTL if conversion
| pass which implements conditional moves.
Is there any way to turn it off (other than using -O0) (see current
thread-safeness discussion)?
It looks like this particular optimization is duplicated, as the comment
in tree-ssa-phiopt.c exactly describes what happens here:
/* This pass tries to transform conditional stores into unconditional
ones, enabling further simplifications with the simpler then and else
blocks. In particular it replaces this:
bb0:
if (cond) goto bb2; else goto bb1;
bb1:
*p = RHS
bb2:
with
bb0:
if (cond) goto bb1; else goto bb2;
bb1:
condtmp' = *p;
bb2:
condtmp = PHI <RHS, condtmp'>
*p = condtmp
This transformation can only be done under several constraints,
documented below. */