aboutsummaryrefslogtreecommitdiff
path: root/gcc/explow.c
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2014-07-24 15:17:35 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2014-07-24 15:17:35 +0000
commit1a8cb1557afa68b6924036babfa7b68f2d9bdfec (patch)
tree49d0c94109fd5b2babebf70c832b8a08a6eb1b6b /gcc/explow.c
parent4b92caa1d6e5623e3562a76976d0bba7a413b2ce (diff)
downloadgcc-1a8cb1557afa68b6924036babfa7b68f2d9bdfec.zip
gcc-1a8cb1557afa68b6924036babfa7b68f2d9bdfec.tar.gz
gcc-1a8cb1557afa68b6924036babfa7b68f2d9bdfec.tar.bz2
re PR middle-end/61268 (ICE in vt_expand_var_loc_chain, at var-tracking.c:8262)
gcc/ PR middle-end/61268 * function.c (assign_parm_setup_reg): Prevent invalid sharing of DECL_INCOMING_RTL and entry_parm. (get_arg_pointer_save_area): Likewise arg_pointer_save_area. * calls.c (load_register_parameters): Likewise argument values. (emit_library_call_value_1, store_one_arg): Likewise argument save areas. * config/i386/i386.c (assign_386_stack_local): Likewise the local stack slot. * explow.c (validize_mem): Modify the argument in-place. From-SVN: r213002
Diffstat (limited to 'gcc/explow.c')
-rw-r--r--gcc/explow.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/explow.c b/gcc/explow.c
index e39db05..92c4e57 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -518,8 +518,9 @@ memory_address_addr_space (enum machine_mode mode, rtx x, addr_space_t as)
return x;
}
-/* Convert a mem ref into one with a valid memory address.
- Pass through anything else unchanged. */
+/* 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. */
rtx
validize_mem (rtx ref)
@@ -531,8 +532,7 @@ validize_mem (rtx ref)
MEM_ADDR_SPACE (ref)))
return ref;
- /* Don't alter REF itself, since that is probably a stack slot. */
- return replace_equiv_address (ref, XEXP (ref, 0));
+ return replace_equiv_address (ref, XEXP (ref, 0), true);
}
/* If X is a memory reference to a member of an object block, try rewriting