summaryrefslogtreecommitdiff
path: root/gcc/emit-rtl.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-25 17:44:09 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-25 17:44:09 +0000
commit8a7af1a8cbc6957a05c9e1ad073e63a9db9f8aa4 (patch)
tree6d7aed6b1f0dfc7a7d16ba327ff3375278ce95ac /gcc/emit-rtl.c
parentb374dce738920a1a0f0d180124c984558d78b0e3 (diff)
downloadgcc-8a7af1a8cbc6957a05c9e1ad073e63a9db9f8aa4.tar.gz
* emit-rtl-c (gen_lowpart_common): Accept non-paradoxical SUBREG when
UNITS_PER_WORD is small. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36625 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r--gcc/emit-rtl.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index ac5e9655c36..2a4bdb9fcdb 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -707,7 +707,8 @@ gen_lowpart_common (mode, x)
return gen_rtx_fmt_e (GET_CODE (x), mode, XEXP (x, 0));
}
else if (GET_CODE (x) == SUBREG
- && (GET_MODE_SIZE (mode) <= UNITS_PER_WORD
+ && (GET_MODE_SIZE (mode) <= GET_MODE_SIZE (GET_MODE (SUBREG_REG (x)))
+ || GET_MODE_SIZE (mode) <= UNITS_PER_WORD
|| GET_MODE_SIZE (mode) == GET_MODE_UNIT_SIZE (GET_MODE (x))))
return (GET_MODE (SUBREG_REG (x)) == mode && SUBREG_WORD (x) == 0
? SUBREG_REG (x)