aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1994-09-21 11:01:38 -0700
committerJim Wilson <wilson@gcc.gnu.org>1994-09-21 11:01:38 -0700
commitfc4a0dca1b2250923b5be56a178e28fd1f514ce6 (patch)
tree2cef325bb3722cf3901b466a13b9e041363181fa
parentbf8b268a4d421d061a1203c15c7d3d90239e2752 (diff)
downloadgcc-fc4a0dca1b2250923b5be56a178e28fd1f514ce6.zip
gcc-fc4a0dca1b2250923b5be56a178e28fd1f514ce6.tar.gz
gcc-fc4a0dca1b2250923b5be56a178e28fd1f514ce6.tar.bz2
(eliminate_regs): Make test in LOAD_EXTEND_OP case more precise.
From-SVN: r8114
-rw-r--r--gcc/reload1.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index c56710e..e31267c 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -2915,7 +2915,11 @@ eliminate_regs (x, mem_mode, insn)
smaller. So leave the SUBREG then. */
&& ! (GET_CODE (SUBREG_REG (x)) == REG
&& GET_MODE_SIZE (GET_MODE (x)) <= UNITS_PER_WORD
- && GET_MODE_SIZE (GET_MODE (new)) <= UNITS_PER_WORD)
+ && GET_MODE_SIZE (GET_MODE (new)) <= UNITS_PER_WORD
+ && (GET_MODE_SIZE (GET_MODE (x))
+ > GET_MODE_SIZE (GET_MODE (new)))
+ && INTEGRAL_MODE_P (GET_MODE (new))
+ && LOAD_EXTEND_OP (GET_MODE (new)) != NIL)
#endif
)
{