diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2011-03-18 00:29:15 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2011-03-17 17:29:15 -0700 |
commit | 76069764344e8637046fa002ad98108a24b00271 (patch) | |
tree | a1dc8c870afbaf05bcc3f2a156688bb3e52cf9c0 /gcc/combine.c | |
parent | 98aa09c6b1a226b0e12ab735d2a62cf29e915247 (diff) | |
download | gcc-76069764344e8637046fa002ad98108a24b00271.zip gcc-76069764344e8637046fa002ad98108a24b00271.tar.gz gcc-76069764344e8637046fa002ad98108a24b00271.tar.bz2 |
Check zero/sign extended hard registers.
gcc/
2011-03-17 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/47725
* combine.c (cant_combine_insn_p): Check zero/sign extended
hard registers.
gcc/testsuite/
2011-03-17 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/47725
* gcc.dg/torture/pr47725.c: New.
From-SVN: r171124
Diffstat (limited to 'gcc/combine.c')
-rw-r--r-- | gcc/combine.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index f9d33b3..67aecf1 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -2137,6 +2137,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) |