Patch: Revert find_reloads part of the IRA merge

Bernd Schmidt bernds@codesourcery.com
Wed Jul 14 11:28:00 GMT 2010


I've now reverted the find_reloads change.

Attached is a patch which tries to solve the problem in a different way;
I fixed some other problems that showed up in testing on ARM.  Specifically:
  * Immediately marking used_spill_regs as ever_live can cause a
    situation where the next iteration will use a different set of
    hard regs, and we end up pushing registers that are never used.
    If we delay settings regs_ever_live until nothing else has
    changed, we can avoid that, at the cost of a little bit of
    complexity, and the risk of requiring more iterations.  Not
    sure this is worth it.
  * When evaluating costs of alternatives, reload isn't taking into
    account whether something is going to need secondary reloads.
  * Use live_throughout sets to determine if a reload will force
    a spill.  This seems to work better than the previous heuristic,
    but it can still fail (dead_or_set isn't taken into account
    since it's quite a useless set, the test isn't run on address
    reloads, etc.)

Not committed.  It would be nice to get reports from some target
maintainers about what this does to code quality.


Bernd
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: different-fix.diff
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20100714/a33e62ba/attachment.ksh>


More information about the Gcc-patches mailing list