@@ -27,8 +27,10 @@ using namespace mlir::triton;
27
27
// / information.
28
28
struct FuncOpConversion : public ConvertOpToLLVMPattern <triton::FuncOp> {
29
29
FuncOpConversion (LLVMTypeConverter &converter,
30
- const TargetInfoBase &targetInfo, PatternBenefit benefit)
31
- : ConvertOpToLLVMPattern(converter, benefit), targetInfo(targetInfo) {}
30
+ const TargetInfoBase &targetInfo, PatternBenefit benefit,
31
+ SymbolTableCollection *symbolTables)
32
+ : ConvertOpToLLVMPattern(converter, benefit), targetInfo(targetInfo),
33
+ symbolTables (symbolTables) {}
32
34
33
35
// / Only retain those attributes that are not constructed by
34
36
// / `LLVMFuncOp::build`. If `filterArgAttrs` is set, also filter out argument
@@ -146,7 +148,7 @@ struct FuncOpConversion : public ConvertOpToLLVMPattern<triton::FuncOp> {
146
148
147
149
FailureOr<LLVM::LLVMFuncOp> maybeNewFuncOp =
148
150
mlir::convertFuncOpToLLVMFuncOp (amendedFuncOp, rewriter,
149
- *getTypeConverter ());
151
+ *getTypeConverter (), symbolTables );
150
152
if (failed (maybeNewFuncOp)) {
151
153
return failure ();
152
154
}
@@ -196,12 +198,16 @@ struct FuncOpConversion : public ConvertOpToLLVMPattern<triton::FuncOp> {
196
198
197
199
private:
198
200
const TargetInfoBase &targetInfo;
201
+ // Store a pointer to the single, pass-wide symbol table
202
+ SymbolTableCollection *symbolTables;
199
203
};
200
204
201
205
} // namespace
202
206
203
207
void mlir::triton::populateFuncOpConversionPattern (
204
208
LLVMTypeConverter &typeConverter, RewritePatternSet &patterns,
205
- const TargetInfoBase &targetInfo, PatternBenefit benefit) {
206
- patterns.add <FuncOpConversion>(typeConverter, targetInfo, benefit);
209
+ const TargetInfoBase &targetInfo, PatternBenefit benefit,
210
+ SymbolTableCollection *symbolTables) {
211
+ patterns.add <FuncOpConversion>(typeConverter, targetInfo, benefit,
212
+ symbolTables);
207
213
}
0 commit comments