13
13
#include " mlir/CAPI/Wrap.h"
14
14
#include " mlir/Dialect/LLVMIR/LLVMAttrs.h"
15
15
#include " mlir/Dialect/LLVMIR/LLVMDialect.h"
16
- #include " mlir/Dialect/LLVMIR/LLVMOpsAttrDefs.h.inc"
17
16
#include " mlir/Dialect/LLVMIR/LLVMTypes.h"
18
- #include " mlir/IR/Attributes.h"
19
- #include " mlir/IR/BuiltinAttributes.h"
20
- #include " mlir/Support/LLVM.h"
21
- #include < stdint.h>
17
+ #include " llvm/ADT/SmallVector.h"
18
+ #include " llvm/ADT/SmallVectorExtras.h"
22
19
23
20
using namespace mlir ;
24
21
using namespace mlir ::LLVM;
@@ -124,25 +121,20 @@ MlirAttribute mlirLLVMDIExpressionElemAttrGet(MlirContext ctx,
124
121
unsigned int opcode,
125
122
intptr_t nArguments,
126
123
uint64_t const *arguments) {
127
- auto list = mlir:: ArrayRef<uint64_t >(arguments, nArguments);
124
+ auto list = ArrayRef<uint64_t >(arguments, nArguments);
128
125
return wrap (DIExpressionElemAttr::get (unwrap (ctx), opcode, list));
129
126
}
130
127
131
128
MlirAttribute mlirLLVMDIExpressionAttrGet (MlirContext ctx, intptr_t nOperations,
132
129
MlirAttribute const *operations) {
133
130
SmallVector<Attribute, 2 > attrStorage;
134
131
attrStorage.reserve (nOperations);
135
- mlir::ArrayRef<Attribute> tempList =
136
- unwrapList (nOperations, operations, attrStorage);
137
132
138
- SmallVector<DIExpressionElemAttr, 2 > diExpressionElemStorage;
139
- diExpressionElemStorage.reserve (tempList.size ());
140
-
141
- for (auto attr : tempList) {
142
- diExpressionElemStorage.push_back (attr.cast <DIExpressionElemAttr>());
143
- }
144
-
145
- return wrap (DIExpressionAttr::get (unwrap (ctx), diExpressionElemStorage));
133
+ return wrap (DIExpressionAttr::get (
134
+ unwrap (ctx),
135
+ llvm::map_to_vector (
136
+ unwrapList (nOperations, operations, attrStorage),
137
+ [](Attribute a) { return a.cast <DIExpressionElemAttr>(); })));
146
138
}
147
139
148
140
MlirAttribute mlirLLVMDINullTypeAttrGet (MlirContext ctx) {
@@ -165,7 +157,7 @@ MlirAttribute mlirLLVMDICompositeTypeAttrGet(
165
157
SmallVector<Attribute, 2 > elementsStorage;
166
158
elementsStorage.reserve (nElements);
167
159
168
- mlir:: ArrayRef<Attribute> tempList =
160
+ ArrayRef<Attribute> tempList =
169
161
unwrapList (nElements, elements, elementsStorage);
170
162
171
163
SmallVector<DINodeAttr, 2 > diNodesStorage;
@@ -269,17 +261,11 @@ MlirAttribute mlirLLVMDISubroutineTypeAttrGet(MlirContext ctx,
269
261
MlirAttribute const *types) {
270
262
SmallVector<Attribute, 2 > attrStorage;
271
263
attrStorage.reserve (nTypes);
272
- mlir::ArrayRef<Attribute> tempList = unwrapList (nTypes, types, attrStorage);
273
-
274
- SmallVector<DITypeAttr, 2 > diTypesStorage;
275
- diTypesStorage.reserve (tempList.size ());
276
-
277
- for (auto attr : tempList) {
278
- diTypesStorage.push_back (attr.cast <DITypeAttr>());
279
- }
280
264
281
- return wrap (DISubroutineTypeAttr::get (unwrap (ctx), callingConvention,
282
- diTypesStorage));
265
+ return wrap (DISubroutineTypeAttr::get (
266
+ unwrap (ctx), callingConvention,
267
+ llvm::map_to_vector (unwrapList (nTypes, types, attrStorage),
268
+ [](Attribute a) { return a.cast <DITypeAttr>(); })));
283
269
}
284
270
285
271
MlirAttribute mlirLLVMDISubprogramAttrGet (
0 commit comments