* explow.c (validize_mem): Do not modify the argument in-place.
authorEric Botcazou <ebotcazou@adacore.com>
Mon, 17 Oct 2016 16:10:42 +0000 (16:10 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Mon, 17 Oct 2016 16:10:42 +0000 (16:10 +0000)
From-SVN: r241247

gcc/ChangeLog
gcc/explow.c

index 9acc738accce32779b5832b77cb163347690e3c0..2ad0bb5cd4d5466b37d34c4a07b26926d764c0cb 100644 (file)
@@ -1,3 +1,7 @@
+2016-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * explow.c (validize_mem): Do not modify the argument in-place.
+
 2016-10-17  Thomas Schwinge  <thomas@codesourcery.com>
 
        * tree-streamer.c (record_common_node): Explicitly list expected
@@ -95,7 +99,7 @@
        (lookup_descr_for_decl): New function.
        (convert_tramp_reference_op): Deal with descriptors.
        (build_init_call_stmt): New function extracted from...
-       (finalize_nesting_tree_1): ...here.  Adjust and deal withdescriptors.
+       (finalize_nesting_tree_1): ...here.  Adjust and deal with descriptors.
        * defaults.h (FUNCTION_ALIGNMENT): Define.
        (TRAMPOLINE_ALIGNMENT): Set to above instead of FUNCTION_BOUNDARY.
        * config/i386/i386.h (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define.
index fbebcbd8e47ed06248b44a3d20a7338fa8a6057e..1c59c862f93722639d0a702e246d397de692a532 100644 (file)
@@ -496,9 +496,8 @@ memory_address_addr_space (machine_mode mode, rtx x, addr_space_t as)
   return x;
 }
 
-/* If REF is a MEM with an invalid address, change it into a valid address.
-   Pass through anything else unchanged.  REF must be an unshared rtx and
-   the function may modify it in-place.  */
+/* Convert a mem ref into one with a valid memory address.
+   Pass through anything else unchanged.  */
 
 rtx
 validize_mem (rtx ref)
@@ -510,7 +509,8 @@ validize_mem (rtx ref)
                                   MEM_ADDR_SPACE (ref)))
     return ref;
 
-  return replace_equiv_address (ref, XEXP (ref, 0), true);
+  /* Don't alter REF itself, since that is probably a stack slot.  */
+  return replace_equiv_address (ref, XEXP (ref, 0));
 }
 
 /* If X is a memory reference to a member of an object block, try rewriting