summaryrefslogtreecommitdiff
path: root/gcc/calls.c
diff options
context:
space:
mode:
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2007-02-18 13:52:46 +0000
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2007-02-18 13:52:46 +0000
commite7ffa1e68699c0bf8a68b11e0f6e44526e46eb4f (patch)
tree40162bebea953063b468308fa9475a3a6732b079 /gcc/calls.c
parent27546795d9934e40dbc7888739786485ba03f287 (diff)
downloadgcc-e7ffa1e68699c0bf8a68b11e0f6e44526e46eb4f.tar.gz
* calls.c (mem_overlaps_already_clobbered_arg_p): Return true
for arg pointer based indexed addressing. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122095 138bc75d-0d04-0410-961f-82ee72b054a4
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 d84eb51aa36..e65a2cc79c9 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;