https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123047

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=119723

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119723#c3
"As a general remark, 436.cactusADM spills a lot in the hottest loop, it's
quite sensitive to this and otherwise memory bound."

So this might be a RA issue or a coalescing with out of ssa issue.
So any time you remove forwarder blocks, you will get different coalescing of
ssa names which then produce spilling.

Questions for myself on this code (for myself):
Where do we spill more; is it due to the coalescing difference. Can the
coalescing happen better?
Instead of coalescing in out of ssa, does inserting moves improve things here?
Why did not adding the new forwarder block help aarch64 but did help x86? are
the profiles different or the number of registers being limited for x86 we just
happen to get better coalescing for smaller registers but for aarch64 the
number of registers is enough that the better coalescing from the added
forwarder block didn't make a difference.

So the 3 comparisons that are needed (for me to do and figure out the hot
loop):
without the merge forwarder phi
with merge forwarder phi
with forwarder block added back in some cases

Reply via email to