diff options
author | Jeffrey A Law <law@cygnus.com> | 2000-01-13 09:36:29 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2000-01-13 02:36:29 -0700 |
commit | 668bcf76c4001dcb54013ef416bf7ced08c3da48 (patch) | |
tree | e165106adb47a380d12f44a984550bc96976e5a3 /gcc/combine.c | |
parent | ca4cd7abfd87afa06d3dc9da7d94596545f38416 (diff) | |
download | gcc-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.c | 5 |
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); |