This is an archive of the discontinued LLVM Phabricator instance.

[Inline Spiller] Extend the snippet by statepoint uses
ClosedPublic

Authored by skatkov on Nov 15 2022, 10:38 PM.

Details

Summary

Snippet is a tiny live interval which has copy or fill like def
and copy or spill like use at the end (any of them might abcent).

Snippet has only one use/def inside interval and interval is located
in one basic block.

When inline spiller spills some reg around uses it also forces the
spilling of connected snippets those which got by splitting the
same original reg and its def is a full copy of our reg or its
last use is a full copy to our reg.

The definition of snippet is extended to allow not only one use/def
but more. However all other uses are statepoint instructions which will
fold fill into its operand. That way we do not introduce new fills/spills.

Diff Detail

Event Timeline

skatkov created this revision.Nov 15 2022, 10:38 PM
Herald added a project: Restricted Project. · View Herald TranscriptNov 15 2022, 10:38 PM
skatkov requested review of this revision.Nov 15 2022, 10:38 PM
Herald added a project: Restricted Project. · View Herald TranscriptNov 15 2022, 10:38 PM
Herald added a subscriber: wdng. · View Herald Transcript

This is an alternative solution to https://reviews.llvm.org/D137813

Friendly remainder: ping.

I like it more that original fix, but I don't feel qualified to review :-)
Would be great if @qcolombet can have a look..

qcolombet accepted this revision.Dec 21 2022, 3:16 AM

Thanks for your patience @skatkov.

LGTM

This revision is now accepted and ready to land.Dec 21 2022, 3:16 AM
This revision was landed with ongoing or failed builds.Jan 8 2023, 10:46 PM
This revision was automatically updated to reflect the committed changes.