This is an archive of the discontinued LLVM Phabricator instance.

Mark statepoint instructions as clobbering LR on AArch64
AbandonedPublic

Authored by loicottet on Feb 20 2020, 6:49 AM.

Details

Summary

Intrinsic operations emitted as calls (stackmap, patchpoint and statepoint) are defined globally and are lowered after register allocation. This means that on ARM backends LR has to be marked as implicitly defined by these instructions, otherwise the register allocator may use it as a temporary register, expecting it to keep its value across the intrinsic.
This patch enables the correct emission of garbage collection statepoints on AArch64 (https://reviews.llvm.org/D66012).

Diff Detail

Event Timeline

loicottet created this revision.Feb 20 2020, 6:49 AM
reames requested changes to this revision.Sep 28 2020, 11:23 AM

No test case provided, implementation probably not right approach. Please provide a test case so that correct approach can be found.

This revision now requires changes to proceed.Sep 28 2020, 11:23 AM
loicottet abandoned this revision.Jan 13 2022, 11:59 PM

Abandoning since https://reviews.llvm.org/D111114 fixes the issue this revision was aiming to fix.