From: Richard Guenther Date: Mon, 16 Jul 2007 19:55:17 +0000 (+0000) Subject: tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond" before forcing it... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e8115097b2bc21ca8f2ff6b99c3e0dd794ad243d;p=thirdparty%2Fgcc.git 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 From-SVN: r126690 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 172a189c8a27..c55224baf69f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-07-16 Richard Guenther + Uros Bizjak + + * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond" + before forcing it to gimple operand. + 2007-07-13 Paolo Bonzini Revert these patches: diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index 006d3dba23bf..18e6de50e240 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -743,7 +743,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; @@ -762,9 +762,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 (*cond, &new_stmts, 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 (unshare_expr (*cond), &new_stmts, + false, NULL_TREE); if (new_stmts) bsi_insert_before (bsi, new_stmts, BSI_SAME_STMT); if (!is_gimple_reg (*cond) && !is_gimple_condexpr (*cond))