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: [RFB] IRA and regclass both ignore '!' attribute


Andrew Pinski wrote:
I noticed while looking into a register allocation issue in 4.1.1,
that regclass was ignoring '!' attribute so it would sometimes give
the wrong result so we get performance issue (selecting GPR instead of
FPR).  So I saw that IRA also ignore it too which seems wrong and
seems like the code was copied from regclass.  preprocess_constraints
and find_reloads both take '!' into account.

Can someone benchmark this on x86 and PPC? I can only really benchmark
with a 4.3 or 4.1.1 based compiler with a subset of SPEC.  The 4.1.1
based compiler gets a nice but small 0.6% performance increase and a
small code decrease.

Thanks,
Andrew Pinski

ChangeLog:
* regclass.c (record_reg_classes): Take into account '!'.
(record_reg_classes): Likewise.
Andrew, thanks for looking into RA problems. I think your patch should be thoroughly tested not only for performance. Such changes might break some ports. I tried this change when I worked on YARA project and that time the result was negative. Therefore it is not used in IRA. I think that there were some reasons for ignoring this in regclass too. But may be I am wrong.

The problem you mentioned (selecting GPR instead of FPR) could be solved by putting one or more ? in the alternative to get the same effect you are trying to achieve with this patch. Imho, the patch you are proposing probably decrease some gcc functionality. Probably ! was supposed to be used only for reload.

But if you gets an approval you should change the documentation (for ! constraint) too.



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