16
16
#define LLVM_CLANG_CIR_CIRGENFUNCTIONINFO_H
17
17
18
18
#include " clang/AST/CanonicalType.h"
19
- #include " clang/CIR/ABIArgInfo.h"
20
19
#include " clang/CIR/Dialect/IR/CIRTypes.h"
21
20
22
21
#include " llvm/ADT/FoldingSet.h"
23
22
#include " llvm/Support/TrailingObjects.h"
24
23
25
24
namespace clang ::CIRGen {
26
25
27
- struct CIRGenFunctionInfoArgInfo {
28
- clang::CanQualType type;
29
- };
30
-
31
26
// / A class for recording the number of arguments that a function signature
32
27
// / requires.
33
28
class RequiredArgs {
@@ -80,10 +75,9 @@ class RequiredArgs {
80
75
class CIRGenFunctionInfo final
81
76
: public llvm::FoldingSetNode,
82
77
private llvm::TrailingObjects<
83
- CIRGenFunctionInfo, CIRGenFunctionInfoArgInfo ,
78
+ CIRGenFunctionInfo, clang::CanQualType ,
84
79
clang::FunctionProtoType::ExtParameterInfo> {
85
80
86
- typedef CIRGenFunctionInfoArgInfo ArgInfo;
87
81
typedef clang::FunctionProtoType::ExtParameterInfo ExtParameterInfo;
88
82
89
83
// / The cir::CallingConv to use for this function (as specified by the user).
@@ -134,9 +128,13 @@ class CIRGenFunctionInfo final
134
128
135
129
unsigned NumArgs;
136
130
137
- ArgInfo *getArgsBuffer () { return getTrailingObjects<ArgInfo>(); }
131
+ clang::CanQualType *getArgTypes () {
132
+ return getTrailingObjects<clang::CanQualType>();
133
+ }
138
134
139
- const ArgInfo *getArgsBuffer () const { return getTrailingObjects<ArgInfo>(); }
135
+ const clang::CanQualType *getArgTypes () const {
136
+ return getTrailingObjects<clang::CanQualType>();
137
+ }
140
138
141
139
ExtParameterInfo *getExtParameterInfosBuffer () {
142
140
return getTrailingObjects<ExtParameterInfo>();
@@ -161,15 +159,15 @@ class CIRGenFunctionInfo final
161
159
// Friending class TrailingObjects is apparantly not good enough for MSVC, so
162
160
// these have to be public.
163
161
friend class TrailingObjects ;
164
- size_t numTrailingObjects (OverloadToken<ArgInfo >) const {
162
+ size_t numTrailingObjects (OverloadToken<clang::CanQualType >) const {
165
163
return NumArgs + 1 ;
166
164
}
167
165
size_t numTrailingObjects (OverloadToken<ExtParameterInfo>) const {
168
166
return (HasExtParameterInfos ? NumArgs : 0 );
169
167
}
170
168
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 *;
173
171
174
172
static void Profile (llvm::FoldingSetNodeID &ID, bool InstanceMethod,
175
173
bool ChainCall, const clang::FunctionType::ExtInfo &info,
@@ -220,27 +218,29 @@ class CIRGenFunctionInfo final
220
218
}
221
219
getReturnType ().Profile (ID);
222
220
for (const auto &I : arguments ())
223
- I.type . Profile (ID);
221
+ I.Profile (ID);
224
222
}
225
223
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);
228
226
}
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);
231
229
}
232
230
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 ());
235
234
}
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 ());
238
238
}
239
239
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; }
244
244
245
245
unsigned arg_size () const { return NumArgs; }
246
246
@@ -266,7 +266,7 @@ class CIRGenFunctionInfo final
266
266
return EffectiveCallingConvention;
267
267
}
268
268
269
- clang::CanQualType getReturnType () const { return getArgsBuffer ()[0 ]. type ; }
269
+ clang::CanQualType getReturnType () const { return getArgTypes ()[0 ]; }
270
270
271
271
bool isChainCall () const { return ChainCall; }
272
272
0 commit comments