OSDN Git Service

* gimple.c (is_gimple_non_addressable): Remove.
authoraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 9 Jan 2012 15:14:19 +0000 (15:14 +0000)
committeraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 9 Jan 2012 15:14:19 +0000 (15:14 +0000)
        * gimple.h: Remove is_gimple_non_addressable.
        * gimplify.c (gimplify_modify_expr_rhs): Use is_gimple_reg instead of
        is_gimple_non_addressable.
        * trans-mem.c (expand_assign_tm): Same.

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

gcc/ChangeLog
gcc/gimple.c
gcc/gimple.h
gcc/gimplify.c
gcc/trans-mem.c

index 1df2921..202042a 100644 (file)
@@ -1,3 +1,11 @@
+2012-01-09  Aldy Hernandez  <aldyh@redhat.com>
+
+       * gimple.c (is_gimple_non_addressable): Remove.
+       * gimple.h: Remove is_gimple_non_addressable.
+       * gimplify.c (gimplify_modify_expr_rhs): Use is_gimple_reg instead of
+       is_gimple_non_addressable.
+       * trans-mem.c (expand_assign_tm): Same.
+
 2012-01-09  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/51775
index 1f8f102..9a6ed67 100644 (file)
@@ -2963,17 +2963,6 @@ is_gimple_reg (tree t)
 }
 
 
-/* Return true if T is a GIMPLE variable whose address is not needed.  */
-
-bool
-is_gimple_non_addressable (tree t)
-{
-  if (TREE_CODE (t) == SSA_NAME)
-    t = SSA_NAME_VAR (t);
-
-  return (is_gimple_variable (t) && ! needs_to_live_in_memory (t));
-}
-
 /* Return true if T is a GIMPLE rvalue, i.e. an identifier or a constant.  */
 
 bool
index 484d1a0..5283ca2 100644 (file)
@@ -1006,9 +1006,6 @@ extern bool is_gimple_mem_rhs (tree);
 /* Returns true iff T is a valid if-statement condition.  */
 extern bool is_gimple_condexpr (tree);
 
-/* Returns true iff T is a variable that does not need to live in memory.  */
-extern bool is_gimple_non_addressable (tree t);
-
 /* Returns true iff T is a valid call address expression.  */
 extern bool is_gimple_call_addr (tree);
 
index 5f2cbf3..b3b047a 100644 (file)
@@ -4411,7 +4411,9 @@ gimplify_modify_expr_rhs (tree *expr_p, tree *from_p, tree *to_p,
                /* It's OK to use the target directly if it's being
                   initialized. */
                use_target = true;
-             else if (!is_gimple_non_addressable (*to_p))
+             else if (TREE_CODE (*to_p) != SSA_NAME
+                     && (!is_gimple_variable (*to_p)
+                         || needs_to_live_in_memory (*to_p)))
                /* Don't use the original target if it's already addressable;
                   if its address escapes, and the called function uses the
                   NRV optimization, a conforming program could see *to_p
index 538d798..bd4ce39 100644 (file)
@@ -2184,7 +2184,7 @@ expand_assign_tm (struct tm_region *region, gimple_stmt_iterator *gsi)
       /* ??? Figure out if there's any possible overlap between the LHS
         and the RHS and if not, use MEMCPY.  */
 
-      if (load_p && is_gimple_non_addressable (lhs))
+      if (load_p && is_gimple_reg (lhs))
        {
          tmp = create_tmp_var (TREE_TYPE (lhs), NULL);
          lhs_addr = build_fold_addr_expr (tmp);