This is an archive of the discontinued LLVM Phabricator instance.

MIR Statepoint refactoring: pass GC pointers in VRegs. Part 5/5.
AbandonedPublic

Authored by dantrushin on May 19 2020, 1:29 AM.

Details

Reviewers
reames
skatkov
Summary

Change MIR representation of STATEPOINT instruction from explicit
spill/reload of GC pointer arguments around statepoint to simply
assigning them to virtual registers. Then they can be spilled as
necessary. Relocated pointers are represented as STATEPOINT's Def
operands (tied to corresponding derived pointers from GC args list):

rel1,rel2,... = STATEPOINT ..., derived1<tied-def0>, derived2<tied-def1>, ...

This patch enhances FixupStatepointCallerSaved pass with ability to
spill/reload GC pointers passed in registers, optionally allowing
them to stay in CSRs.

Depends On: D80195

Diff Detail