@@ -27,8 +27,10 @@ using namespace mlir::triton;
2727// / information.
2828struct FuncOpConversion : public ConvertOpToLLVMPattern <triton::FuncOp> {
2929 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) {}
3234
3335 // / Only retain those attributes that are not constructed by
3436 // / `LLVMFuncOp::build`. If `filterArgAttrs` is set, also filter out argument
@@ -146,7 +148,7 @@ struct FuncOpConversion : public ConvertOpToLLVMPattern<triton::FuncOp> {
146148
147149 FailureOr<LLVM::LLVMFuncOp> maybeNewFuncOp =
148150 mlir::convertFuncOpToLLVMFuncOp (amendedFuncOp, rewriter,
149- *getTypeConverter ());
151+ *getTypeConverter (), symbolTables );
150152 if (failed (maybeNewFuncOp)) {
151153 return failure ();
152154 }
@@ -196,12 +198,16 @@ struct FuncOpConversion : public ConvertOpToLLVMPattern<triton::FuncOp> {
196198
197199private:
198200 const TargetInfoBase &targetInfo;
201+ // Store a pointer to the single, pass-wide symbol table
202+ SymbolTableCollection *symbolTables;
199203};
200204
201205} // namespace
202206
203207void mlir::triton::populateFuncOpConversionPattern (
204208 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);
207213}
0 commit comments