OSDN Git Service

* tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 May 2008 21:42:48 +0000 (21:42 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 May 2008 21:42:48 +0000 (21:42 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@135582 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree.c

index 8ed8a8a..e9edd79 100644 (file)
@@ -1,3 +1,7 @@
+2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
+
 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
 
        * gcc/config/i386/i386.c (ix86_expand_vector_init_concat): Change
index 5a0656c..18a9460 100644 (file)
@@ -2516,8 +2516,7 @@ substitute_in_expr (tree exp, tree f, tree r)
 {
   enum tree_code code = TREE_CODE (exp);
   tree op0, op1, op2, op3;
-  tree new;
-  tree inner;
+  tree new, inner;
 
   /* We handle TREE_LIST and COMPONENT_REF separately.  */
   if (code == TREE_LIST)
@@ -2627,13 +2626,15 @@ substitute_in_expr (tree exp, tree f, tree r)
          for (i = 1; i < TREE_OPERAND_LENGTH (exp); i++)
            {
              tree op = TREE_OPERAND (exp, i);
-             tree newop = SUBSTITUTE_IN_EXPR (op, f, r);
-             if (newop != op)
+             tree new_op = SUBSTITUTE_IN_EXPR (op, f, r);
+             if (new_op != op)
                {
-                 copy = copy_node (exp);
-                 TREE_OPERAND (copy, i) = newop;
+                 if (!copy)
+                   copy = copy_node (exp);
+                 TREE_OPERAND (copy, i) = new_op;
                }
            }
+
          if (copy)
            new = fold (copy);
          else