aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/CodeGen/SelectionDAG.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/CodeGen/SelectionDAG.h')
-rw-r--r--include/llvm/CodeGen/SelectionDAG.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/SelectionDAG.h b/include/llvm/CodeGen/SelectionDAG.h
index 6a66d03..b802deb 100644
--- a/include/llvm/CodeGen/SelectionDAG.h
+++ b/include/llvm/CodeGen/SelectionDAG.h
@@ -275,6 +275,20 @@ public:
return getNode(ISD::CALLSEQ_START, VTs, 2, Ops, 2);
}
+ /// getCALLSEQ_END - Return a new CALLSEQ_END node, which always must have a
+ /// flag result (to ensure it's not CSE'd).
+ SDOperand getCALLSEQ_END(SDOperand Chain, SDOperand Op1, SDOperand Op2,
+ SDOperand InFlag) {
+ SDVTList NodeTys = getVTList(MVT::Other, MVT::Flag);
+ SmallVector<SDOperand, 4> Ops;
+ Ops.push_back(Chain);
+ Ops.push_back(Op1);
+ Ops.push_back(Op2);
+ Ops.push_back(InFlag);
+ return getNode(ISD::CALLSEQ_END, NodeTys, &Ops[0],
+ Ops.size() - (InFlag.Val == 0 ? 1 : 0));
+ }
+
/// getNode - Gets or creates the specified node.
///
SDOperand getNode(unsigned Opcode, MVT::ValueType VT);