aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Target/TargetLowering.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-01-09 00:00:31 +0000
committerChris Lattner <sabre@nondot.org>2005-01-09 00:00:31 +0000
commitf19ae7df65fd50ff459347c240a738895cc71867 (patch)
tree874772fc5b30e7141ac769bea3d5bf8d7628fb37 /include/llvm/Target/TargetLowering.h
parentb56013dda5371aa32a634bc59878f754b537f874 (diff)
downloadexternal_llvm-f19ae7df65fd50ff459347c240a738895cc71867.zip
external_llvm-f19ae7df65fd50ff459347c240a738895cc71867.tar.gz
external_llvm-f19ae7df65fd50ff459347c240a738895cc71867.tar.bz2
Add interfaces to lower varargs and return/frame address intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19406 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Target/TargetLowering.h')
-rw-r--r--include/llvm/Target/TargetLowering.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/include/llvm/Target/TargetLowering.h b/include/llvm/Target/TargetLowering.h
index ee1ac36..eb7814e 100644
--- a/include/llvm/Target/TargetLowering.h
+++ b/include/llvm/Target/TargetLowering.h
@@ -172,6 +172,37 @@ public:
virtual std::pair<SDOperand, SDOperand>
LowerCallTo(SDOperand Chain, const Type *RetTy, SDOperand Callee,
ArgListTy &Args, SelectionDAG &DAG) = 0;
+
+
+ /// LowerVAStart - This lowers the llvm.va_start intrinsic. If not
+ /// implemented, this method prints a message and aborts.
+ virtual std::pair<SDOperand, SDOperand>
+ LowerVAStart(SDOperand Chain, SelectionDAG &DAG);
+
+ /// LowerVAEnd - This lowers llvm.va_end and returns the resultant chain. If
+ /// not implemented, this defaults to a noop.
+ virtual SDOperand LowerVAEnd(SDOperand Chain, SDOperand L, SelectionDAG &DAG);
+
+ /// LowerVACopy - This lowers llvm.va_copy and returns the resultant
+ /// value/chain pair. If not implemented, this defaults to returning the
+ /// input operand.
+ virtual std::pair<SDOperand,SDOperand>
+ LowerVACopy(SDOperand Chain, SDOperand L, SelectionDAG &DAG);
+
+ /// LowerVAArgNext - This lowers the vaarg and vanext instructions (depending
+ /// on whether the first argument is true). If not implemented, this prints a
+ /// message and aborts.
+ virtual std::pair<SDOperand,SDOperand>
+ LowerVAArgNext(bool isVANext, SDOperand Chain, SDOperand VAList,
+ const Type *ArgTy, SelectionDAG &DAG);
+
+ /// LowerFrameReturnAddress - This hook lowers a call to llvm.returnaddress or
+ /// llvm.frameaddress (depending on the value of the first argument). The
+ /// return values are the result pointer and the resultant token chain. If
+ /// not implemented, both of these intrinsics will return null.
+ virtual std::pair<SDOperand, SDOperand>
+ LowerFrameReturnAddress(bool isFrameAddr, SDOperand Chain, unsigned Depth,
+ SelectionDAG &DAG);
};
} // end llvm namespace