llvm.org GIT mirror llvm / c89d2fe
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 Evan Cheng 12 years ago
2 changed file(s) with 23 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
144144 /// about the passed values into this state.
145145 void AnalyzeCallOperands(SDNode *TheCall, CCAssignFn Fn);
146146
147 /// AnalyzeCallOperands - Same as above except it takes vectors of types
148 /// and argument flags.
149 void AnalyzeCallOperands(SmallVectorImpl ArgVTs,
150 SmallVectorImpl &Flags,
151 CCAssignFn Fn);
152
147153 /// AnalyzeCallResult - Analyze the return values of an ISD::CALL node,
148154 /// incorporating info about the passed values into this state.
149155 void AnalyzeCallResult(SDNode *TheCall, CCAssignFn Fn);
104104 }
105105 }
106106
107 /// AnalyzeCallOperands - Same as above except it takes vectors of types
108 /// and argument flags.
109 void CCState::AnalyzeCallOperands(SmallVectorImpl ArgVTs,
110 SmallVectorImpl &Flags,
111 CCAssignFn Fn) {
112 unsigned NumOps = ArgVTs.size();
113 for (unsigned i = 0; i != NumOps; ++i) {
114 MVT ArgVT = ArgVTs[i];
115 ISD::ArgFlagsTy ArgFlags = Flags[i];
116 if (Fn(i, ArgVT, ArgVT, CCValAssign::Full, ArgFlags, *this)) {
117 cerr << "Call operand #" << i << " has unhandled type "
118 << ArgVT.getMVTString() << "\n";
119 abort();
120 }
121 }
122 }
123
107124 /// AnalyzeCallResult - Analyze the return values of an ISD::CALL node,
108125 /// incorporating info about the passed values into this state.
109126 void CCState::AnalyzeCallResult(SDNode *TheCall, CCAssignFn Fn) {