From 38979c658769ad5aa7f3605ce5d85a3852f866d0 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Wed, 23 Jan 2002 01:56:22 +0000 Subject: [PATCH] reload.c (reg_overlap_mentioned_for_reload_p): Handle PLUS and auto_inc_dec values. * reload.c (reg_overlap_mentioned_for_reload_p): Handle PLUS and auto_inc_dec values. From-SVN: r49118 --- gcc/ChangeLog | 5 +++++ gcc/reload.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 77cd5d9ca21..4974da5bd5c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-01-22 Alexandre Oliva + + * reload.c (reg_overlap_mentioned_for_reload_p): Handle PLUS and + auto_inc_dec values. + 2002-01-22 Richard Earnshaw * config/netbsd-aout.h (SWITCH_TAKES_ARG): Remove bogus white space diff --git a/gcc/reload.c b/gcc/reload.c index 8f82c9341f5..9b8cdc95020 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -6166,7 +6166,8 @@ reg_overlap_mentioned_for_reload_p (x, in) int regno, endregno; /* Overly conservative. */ - if (GET_CODE (x) == STRICT_LOW_PART) + if (GET_CODE (x) == STRICT_LOW_PART + || GET_RTX_CLASS (GET_CODE (x)) == 'a') x = XEXP (x, 0); /* If either argument is a constant, then modifying X can not affect IN. */ @@ -6202,6 +6203,9 @@ reg_overlap_mentioned_for_reload_p (x, in) else if (GET_CODE (x) == SCRATCH || GET_CODE (x) == PC || GET_CODE (x) == CC0) return reg_mentioned_p (x, in); + else if (GET_CODE (x) == PLUS) + return (reg_overlap_mentioned_for_reload_p (XEXP (x, 0), in) + || reg_overlap_mentioned_for_reload_p (XEXP (x, 1), in)); else abort (); -- 2.30.2