On 06/23/2015 02:29 AM, Ramana Radhakrishnan wrote:

If you try disabling the REG_EQUAL note generation [*], you'll probably find a
performance regression on arm32 (and probably on aarch64 as well?
we only

IMHO disabling the REG_EQUAL note generation is the wrong way to go about this.
Agreed.

Irrespective of combine, as a first step we should fix the predicates
and the call expanders to prevent this sort of replacement in the
backends. Tightening the predicates in the call patterns will achieve
the same for you and then we can investigate the use of GOT_PREL. My
recollection of this is that you need to work out when it's more
beneficial to use GOT_PREL over GOT but it's been a while since I
looked in that area.
Also agreed.  This is primarily a backend issue with the call patterns.

This is similar to the situation on the PA with the 32bit SOM runtime where direct and indirect calls have different calling conventions. Those different calling conventions combined with the early loading of the parameter registers in effect restricts us from being able to transform an indirect call into a direct call (combine) or vice-versa (cse).

The way we handled this was to split the calls into two patterns, one for direct one for indirect and tightening their predicates appropriately.

Jeff

Reply via email to