aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-10-31 21:16:47 +0000
committerRichard Stallman <rms@gnu.org>1992-10-31 21:16:47 +0000
commitf9e67232ef84bdb81faf1f70359c5d6f2ffcc2e9 (patch)
treef02b4c72cfa09b61f143417f4be6bc1cd3e37ec1 /gcc/combine.c
parent62c13b81f5a69a87f8ceb349d6d229ef4cb6e5a7 (diff)
downloadgcc-f9e67232ef84bdb81faf1f70359c5d6f2ffcc2e9.zip
gcc-f9e67232ef84bdb81faf1f70359c5d6f2ffcc2e9.tar.gz
gcc-f9e67232ef84bdb81faf1f70359c5d6f2ffcc2e9.tar.bz2
(simplify_shift_const):
For a subreg, require subreg_lowpart_p and not paradoxical. From-SVN: r2664
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index 5183508..3f90edb 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -6792,7 +6792,9 @@ simplify_shift_const (x, code, result_mode, varop, count)
/* If VAROP is a SUBREG, strip it as long as the inner operand has
the same number of words as what we've seen so far. Then store
the widest mode in MODE. */
- if (SUBREG_WORD (varop) == 0
+ if (subreg_lowpart_p (varop)
+ && (GET_MODE_SIZE (GET_MODE (SUBREG_REG (varop)))
+ > GET_MODE_SIZE (GET_MODE (varop)))
&& (((GET_MODE_SIZE (GET_MODE (SUBREG_REG (varop)))
+ (UNITS_PER_WORD - 1)) / UNITS_PER_WORD)
== mode_words))