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.

Reply via email to