@@ -26,8 +26,10 @@ using namespace mlir::triton;
2626
2727struct FuncOpConversion : public ConvertOpToLLVMPattern <triton::FuncOp> {
2828 FuncOpConversion (LLVMTypeConverter &converter,
29- const TargetInfoBase &targetInfo, PatternBenefit benefit)
30- : ConvertOpToLLVMPattern(converter, benefit), targetInfo(targetInfo) {}
29+ const TargetInfoBase &targetInfo, PatternBenefit benefit,
30+ SymbolTableCollection *symbolTables)
31+ : ConvertOpToLLVMPattern(converter, benefit), targetInfo(targetInfo),
32+ symbolTables (symbolTables) {}
3133
3234 // / Only retain those attributes that are not constructed by
3335 // / `LLVMFuncOp::build`. If `filterArgAttrs` is set, also filter out argument
@@ -148,7 +150,7 @@ struct FuncOpConversion : public ConvertOpToLLVMPattern<triton::FuncOp> {
148150
149151 FailureOr<LLVM::LLVMFuncOp> maybeNewFuncOp =
150152 mlir::convertFuncOpToLLVMFuncOp (amendedFuncOp, rewriter,
151- *getTypeConverter ());
153+ *getTypeConverter (), symbolTables );
152154 if (failed (maybeNewFuncOp)) {
153155 return failure ();
154156 }
@@ -198,12 +200,16 @@ struct FuncOpConversion : public ConvertOpToLLVMPattern<triton::FuncOp> {
198200
199201private:
200202 const TargetInfoBase &targetInfo;
203+ // Store a pointer to the single, pass-wide symbol table
204+ SymbolTableCollection *symbolTables;
201205};
202206
203207} // namespace
204208
205209void mlir::triton::populateFuncOpConversionPattern (
206210 LLVMTypeConverter &typeConverter, RewritePatternSet &patterns,
207- const TargetInfoBase &targetInfo, PatternBenefit benefit) {
208- patterns.add <FuncOpConversion>(typeConverter, targetInfo, benefit);
211+ const TargetInfoBase &targetInfo, PatternBenefit benefit,
212+ SymbolTableCollection *symbolTables) {
213+ patterns.add <FuncOpConversion>(typeConverter, targetInfo, benefit,
214+ symbolTables);
209215}
0 commit comments