[PATCH] D15759: [Statepoints] Use Indirect operands for spill slots
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 23 14:12:21 PST 2015
reames created this revision.
reames added reviewers: atrick, sanjoy, igor-laevsky, qcolombet.
reames added a subscriber: llvm-commits.
Herald added a subscriber: sanjoy.
Teach the statepoint lowering code to emit Indirect stackmap entries for spill inserted by StatepointLowering (i.e. SelectionDAG), but Direct stackmap entries for in-IR allocas which represent manual stack slots. This is what the docs call for (http://llvm.org/docs/StackMaps.html#stack-map-format), but we've been emitting both as Direct. This was pointed out recently on the mailing list as a bug. It also blocks http://reviews.llvm.org/D15632 which extends the lowering to handle vector-of-pointers since only Indirect references can encode a variable sized slot.
To implement this, I introduced a new flag on the StackObject class used to maintian information about stack slots. I original considered (and prototyped in http://reviews.llvm.org/D15632), the idea of using the existing isSpillSlot flag, but end up deciding that was a bit too risky and that the cost of adding a new flag was low. Having the new flag will also allow us - in the future - to emit better comments in verbose assembly which indicate where a particular stack spill around a call comes from. (deopt, gc, regalloc).
http://reviews.llvm.org/D15759
Files:
include/llvm/CodeGen/MachineFrameInfo.h
lib/CodeGen/SelectionDAG/StatepointLowering.cpp
lib/CodeGen/TargetLoweringBase.cpp
test/CodeGen/X86/statepoint-stackmap-format.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D15759.43557.patch
Type: text/x-patch
Size: 9574 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151223/9cb3dc0c/attachment.bin>
More information about the llvm-commits
mailing list