aboutsummaryrefslogtreecommitdiff
path: root/gcc/calls.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2007-02-18 13:52:46 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2007-02-18 13:52:46 +0000
commitae22dcff000225c1a70176c60ce531b076dc5828 (patch)
tree40162bebea953063b468308fa9475a3a6732b079 /gcc/calls.c
parent0028647ea7acc9af2e27bd246faac9bb073c94e5 (diff)
downloadgcc-ae22dcff000225c1a70176c60ce531b076dc5828.zip
gcc-ae22dcff000225c1a70176c60ce531b076dc5828.tar.gz
gcc-ae22dcff000225c1a70176c60ce531b076dc5828.tar.bz2
calls.c (mem_overlaps_already_clobbered_arg_p): Return true for arg pointer based indexed addressing.
* calls.c (mem_overlaps_already_clobbered_arg_p): Return true for arg pointer based indexed addressing. From-SVN: r122095
Diffstat (limited to 'gcc/calls.c')
-rw-r--r--gcc/calls.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index d84eb51..e65a2cc 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1481,10 +1481,14 @@ mem_overlaps_already_clobbered_arg_p (rtx addr, unsigned HOST_WIDE_INT size)
if (addr == current_function_internal_arg_pointer)
i = 0;
else if (GET_CODE (addr) == PLUS
- && (XEXP (addr, 0)
- == current_function_internal_arg_pointer)
+ && XEXP (addr, 0) == current_function_internal_arg_pointer
&& GET_CODE (XEXP (addr, 1)) == CONST_INT)
i = INTVAL (XEXP (addr, 1));
+ /* Return true for arg pointer based indexed addressing. */
+ else if (GET_CODE (addr) == PLUS
+ && (XEXP (addr, 0) == current_function_internal_arg_pointer
+ || XEXP (addr, 1) == current_function_internal_arg_pointer))
+ return true;
else
return false;