This is an archive of the discontinued LLVM Phabricator instance.

[Greedy RA] Last Split point for invoke statepoint should be statepoint itself
ClosedPublic

Authored by skatkov on Apr 19 2021, 2:49 AM.

Details

Summary

If statepoint has a def it is a relocated gc pointer and it should be available in landing pad.
So we cannot split interval after statepoint at end of basic block.

The option -use-registers-for-gc-values-in-landing-pad which introduces invoke statepoint
with tied-def operands is off by default and we should switch it on to reproduce a verifier error.

After this fix "Register not marked live out of predecessor" verifier assert is fixed but Greedy RA
breaks tied-def property of statepoint instruction. This will be fixed by follow-up patches.

Diff Detail