diff options
author | Evan Cheng <evan.cheng@apple.com> | 2008-09-05 16:59:26 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2008-09-05 16:59:26 +0000 |
commit | 6b8fae1777ff5c17f74d7def0f23d215af5b8535 (patch) | |
tree | 816b5bd2c88541ca6bb66285bd2ba49f8a6cf4f6 /llvm/lib/CodeGen/SelectionDAG/CallingConvLower.cpp | |
parent | 3a52056d4df5fcfe3834a33513645fcc9569bd62 (diff) | |
download | bcm5719-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.cpp | 17 |
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) { |