mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-18 11:24:01 +00:00
Add a variant of AnalyzeCallOperands that can be used by fast isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55838 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -145,6 +145,12 @@ public:
|
|||||||
/// about the passed values into this state.
|
/// about the passed values into this state.
|
||||||
void AnalyzeCallOperands(SDNode *TheCall, CCAssignFn Fn);
|
void AnalyzeCallOperands(SDNode *TheCall, CCAssignFn Fn);
|
||||||
|
|
||||||
|
/// AnalyzeCallOperands - Same as above except it takes vectors of types
|
||||||
|
/// and argument flags.
|
||||||
|
void AnalyzeCallOperands(SmallVectorImpl<MVT> ArgVTs,
|
||||||
|
SmallVectorImpl<ISD::ArgFlagsTy> &Flags,
|
||||||
|
CCAssignFn Fn);
|
||||||
|
|
||||||
/// AnalyzeCallResult - Analyze the return values of an ISD::CALL node,
|
/// AnalyzeCallResult - Analyze the return values of an ISD::CALL node,
|
||||||
/// incorporating info about the passed values into this state.
|
/// incorporating info about the passed values into this state.
|
||||||
void AnalyzeCallResult(SDNode *TheCall, CCAssignFn Fn);
|
void AnalyzeCallResult(SDNode *TheCall, CCAssignFn Fn);
|
||||||
|
@ -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,
|
/// AnalyzeCallResult - Analyze the return values of an ISD::CALL node,
|
||||||
/// incorporating info about the passed values into this state.
|
/// incorporating info about the passed values into this state.
|
||||||
void CCState::AnalyzeCallResult(SDNode *TheCall, CCAssignFn Fn) {
|
void CCState::AnalyzeCallResult(SDNode *TheCall, CCAssignFn Fn) {
|
||||||
|
Reference in New Issue
Block a user