On 08/27/09 04:04, Alex Turjan wrote:
With 4.4, IRA happens to reuse the same register for both pseudos, so
sched2 is hand tied and cannot schedule them back again for us.
I can imagine compiling other programs for which preserving the 4.3 allocation
will induce performance degradation due to spilling.
The register allocator tries to minimize the number of spills without taking
into account the ILP implications (i.e., creating extra false dependencies).
Perhaps one possible way to solve the problem would be to analyze why the
register rename phase (which is responsible for spreading the registers) does
not produces 2 registers.
ISTM the right thing is to go with the more compact allocation, then for
the register renamer to expand the set of used registers to avoid the
false dependencies.
jeff