From d60eab50e172e80a6bdfbb67da40278e1a7ed5e4 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Tue, 22 Aug 2000 19:30:49 +0000 Subject: 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 --- gcc/ChangeLog | 4 ++++ gcc/calls.c | 9 +++++++++ 2 files changed, 13 insertions(+) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fe8bbb4..ce6bf5a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -26,6 +26,10 @@ 2000-08-22 Alexandre Oliva + * calls.c (check_sibcall_argument_overlap_1): Adjust for + ARGS_GROW_DOWNWARD. + (check_sibcall_argument_overlap): Likewise. + * invoke.texi (SH Options): Document -m4-nofpu, -m4-single-only, -m4-single, -m4, -mbigtable, -mfmovd, -mhitachi, -mnomacsave, -misize, -mpadstruct, -mspace. 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; -- cgit v1.1