diff options
author | Sanjoy Das <sanjoy@playingwithpointers.com> | 2016-03-22 00:59:13 +0000 |
---|---|---|
committer | Sanjoy Das <sanjoy@playingwithpointers.com> | 2016-03-22 00:59:13 +0000 |
commit | 38bfc22161d94b4b6fb6fed5bf498afe936ab874 (patch) | |
tree | 079f55a8d951253bb5359cffe7e8fd9685004bda /llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h | |
parent | ea4ae806bb12e89398558f4d033f06bf91463923 (diff) | |
download | bcm5719-llvm-38bfc22161d94b4b6fb6fed5bf498afe936ab874.tar.gz bcm5719-llvm-38bfc22161d94b4b6fb6fed5bf498afe936ab874.zip |
Add "first class" lowering for deopt operand bundles
Summary:
After this change, deopt operand bundles can be lowered directly by
SelectionDAG into STATEPOINT instructions (which are then lowered to a
call or sequence of nop, with an associated __llvm_stackmaps entry0.
This obviates the need to round-trip deoptimization state through
gc.statepoint via RewriteStatepointsForGC.
Reviewers: reames, atrick, majnemer, JosephTremoulet, pgavlin
Subscribers: sanjoy, mcrosier, majnemer, llvm-commits
Differential Revision: http://reviews.llvm.org/D18257
llvm-svn: 264015
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h index fc12be0719b..5e27a1c7147 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h @@ -772,12 +772,16 @@ public: }; /// Lower \p SLI into a STATEPOINT instruction. - SDValue LowerAsStatepoint(StatepointLoweringInfo &SLI); + SDValue LowerAsSTATEPOINT(StatepointLoweringInfo &SLI); // This function is responsible for the whole statepoint lowering process. // It uniformly handles invoke and call statepoints. void LowerStatepoint(ImmutableStatepoint Statepoint, const BasicBlock *EHPadBB = nullptr); + + void LowerCallSiteWithDeoptBundle(ImmutableCallSite CS, SDValue Callee, + const BasicBlock *EHPadBB); + private: // Terminator instructions. void visitRet(const ReturnInst &I); |