diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-05-27 16:42:08 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-05-27 16:42:08 -0400 |
commit | 8080be5fddb57f7c29fc7eea0c34e226fd2afa14 (patch) | |
tree | 801a4b0a37a0ab345abd41298e5e5a4698d6508c /gcc | |
parent | d46f42a50a60cd92500b440fc9b862f3b8932dc7 (diff) | |
download | gcc-8080be5fddb57f7c29fc7eea0c34e226fd2afa14.zip gcc-8080be5fddb57f7c29fc7eea0c34e226fd2afa14.tar.gz gcc-8080be5fddb57f7c29fc7eea0c34e226fd2afa14.tar.bz2 |
(try_combine): Don't make complemented NOT for constant out of range.
From-SVN: r7370
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/combine.c | 26 |
1 files changed, 0 insertions, 26 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index cec950b..e65496b 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -1704,32 +1704,6 @@ try_combine (i3, i2, i1) insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes); } - /* See if this is an XOR. If so, perhaps the problem is that the - constant is out of range. Replace it with a complemented XOR with - a complemented constant; it might be in range. */ - - else if (insn_code_number < 0 && GET_CODE (newpat) == SET - && GET_CODE (SET_SRC (newpat)) == XOR - && GET_CODE (XEXP (SET_SRC (newpat), 1)) == CONST_INT - && ((temp = simplify_unary_operation (NOT, - GET_MODE (SET_SRC (newpat)), - XEXP (SET_SRC (newpat), 1), - GET_MODE (SET_SRC (newpat)))) - != 0)) - { - enum machine_mode i_mode = GET_MODE (SET_SRC (newpat)); - rtx pat - = gen_rtx_combine (SET, VOIDmode, SET_DEST (newpat), - gen_unary (NOT, i_mode, - gen_binary (XOR, i_mode, - XEXP (SET_SRC (newpat), 0), - temp))); - - insn_code_number = recog_for_combine (&pat, i3, &new_i3_notes); - if (insn_code_number >= 0) - newpat = pat; - } - /* If we were combining three insns and the result is a simple SET with no ASM_OPERANDS that wasn't recognized, try to split it into two insns. There are two ways to do this. It can be split using a |