summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/CallingConvLower.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2008-09-05 16:59:26 +0000
committerEvan Cheng <evan.cheng@apple.com>2008-09-05 16:59:26 +0000
commit6b8fae1777ff5c17f74d7def0f23d215af5b8535 (patch)
tree816b5bd2c88541ca6bb66285bd2ba49f8a6cf4f6 /llvm/lib/CodeGen/SelectionDAG/CallingConvLower.cpp
parent3a52056d4df5fcfe3834a33513645fcc9569bd62 (diff)
downloadbcm5719-llvm-6b8fae1777ff5c17f74d7def0f23d215af5b8535.tar.gz
bcm5719-llvm-6b8fae1777ff5c17f74d7def0f23d215af5b8535.zip
Add a variant of AnalyzeCallOperands that can be used by fast isel.
llvm-svn: 55838
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/CallingConvLower.cpp')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/CallingConvLower.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/CallingConvLower.cpp b/llvm/lib/CodeGen/SelectionDAG/CallingConvLower.cpp
index 9d0537e1018..4788b15d959 100644
--- a/llvm/lib/CodeGen/SelectionDAG/CallingConvLower.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/CallingConvLower.cpp
@@ -105,6 +105,23 @@ void CCState::AnalyzeCallOperands(SDNode *TheCall, CCAssignFn Fn) {
}
}
+/// AnalyzeCallOperands - Same as above except it takes vectors of types
+/// and argument flags.
+void CCState::AnalyzeCallOperands(SmallVectorImpl<MVT> ArgVTs,
+ SmallVectorImpl<ISD::ArgFlagsTy> &Flags,
+ CCAssignFn Fn) {
+ unsigned NumOps = ArgVTs.size();
+ for (unsigned i = 0; i != NumOps; ++i) {
+ MVT ArgVT = ArgVTs[i];
+ ISD::ArgFlagsTy ArgFlags = Flags[i];
+ if (Fn(i, ArgVT, ArgVT, CCValAssign::Full, ArgFlags, *this)) {
+ cerr << "Call operand #" << i << " has unhandled type "
+ << ArgVT.getMVTString() << "\n";
+ abort();
+ }
+ }
+}
+
/// AnalyzeCallResult - Analyze the return values of an ISD::CALL node,
/// incorporating info about the passed values into this state.
void CCState::AnalyzeCallResult(SDNode *TheCall, CCAssignFn Fn) {
OpenPOWER on IntegriCloud