[Bug middle-end/53623] [4.7/4.8/4.9 Regression] sign extension is effectively split into two x86-64 instructions

2015-02-15 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53623

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
  Known to work||4.9.0, 5.0
 Resolution|FIXED   |---

--- Comment #12 from H.J. Lu hjl.tools at gmail dot com ---
This regression is only fixed in 4.9 and should be backported to 4.8
branch.


[Bug middle-end/53623] [4.7/4.8/4.9 Regression] sign extension is effectively split into two x86-64 instructions

2015-02-15 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53623

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 CC||brian at soulspark dot org

--- Comment #11 from H.J. Lu hjl.tools at gmail dot com ---
*** Bug 64941 has been marked as a duplicate of this bug. ***


[Bug middle-end/53623] [4.7/4.8/4.9 Regression] sign extension is effectively split into two x86-64 instructions

2014-01-07 Thread law at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53623

--- Comment #9 from Jeffrey A. Law law at gcc dot gnu.org ---
Author: law
Date: Wed Jan  8 06:03:12 2014
New Revision: 206418

URL: http://gcc.gnu.org/viewcvs?rev=206418root=gccview=rev
Log:
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.

Added:
trunk/gcc/testsuite/gcc.target/i386/pr53623.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/ree.c
trunk/gcc/testsuite/ChangeLog


[Bug middle-end/53623] [4.7/4.8/4.9 Regression] sign extension is effectively split into two x86-64 instructions

2014-01-07 Thread law at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53623

Jeffrey A. Law law at redhat dot com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #10 from Jeffrey A. Law law at redhat dot com ---
Fixed on trunk by recent commit.


[Bug middle-end/53623] [4.7/4.8/4.9 Regression] sign extension is effectively split into two x86-64 instructions

2013-12-12 Thread law at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53623

Jeffrey A. Law law at redhat dot com changed:

   What|Removed |Added

 CC||law at redhat dot com

--- Comment #8 from Jeffrey A. Law law at redhat dot com ---
Jakub,

I'm playing with some of your ideas from c#5.  It's actually not a bad approach
to fixing this problem.

Presumably in the REGNO != REGNO case, if we were to allow it, the requirement
that there be a single reaching def is so that we don't end up with different
destination registers in the different reaching defs.  Right?  It also makes
updating marginally easier as there's only one def to fixup.

I don't offhand recall a good way to test that the extension under
consideration dominates all the others.  Can't they be in arbitrary blocks and
locations within the blocks?  And all the others presumably means other users
of the original memory load, right?  What did you have in mind for testing
this?

We definitely want to change the destination of the load to use the other
register and emit a copy from the other register to the load's original
destination.  That insn needs to be emitted immediately after the defining
insn. And yes, the hard register propagation pass should propagate away the
copy most of the time.


Anyway, it's showing enough promise that I'll keep poking.


[Bug middle-end/53623] [4.7/4.8/4.9 Regression] sign extension is effectively split into two x86-64 instructions

2013-04-11 Thread rguenth at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53623



Richard Biener rguenth at gcc dot gnu.org changed:



   What|Removed |Added



   Target Milestone|4.7.3   |4.7.4



--- Comment #7 from Richard Biener rguenth at gcc dot gnu.org 2013-04-11 
07:59:45 UTC ---

GCC 4.7.3 is being released, adjusting target milestone.