aboutsummaryrefslogtreecommitdiff
path: root/gcc/calls.c
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2000-08-22 19:30:49 +0000
committerJeff Law <law@gcc.gnu.org>2000-08-22 13:30:49 -0600
commitd60eab50e172e80a6bdfbb67da40278e1a7ed5e4 (patch)
tree69200aa3f5efeb7916d16e3ba5b0e77e522e7cc1 /gcc/calls.c
parent9861b0c9d63ef866cf7e5b99ffc528f978ca66e2 (diff)
downloadgcc-d60eab50e172e80a6bdfbb67da40278e1a7ed5e4.zip
gcc-d60eab50e172e80a6bdfbb67da40278e1a7ed5e4.tar.gz
gcc-d60eab50e172e80a6bdfbb67da40278e1a7ed5e4.tar.bz2
calls.c (check_sibcall_argument_overlap_1): Adjust for ARGS_GROW_DOWNWARD.
* calls.c (check_sibcall_argument_overlap_1): Adjust for ARGS_GROW_DOWNWARD. (check_sibcall_argument_overlap): Likewise. From-SVN: r35887
Diffstat (limited to 'gcc/calls.c')
-rw-r--r--gcc/calls.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index 2d0d52c..6784bca 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1974,6 +1974,10 @@ check_sibcall_argument_overlap_1 (x)
else
return 0;
+#ifdef ARGS_GROW_DOWNWARD
+ i = -i - GET_MODE_SIZE (GET_MODE (x));
+#endif
+
for (k = 0; k < GET_MODE_SIZE (GET_MODE (x)); k++)
if (i + k < stored_args_map->n_bits
&& TEST_BIT (stored_args_map, i + k))
@@ -2025,7 +2029,12 @@ check_sibcall_argument_overlap (insn, arg)
check_sibcall_argument_overlap_1 (PATTERN (insn)))
break;
+#ifdef ARGS_GROW_DOWNWARD
+ low = -arg->offset.constant - arg->size.constant;
+#else
low = arg->offset.constant;
+#endif
+
for (high = low + arg->size.constant; low < high; low++)
SET_BIT (stored_args_map, low);
return insn != NULL_RTX;