tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond" before forcing it to gimple operand.

* tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
        before forcing it to gimple operand.


Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>

From-SVN: r126692
This commit is contained in:
Richard Guenther 2007-07-16 19:58:45 +00:00 committed by Uros Bizjak
parent 19b493f714
commit fd95ee7ca0
2 changed files with 12 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2007-07-16 Richard Guenther <rguenther@suse.de>
Uros Bizjak <ubizjak@gmail.com>
* tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
before forcing it to gimple operand.
2007-07-16 Sandra Loosemore <sandra@codesourcery.com>
David Ung <davidu@mips.com>

View File

@ -751,7 +751,7 @@ find_phi_replacement_condition (struct loop *loop,
if (TREE_CODE (*cond) == TRUTH_NOT_EXPR)
/* We can be smart here and choose inverted
condition without switching bbs. */
*cond = invert_truthvalue (*cond);
*cond = invert_truthvalue (*cond);
else
/* Select non loop header bb. */
first_edge = second_edge;
@ -770,9 +770,11 @@ find_phi_replacement_condition (struct loop *loop,
/* Create temp. for the condition. Vectorizer prefers to have gimple
value as condition. Various targets use different means to communicate
condition in vector compare operation. Using gimple value allows compiler
to emit vector compare and select RTL without exposing compare's result. */
*cond = force_gimple_operand_bsi (bsi, *cond, false, NULL_TREE,
condition in vector compare operation. Using gimple value allows
compiler to emit vector compare and select RTL without exposing
compare's result. */
*cond = force_gimple_operand_bsi (bsi, unshare_expr (*cond),
false, NULL_TREE,
true, BSI_SAME_STMT);
if (!is_gimple_reg (*cond) && !is_gimple_condexpr (*cond))
{