When spilling gc operands, we have to mark them as load and store. They were originally defs and we need to preserve that.
This is semantically important as a relocating collector *will* update them sometimes.
Paths
| Differential D84964
[WIP] Demo a functional problem from D81647 with a fix and test case AbandonedPublic Authored by reames on Jul 30 2020, 11:29 AM.
Details
Summary When spilling gc operands, we have to mark them as load and store. They were originally defs and we need to preserve that. This is semantically important as a relocating collector *will* update them sometimes.
Diff Detail
Revision Contents
Diff 282001 llvm/lib/CodeGen/FixupStatepointCallerSaved.cpp
llvm/test/CodeGen/X86/statepoint-vreg-fixup-csr.ll
|
Defs are never seen here by construction of OpsToSpill