summaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2003-02-27 17:46:35 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2003-02-27 17:46:35 +0000
commitda052aaf9680827a09243f4aea51a0f6efe9e198 (patch)
tree99d4f9c0c06e462c5cf0517920822bea29b518e2 /gcc/combine.c
parent15bfe2aefcd27302bd63ea06c2c42a8a29b1be6f (diff)
downloadgcc-da052aaf9680827a09243f4aea51a0f6efe9e198.tar.gz
Patch for PR 9255
* combine.c (simplify_comparison): Require integral mode when permuting SUBREG with AND. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63514 138bc75d-0d04-0410-961f-82ee72b054a4
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 fe5cce50f24..50b1876eb58 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