OSDN Git Service

* tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 16 Jul 2007 19:58:45 +0000 (19:58 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 16 Jul 2007 19:58:45 +0000 (19:58 +0000)
        before forcing it to gimple operand.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@126692 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-if-conv.c

index 2d99d1f..ab57f35 100644 (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>
 
index b18de42..044c2b9 100644 (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))
     {