[Bug middle-end/53623] [4.7/4.8/4.9 Regression] sign extension is effectively split into two x86-64 instructions
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
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
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
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
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
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.