[Statepoints] Let patchable statepoints have a symbolic call target.
authorSanjoy Das <sanjoy@playingwithpointers.com>
Tue, 28 Jul 2015 23:50:30 +0000 (23:50 +0000)
committerSanjoy Das <sanjoy@playingwithpointers.com>
Tue, 28 Jul 2015 23:50:30 +0000 (23:50 +0000)
commit44d65eac432eaa3e926ec404a55e66f823cb0848
tree4b08d78209c1a3f84232eb4a5299d78bc66537ce
parenta27dfaf544862befdbd45c77cd915c0bf4ffeef0
[Statepoints] Let patchable statepoints have a symbolic call target.

Summary:
As added initially, statepoints required their call targets to be a
constant pointer null if ``numPatchBytes`` was non-zero.  This turns out
to be a problem ergonomically, since there is no way to mark patchable
statepoints as calling a (readable) symbolic value.

This change remove the restriction of requiring ``null`` call targets
for patchable statepoints, and changes PlaceSafepoints to maintain the
symbolic call target through its transformation.

Reviewers: reames, swaroop.sridhar

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D11550

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243502 91177308-0d34-0410-b5e6-96231b3b80d8
docs/Statepoints.rst
lib/CodeGen/SelectionDAG/StatepointLowering.cpp
lib/IR/Verifier.cpp
lib/Transforms/Scalar/PlaceSafepoints.cpp
test/Transforms/PlaceSafepoints/patchable-statepoints.ll
test/Verifier/invalid-patchable-statepoint.ll [deleted file]