re PR middle-end/53623 (sign extension is effectively split into two x86-64 instructions)
commit3c92da9027c684296d644deb2cf3e6316ed3c867
authorJeff Law <law@redhat.com>
Wed, 8 Jan 2014 06:03:12 +0000 (7 23:03 -0700)
committerJeff Law <law@gcc.gnu.org>
Wed, 8 Jan 2014 06:03:12 +0000 (7 23:03 -0700)
tree9d6940a9da8de60753e9b31ec7d076e013a60547
parent04af8ab664b576f02652dc0034393b3a563b28f7
re PR middle-end/53623 (sign extension is effectively split into two x86-64 instructions)

PR middle-end/53623
* ree.c (combine_set_extension): Handle case where source
and destination registers in an extension insn are different.
(combine_reaching_defs): Allow source and destination
registers in extension to be different under limited
circumstances.
(add_removable_extension): Remove restriction that the
source and destination registers in the extension are the
same.
(find_and_remove_re): Emit a copy from the extension's
destination to its source after the defining insn if
the source and destination registers are different.

PR middle-end/53623
* gcc.target/i386/pr53623.c: New test.

From-SVN: r206418
gcc/ChangeLog
gcc/ree.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr53623.c [new file with mode: 0644]