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. */