@@ -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
@@ -150,7 +152,7 @@ struct FuncOpConversion : public ConvertOpToLLVMPattern<triton::FuncOp> {
150152
151153 FailureOr<LLVM::LLVMFuncOp> maybeNewFuncOp =
152154 mlir::convertFuncOpToLLVMFuncOp (amendedFuncOp, rewriter,
153- *getTypeConverter ());
155+ *getTypeConverter (), symbolTables );
154156 if (failed (maybeNewFuncOp)) {
155157 return failure ();
156158 }
@@ -214,12 +216,16 @@ struct FuncOpConversion : public ConvertOpToLLVMPattern<triton::FuncOp> {
214216
215217private:
216218 const TargetInfoBase &targetInfo;
219+ // Store a pointer to the single, pass-wide symbol table
220+ SymbolTableCollection *symbolTables;
217221};
218222
219223} // namespace
220224
221225void mlir::triton::populateFuncOpConversionPattern (
222226 LLVMTypeConverter &typeConverter, RewritePatternSet &patterns,
223- const TargetInfoBase &targetInfo, PatternBenefit benefit) {
224- patterns.add <FuncOpConversion>(typeConverter, targetInfo, benefit);
227+ const TargetInfoBase &targetInfo, PatternBenefit benefit,
228+ SymbolTableCollection *symbolTables) {
229+ patterns.add <FuncOpConversion>(typeConverter, targetInfo, benefit,
230+ symbolTables);
225231}
0 commit comments