gimplify.c (gimple_regimplify_operands): Only mark the LHS of statements for renaming.
authorRichard Guenther <rguenther@suse.de>
Mon, 14 May 2012 15:05:21 +0000 (15:05 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 14 May 2012 15:05:21 +0000 (15:05 +0000)
2012-05-14  Richard Guenther  <rguenther@suse.de>

* gimplify.c (gimple_regimplify_operands): Only mark the LHS
of statements for renaming.
(force_gimple_operand_1): Likewise, consistently for both
calls to force_gimple_operand and force_gimple_operand_gsi.

From-SVN: r187468

gcc/ChangeLog
gcc/gimplify.c

index 40a0f73b9ebf4935203bad520b1d3204f88d916b..67b1fdbde5aab9e0ad1fd3087342de4b3865c4ee 100644 (file)
@@ -1,3 +1,10 @@
+2012-05-14  Richard Guenther  <rguenther@suse.de>
+
+       * gimplify.c (gimple_regimplify_operands): Only mark the LHS
+       of statements for renaming.
+       (force_gimple_operand_1): Likewise, consistently for both
+       calls to force_gimple_operand and force_gimple_operand_gsi.
+
 2012-05-14  Richard Guenther  <rguenther@suse.de>
 
        * tree-dfa.c (make_rename_temp): Be forgiving if not in SSA form.
index 63195ae8f995e20c53e3a8a8b5bb94a7efc36c86..02e42b8b419831984f0179aa07772086ec6c56ea 100644 (file)
@@ -8531,7 +8531,13 @@ gimple_regimplify_operands (gimple stmt, gimple_stmt_iterator *gsi_p)
          gimple_stmt_iterator i;
 
          for (i = gsi_start (pre); !gsi_end_p (i); gsi_next (&i))
-           mark_symbols_for_renaming (gsi_stmt (i));
+           {
+             tree lhs = gimple_get_lhs (gsi_stmt (i));
+             if (lhs
+                 && TREE_CODE (lhs) != SSA_NAME
+                 && is_gimple_reg (lhs))
+               mark_sym_for_renaming (lhs);
+           }
        }
       gsi_insert_seq_before (gsi_p, pre, GSI_SAME_STMT);
     }
@@ -8585,6 +8591,21 @@ force_gimple_operand_1 (tree expr, gimple_seq *stmts,
     for (t = gimplify_ctxp->temps; t ; t = DECL_CHAIN (t))
       add_referenced_var (t);
 
+  if (!gimple_seq_empty_p (*stmts)
+      && gimplify_ctxp->into_ssa)
+    {
+      gimple_stmt_iterator i;
+
+      for (i = gsi_start (*stmts); !gsi_end_p (i); gsi_next (&i))
+       {
+         tree lhs = gimple_get_lhs (gsi_stmt (i));
+         if (lhs
+             && TREE_CODE (lhs) != SSA_NAME
+             && is_gimple_reg (lhs))
+           mark_sym_for_renaming (lhs);
+       }
+    }
+
   pop_gimplify_context (NULL);
 
   return expr;
@@ -8621,14 +8642,6 @@ force_gimple_operand_gsi_1 (gimple_stmt_iterator *gsi, tree expr,
 
   if (!gimple_seq_empty_p (stmts))
     {
-      if (gimple_in_ssa_p (cfun))
-       {
-         gimple_stmt_iterator i;
-
-         for (i = gsi_start (stmts); !gsi_end_p (i); gsi_next (&i))
-           mark_symbols_for_renaming (gsi_stmt (i));
-       }
-
       if (before)
        gsi_insert_seq_before (gsi, stmts, m);
       else