aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorJames E Wilson <wilson@tuliptree.org>2003-02-27 09:46:35 -0800
committerJim Wilson <wilson@gcc.gnu.org>2003-02-27 09:46:35 -0800
commit678e68fcfdf307d5a2d2bdc1603f1cabb5a7c614 (patch)
tree99d4f9c0c06e462c5cf0517920822bea29b518e2 /gcc/combine.c
parent4ffbd0777c9cc458ce64322e0be0c6f3840ce5b4 (diff)
downloadgcc-678e68fcfdf307d5a2d2bdc1603f1cabb5a7c614.zip
gcc-678e68fcfdf307d5a2d2bdc1603f1cabb5a7c614.tar.gz
gcc-678e68fcfdf307d5a2d2bdc1603f1cabb5a7c614.tar.bz2
Patch for PR 9255
Patch for PR 9255 * combine.c (simplify_comparison): Require integral mode when permuting SUBREG with AND. From-SVN: r63514
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index fe5cce5..50b1876 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -11130,6 +11130,9 @@ simplify_comparison (code, pop0, pop1)
represents the low part, permute the SUBREG and the AND and
try again. */
if (GET_CODE (XEXP (op0, 0)) == SUBREG
+ /* Require an integral mode, to avoid creating something like
+ (AND:SF ...). */
+ && SCALAR_INT_MODE_P (GET_MODE (SUBREG_REG (XEXP (op0, 0))))
/* It is unsafe to commute the AND into the SUBREG if the SUBREG
is paradoxical and WORD_REGISTER_OPERATIONS is not defined.
As originally written the upper bits have a defined value