diff options
author | DJ Delorie <dj@redhat.com> | 2001-06-29 17:15:01 -0400 |
---|---|---|
committer | DJ Delorie <dj@gcc.gnu.org> | 2001-06-29 17:15:01 -0400 |
commit | 9199d62b824513e2e5cd943f87e5e1a958a9f4ea (patch) | |
tree | 6b5797e3fd986b6af8e3abbbb0324e55a0e0565a /gcc | |
parent | 62d285ff3a32b4999ef861b181ac32a3460e226d (diff) | |
download | gcc-9199d62b824513e2e5cd943f87e5e1a958a9f4ea.zip gcc-9199d62b824513e2e5cd943f87e5e1a958a9f4ea.tar.gz gcc-9199d62b824513e2e5cd943f87e5e1a958a9f4ea.tar.bz2 |
simplify-rtx.c (simplify_subreg): When simplifying a CONCAT...
* simplify-rtx.c (simplify_subreg): When simplifying a CONCAT, at
least get rid of the CONCAT if we can't simplify further.
From-SVN: r43659
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/simplify-rtx.c | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 407ae10..1feafbe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-06-29 DJ Delorie <dj@redhat.com> + + * simplify-rtx.c (simplify_subreg): When simplifying a CONCAT, at + least get rid of the CONCAT if we can't simplify further. + Fri Jun 29 12:27:24 2001 Jeffrey A Law (law@cygnus.com) * ssa-dce.c (ssa_eliminate_dead_code): Renamed from diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index a5ef099..20471cc 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -2430,9 +2430,14 @@ simplify_subreg (outermode, op, innermode, byte) int is_realpart = byte < GET_MODE_UNIT_SIZE (innermode); rtx part = is_realpart ? XEXP (op, 0) : XEXP (op, 1); unsigned int final_offset; + rtx res; final_offset = byte % (GET_MODE_UNIT_SIZE (innermode)); - return simplify_subreg (outermode, part, GET_MODE (part), final_offset); + res = simplify_subreg (outermode, part, GET_MODE (part), final_offset); + if (res) + return res; + /* We can at least simplify it by referring directly to the relevent part. */ + return gen_rtx_SUBREG (outermode, part, final_offset); } return NULL_RTX; |