summaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>2011-06-20 14:53:48 +0000
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>2011-06-20 14:53:48 +0000
commit8f498f23a2f4f91491e3a26c904eafa07bd97f6c (patch)
tree50bddf0089eeec9e64b85925a09e2f1a635b73ca /gcc/combine.c
parent139a41291fd4994519fef686e65e5c96043c930b (diff)
downloadgcc-8f498f23a2f4f91491e3a26c904eafa07bd97f6c.tar.gz
Check zero/sign extended hard registers.
2011-06-20 H.J. Lu <hongjiu.lu@intel.com> PR middle-end/47725 * combine.c (cant_combine_insn_p): Check zero/sign extended hard registers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@175218 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index 56fb44eaf42..004ae27687d 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -2168,6 +2168,12 @@ cant_combine_insn_p (rtx insn)
return 0;
src = SET_SRC (set);
dest = SET_DEST (set);
+ if (GET_CODE (src) == ZERO_EXTEND
+ || GET_CODE (src) == SIGN_EXTEND)
+ src = XEXP (src, 0);
+ if (GET_CODE (dest) == ZERO_EXTEND
+ || GET_CODE (dest) == SIGN_EXTEND)
+ dest = XEXP (dest, 0);
if (GET_CODE (src) == SUBREG)
src = SUBREG_REG (src);
if (GET_CODE (dest) == SUBREG)