]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* tree.h (copy_mem_ref_info): Delete.
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 1 Oct 2012 13:40:35 +0000 (13:40 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 1 Oct 2012 13:40:35 +0000 (13:40 +0000)
* tree-ssa-address.c (copy_mem_ref_info): Likewise.
(maybe_fold_tmr): Copy flags manually.
* tree-ssa-loop-im.c (simple_mem_ref_in_stmt): Rewrite.

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

gcc/ChangeLog
gcc/tree-ssa-address.c
gcc/tree-ssa-loop-im.c
gcc/tree.h

index 35c062c5979ad7a98b07ad108c997e97798a7303..020892bdf396f34f8c1b1f33aa674cb0db4c07cf 100644 (file)
@@ -1,3 +1,10 @@
+2012-10-01  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree.h (copy_mem_ref_info): Delete.
+       * tree-ssa-address.c (copy_mem_ref_info): Likewise.
+       (maybe_fold_tmr): Copy flags manually.
+       * tree-ssa-loop-im.c (simple_mem_ref_in_stmt): Rewrite.
+
 2012-10-01  Marc Glisse  <marc.glisse@inria.fr>
 
        * simplify-rtx.c (simplify_binary_operation_1) <VEC_SELECT>:
index caa51be6a5d0f4285e02fe84cd0feab77a20aeee..c5b8ff1056bfd572b8a699c4673d8eb9a178a884 100644 (file)
@@ -821,16 +821,6 @@ get_address_description (tree op, struct mem_address *addr)
   addr->offset = TMR_OFFSET (op);
 }
 
-/* Copies the additional information attached to target_mem_ref FROM to TO.  */
-
-void
-copy_mem_ref_info (tree to, tree from)
-{
-  /* And the info about the original reference.  */
-  TREE_SIDE_EFFECTS (to) = TREE_SIDE_EFFECTS (from);
-  TREE_THIS_VOLATILE (to) = TREE_THIS_VOLATILE (from);
-}
-
 /* Copies the reference information from OLD_REF to NEW_REF, where
    NEW_REF should be either a MEM_REF or a TARGET_MEM_REF.  */
 
@@ -901,7 +891,7 @@ maybe_fold_tmr (tree ref)
 {
   struct mem_address addr;
   bool changed = false;
-  tree ret, off;
+  tree new_ref, off;
 
   get_address_description (ref, &addr);
 
@@ -962,10 +952,11 @@ maybe_fold_tmr (tree ref)
      ended up folding it, always create a new TARGET_MEM_REF regardless
      if it is valid in this for on the target - the propagation result
      wouldn't be anyway.  */
-  ret = create_mem_ref_raw (TREE_TYPE (ref),
-                           TREE_TYPE (addr.offset), &addr, false);
-  copy_mem_ref_info (ret, ref);
-  return ret;
+  new_ref = create_mem_ref_raw (TREE_TYPE (ref),
+                               TREE_TYPE (addr.offset), &addr, false);
+  TREE_SIDE_EFFECTS (new_ref) = TREE_SIDE_EFFECTS (ref);
+  TREE_THIS_VOLATILE (new_ref) = TREE_THIS_VOLATILE (ref);
+  return new_ref;
 }
 
 /* Dump PARTS to FILE.  */
index e76e64398eae0b6693ca79ee34a194b21a54f3c1..ac5353905df811a37dfb4fa076cb66e8dd77468e 100644 (file)
@@ -638,29 +638,22 @@ outermost_indep_loop (struct loop *outer, struct loop *loop, mem_ref_p ref)
 static tree *
 simple_mem_ref_in_stmt (gimple stmt, bool *is_store)
 {
-  tree *lhs;
-  enum tree_code code;
+  tree *lhs, *rhs;
 
-  /* Recognize MEM = (SSA_NAME | invariant) and SSA_NAME = MEM patterns.  */
-  if (gimple_code (stmt) != GIMPLE_ASSIGN)
+  /* Recognize SSA_NAME = MEM and MEM = (SSA_NAME | invariant) patterns.  */
+  if (!gimple_assign_single_p (stmt))
     return NULL;
 
-  code = gimple_assign_rhs_code (stmt);
-
   lhs = gimple_assign_lhs_ptr (stmt);
+  rhs = gimple_assign_rhs1_ptr (stmt);
 
-  if (TREE_CODE (*lhs) == SSA_NAME)
+  if (TREE_CODE (*lhs) == SSA_NAME && gimple_vuse (stmt))
     {
-      if (get_gimple_rhs_class (code) != GIMPLE_SINGLE_RHS
-         || !is_gimple_addressable (gimple_assign_rhs1 (stmt)))
-       return NULL;
-
       *is_store = false;
-      return gimple_assign_rhs1_ptr (stmt);
+      return rhs;
     }
-  else if (code == SSA_NAME
-          || (get_gimple_rhs_class (code) == GIMPLE_SINGLE_RHS
-              && is_gimple_min_invariant (gimple_assign_rhs1 (stmt))))
+  else if (gimple_vdef (stmt)
+          && (TREE_CODE (*rhs) == SSA_NAME || is_gimple_min_invariant (*rhs)))
     {
       *is_store = true;
       return lhs;
index 0130ce464ee382dbe3d9891d5d5f7c976807e6e4..1217cc008dee2b4ece3b4f8db6fe7ac2891ca11e 100644 (file)
@@ -6266,7 +6266,6 @@ tree target_for_debug_bind (tree);
 
 /* In tree-ssa-address.c.  */
 extern tree tree_mem_ref_addr (tree, tree);
-extern void copy_mem_ref_info (tree, tree);
 extern void copy_ref_info (tree, tree);
 
 /* In tree-vrp.c */