From b98b49ac727f969a64be0dcd20d5493cdd325ac8 Mon Sep 17 00:00:00 2001 From: Jeffrey A Law Date: Wed, 8 Jul 1998 01:58:58 +0000 Subject: rtlanal.c (reg_overlap_mentioned_p): Handle STRICT_LOW_PART. * rtlanal.c (reg_overlap_mentioned_p): Handle STRICT_LOW_PART. If either argument is CONSTANT_P, then return zero. * reload.c (reg_overlap_mentioned_for_reload_p): Similarly. From-SVN: r21005 --- gcc/rtlanal.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'gcc/rtlanal.c') diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index b410553..8f42391 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -817,7 +817,14 @@ reg_overlap_mentioned_p (x, in) { int regno, endregno; - if (GET_CODE (x) == SUBREG) + /* Overly conservative. */ + if (GET_CODE (x) == STRICT_LOW_PART) + x = XEXP (x, 0); + + /* If either argument is a constant, then modifying X can not affect IN. */ + if (CONSTANT_P (x) || CONSTANT_P (in)) + return 0; + else if (GET_CODE (x) == SUBREG) { regno = REGNO (SUBREG_REG (x)); if (regno < FIRST_PSEUDO_REGISTER) @@ -825,8 +832,6 @@ reg_overlap_mentioned_p (x, in) } else if (GET_CODE (x) == REG) regno = REGNO (x); - else if (CONSTANT_P (x)) - return 0; else if (GET_CODE (x) == MEM) { char *fmt; -- cgit v1.1