1616#define LLVM_CLANG_CIR_CIRGENFUNCTIONINFO_H
1717
1818#include " clang/AST/CanonicalType.h"
19- #include " clang/CIR/ABIArgInfo.h"
2019#include " clang/CIR/Dialect/IR/CIRTypes.h"
2120
2221#include " llvm/ADT/FoldingSet.h"
2322#include " llvm/Support/TrailingObjects.h"
2423
2524namespace clang ::CIRGen {
2625
27- struct CIRGenFunctionInfoArgInfo {
28- clang::CanQualType type;
29- };
30-
3126// / A class for recording the number of arguments that a function signature
3227// / requires.
3328class RequiredArgs {
@@ -80,10 +75,9 @@ class RequiredArgs {
8075class CIRGenFunctionInfo final
8176 : public llvm::FoldingSetNode,
8277 private llvm::TrailingObjects<
83- CIRGenFunctionInfo, CIRGenFunctionInfoArgInfo ,
78+ CIRGenFunctionInfo, clang::CanQualType ,
8479 clang::FunctionProtoType::ExtParameterInfo> {
8580
86- typedef CIRGenFunctionInfoArgInfo ArgInfo;
8781 typedef clang::FunctionProtoType::ExtParameterInfo ExtParameterInfo;
8882
8983 // / The cir::CallingConv to use for this function (as specified by the user).
@@ -134,9 +128,13 @@ class CIRGenFunctionInfo final
134128
135129 unsigned NumArgs;
136130
137- ArgInfo *getArgsBuffer () { return getTrailingObjects<ArgInfo>(); }
131+ clang::CanQualType *getArgTypes () {
132+ return getTrailingObjects<clang::CanQualType>();
133+ }
138134
139- const ArgInfo *getArgsBuffer () const { return getTrailingObjects<ArgInfo>(); }
135+ const clang::CanQualType *getArgTypes () const {
136+ return getTrailingObjects<clang::CanQualType>();
137+ }
140138
141139 ExtParameterInfo *getExtParameterInfosBuffer () {
142140 return getTrailingObjects<ExtParameterInfo>();
@@ -161,15 +159,15 @@ class CIRGenFunctionInfo final
161159 // Friending class TrailingObjects is apparantly not good enough for MSVC, so
162160 // these have to be public.
163161 friend class TrailingObjects ;
164- size_t numTrailingObjects (OverloadToken<ArgInfo >) const {
162+ size_t numTrailingObjects (OverloadToken<clang::CanQualType >) const {
165163 return NumArgs + 1 ;
166164 }
167165 size_t numTrailingObjects (OverloadToken<ExtParameterInfo>) const {
168166 return (HasExtParameterInfos ? NumArgs : 0 );
169167 }
170168
171- using const_arg_iterator = const ArgInfo *;
172- using arg_iterator = ArgInfo *;
169+ using const_arg_iterator = const clang::CanQualType *;
170+ using arg_iterator = clang::CanQualType *;
173171
174172 static void Profile (llvm::FoldingSetNodeID &ID, bool InstanceMethod,
175173 bool ChainCall, const clang::FunctionType::ExtInfo &info,
@@ -220,27 +218,29 @@ class CIRGenFunctionInfo final
220218 }
221219 getReturnType ().Profile (ID);
222220 for (const auto &I : arguments ())
223- I.type . Profile (ID);
221+ I.Profile (ID);
224222 }
225223
226- llvm::MutableArrayRef<ArgInfo > arguments () {
227- return llvm::MutableArrayRef<ArgInfo >(arg_begin (), NumArgs);
224+ llvm::MutableArrayRef<clang::CanQualType > arguments () {
225+ return llvm::MutableArrayRef<clang::CanQualType >(arg_begin (), NumArgs);
228226 }
229- llvm::ArrayRef<ArgInfo > arguments () const {
230- return llvm::ArrayRef<ArgInfo >(arg_begin (), NumArgs);
227+ llvm::ArrayRef<clang::CanQualType > arguments () const {
228+ return llvm::ArrayRef<clang::CanQualType >(arg_begin (), NumArgs);
231229 }
232230
233- llvm::MutableArrayRef<ArgInfo> requiredArguments () {
234- return llvm::MutableArrayRef<ArgInfo>(arg_begin (), getNumRequiredArgs ());
231+ llvm::MutableArrayRef<clang::CanQualType> requiredArguments () {
232+ return llvm::MutableArrayRef<clang::CanQualType>(arg_begin (),
233+ getNumRequiredArgs ());
235234 }
236- llvm::ArrayRef<ArgInfo> requiredArguments () const {
237- return llvm::ArrayRef<ArgInfo>(arg_begin (), getNumRequiredArgs ());
235+ llvm::ArrayRef<clang::CanQualType> requiredArguments () const {
236+ return llvm::ArrayRef<clang::CanQualType>(arg_begin (),
237+ getNumRequiredArgs ());
238238 }
239239
240- const_arg_iterator arg_begin () const { return getArgsBuffer () + 1 ; }
241- const_arg_iterator arg_end () const { return getArgsBuffer () + 1 + NumArgs; }
242- arg_iterator arg_begin () { return getArgsBuffer () + 1 ; }
243- arg_iterator arg_end () { return getArgsBuffer () + 1 + NumArgs; }
240+ const_arg_iterator arg_begin () const { return getArgTypes () + 1 ; }
241+ const_arg_iterator arg_end () const { return getArgTypes () + 1 + NumArgs; }
242+ arg_iterator arg_begin () { return getArgTypes () + 1 ; }
243+ arg_iterator arg_end () { return getArgTypes () + 1 + NumArgs; }
244244
245245 unsigned arg_size () const { return NumArgs; }
246246
@@ -266,7 +266,7 @@ class CIRGenFunctionInfo final
266266 return EffectiveCallingConvention;
267267 }
268268
269- clang::CanQualType getReturnType () const { return getArgsBuffer ()[0 ]. type ; }
269+ clang::CanQualType getReturnType () const { return getArgTypes ()[0 ]; }
270270
271271 bool isChainCall () const { return ChainCall; }
272272
0 commit comments