This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA: displacement handling in equiv_address_substitution


On 10/25/2012 04:06 PM, Richard Sandiford wrote:
Vladimir Makarov <vmakarov@redhat.com> writes:
On 10/25/2012 05:45 AM, Richard Sandiford wrote:

I see a potential bug here.  We should not reject new equiv values for
base and index here.  After we decided to use equiv it should be changed
everywhere as we remove init insns.
Hmm, I might be misunderstanding, sorry, but if we reject them, won't
process_addr_reg sort the equiv thing out instead?  That's also what
we do for equiv values that aren't just "reg" or "reg+offset".

I.e., I thought the displacement handling was just an optimisation
(although a very useful one :-)).  I'm not sure whether that answers...

So if we have base + index and each of these is changed by pair of
pseudos (I think it is an extremely rare situation) we now have 4
pseudos which we should use.  Another situation is pseudo + unspec and
we change pseudo by reg+offset.  We should deal with this somehow.

I guess, we should generate reloads in equiv_address_substitution for
such rare cases.
...this too or not.

Sorry, Richard. Please, ignore what I wrote about the potential bug. I already forgot what I did. You are right it is fixed in process_addr_reg.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]