[Bug rtl-optimization/21182] [5/6/7 Regression] gcc can use registers but uses stack instead
vmakarov at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Feb 13 18:36:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=21182
--- Comment #25 from Vladimir Makarov <vmakarov at gcc dot gnu.org> ---
(In reply to Jeffrey A. Law from comment #24)
> Do we happen to have easy access to the pressure at the various program
> points? Dumping that with the points might prove fruitful in both the
> search for potential over-aggressive optimizations and to guide Bernd's work
> to schedule statements better at the gimple/rtl boundary.
Currently, we have only maximal pressure information in a region (including
function). I think I can add printing register pressure in some readable way
at every program point for GCC8.
The problem with register pressure is that this info is approximate when we
have intersected and/or included register classes (e.g. one register class can
be profitable for a pseudo but smaller class could be the best). IRA coloring
handles this with register classes trees. Oppositely, the register pressure is
calculated now only for subset of classes (pressure classes) which do not
intersect.
As for making scheduling on gimple/rtl boundary, some obvious rearrangements
probably could be done there and may be in a simpler way but still I believe we
will need scheduling at the current places where we have the most accurate
information on used resources.
There is always contradiction between RA and insn scheduler and therefore they
always work nearby.
More information about the Gcc-bugs
mailing list