aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>2000-01-13 09:36:29 +0000
committerJeff Law <law@gcc.gnu.org>2000-01-13 02:36:29 -0700
commit668bcf76c4001dcb54013ef416bf7ced08c3da48 (patch)
treee165106adb47a380d12f44a984550bc96976e5a3 /gcc/combine.c
parentca4cd7abfd87afa06d3dc9da7d94596545f38416 (diff)
downloadgcc-668bcf76c4001dcb54013ef416bf7ced08c3da48.zip
gcc-668bcf76c4001dcb54013ef416bf7ced08c3da48.tar.gz
gcc-668bcf76c4001dcb54013ef416bf7ced08c3da48.tar.bz2
combine.c (if_then_else_cond): Be careful about what kinds of RTL expressions are passed to operand_subword.
* combine.c (if_then_else_cond): Be careful about what kinds of RTL expressions are passed to operand_subword. From-SVN: r31383
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index 484d687..97ec182 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -7216,7 +7216,10 @@ if_then_else_cond (x, ptrue, pfalse)
&& 0 != (cond0 = if_then_else_cond (SUBREG_REG (x),
&true0, &false0)))
{
- if (GET_MODE_SIZE (GET_MODE (SUBREG_REG (x))) > UNITS_PER_WORD
+ if ((GET_CODE (SUBREG_REG (x)) == REG
+ || GET_CODE (SUBREG_REG (x)) == MEM
+ || CONSTANT_P (SUBREG_REG (x)))
+ && GET_MODE_SIZE (GET_MODE (SUBREG_REG (x))) > UNITS_PER_WORD
&& (WORDS_BIG_ENDIAN || SUBREG_WORD (x) != 0))
{
true0 = operand_subword (true0, SUBREG_WORD (x), 0, mode);