Skip to content

Commit 7c4e8c6

Browse files
nicolasvasilachefabianmcg
authored andcommitted
[mlir] Disentangle dialect and extension registrations.
This revision avoids the registration of dialect extensions in Pass::getDependentDialects. Such registration of extensions can be dangerous because `DialectRegistry::isSubsetOf` is always guaranteed to return false for extensions (i.e. there is no mechanism to track whether a lambda is already in the list of already registered extensions). When the context is already in a multi-threaded mode, this is guaranteed to assert. Arguably a more structured registration mechanism for extensions with a unique ExtensionID could be envisioned in the future. In the process of cleaning this up, multiple usage inconsistencies surfaced around the registration of translation extensions that this revision also cleans up. Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D157703
1 parent ff08c8e commit 7c4e8c6

File tree

24 files changed

+100
-87
lines changed

24 files changed

+100
-87
lines changed

mlir/examples/transform/Ch2/transform-opt/transform-opt.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "mlir/IR/DialectRegistry.h"
1616
#include "mlir/IR/MLIRContext.h"
1717
#include "mlir/InitAllDialects.h"
18+
#include "mlir/InitAllExtensions.h"
1819
#include "mlir/Tools/mlir-opt/MlirOptMain.h"
1920
#include "mlir/Transforms/Passes.h"
2021
#include <cstdlib>
@@ -35,6 +36,7 @@ int main(int argc, char **argv) {
3536
// Register all "core" dialects and our transform dialect extension.
3637
mlir::DialectRegistry registry;
3738
mlir::registerAllDialects(registry);
39+
mlir::registerAllExtensions(registry);
3840
registerMyExtension(registry);
3941

4042
// Register a handful of cleanup passes that we can run to make the output IR

mlir/examples/transform/Ch3/transform-opt/transform-opt.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "mlir/IR/DialectRegistry.h"
1616
#include "mlir/IR/MLIRContext.h"
1717
#include "mlir/InitAllDialects.h"
18+
#include "mlir/InitAllExtensions.h"
1819
#include "mlir/Tools/mlir-opt/MlirOptMain.h"
1920
#include "mlir/Transforms/Passes.h"
2021
#include <cstdlib>
@@ -35,6 +36,7 @@ int main(int argc, char **argv) {
3536
// Register all "core" dialects and our transform dialect extension.
3637
mlir::DialectRegistry registry;
3738
mlir::registerAllDialects(registry);
39+
mlir::registerAllExtensions(registry);
3840
registerMyExtension(registry);
3941

4042
// Register a handful of cleanup passes that we can run to make the output IR

mlir/include/mlir/Dialect/GPU/Transforms/Passes.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,6 @@ class SerializeToBlobPass : public OperationPass<gpu::GPUModuleOp> {
8787
void runOnOperation() final;
8888

8989
protected:
90-
void getDependentDialects(DialectRegistry &registry) const override;
91-
9290
/// Hook allowing the application of optimizations before codegen
9391
/// By default, does nothing
9492
virtual LogicalResult optimizeLlvm(llvm::Module &llvmModule,

mlir/include/mlir/InitAllDialects.h

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#include "mlir/Dialect/AMX/AMXDialect.h"
1919
#include "mlir/Dialect/Affine/IR/AffineOps.h"
2020
#include "mlir/Dialect/Affine/IR/ValueBoundsOpInterfaceImpl.h"
21-
#include "mlir/Dialect/Affine/TransformOps/AffineTransformOps.h"
2221
#include "mlir/Dialect/Arith/IR/Arith.h"
2322
#include "mlir/Dialect/Arith/IR/ValueBoundsOpInterfaceImpl.h"
2423
#include "mlir/Dialect/Arith/Transforms/BufferizableOpInterfaceImpl.h"
@@ -27,50 +26,42 @@
2726
#include "mlir/Dialect/ArmSVE/ArmSVEDialect.h"
2827
#include "mlir/Dialect/Async/IR/Async.h"
2928
#include "mlir/Dialect/Bufferization/IR/Bufferization.h"
30-
#include "mlir/Dialect/Bufferization/TransformOps/BufferizationTransformOps.h"
3129
#include "mlir/Dialect/Bufferization/Transforms/FuncBufferizableOpInterfaceImpl.h"
3230
#include "mlir/Dialect/Complex/IR/Complex.h"
3331
#include "mlir/Dialect/ControlFlow/IR/ControlFlow.h"
3432
#include "mlir/Dialect/DLTI/DLTI.h"
3533
#include "mlir/Dialect/EmitC/IR/EmitC.h"
3634
#include "mlir/Dialect/Func/IR/FuncOps.h"
37-
#include "mlir/Dialect/Func/TransformOps/FuncTransformOps.h"
3835
#include "mlir/Dialect/GPU/IR/GPUDialect.h"
39-
#include "mlir/Dialect/GPU/TransformOps/GPUTransformOps.h"
4036
#include "mlir/Dialect/IRDL/IR/IRDL.h"
4137
#include "mlir/Dialect/Index/IR/IndexDialect.h"
4238
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
4339
#include "mlir/Dialect/LLVMIR/NVVMDialect.h"
4440
#include "mlir/Dialect/LLVMIR/ROCDLDialect.h"
4541
#include "mlir/Dialect/Linalg/IR/Linalg.h"
4642
#include "mlir/Dialect/Linalg/IR/ValueBoundsOpInterfaceImpl.h"
47-
#include "mlir/Dialect/Linalg/TransformOps/DialectExtension.h"
4843
#include "mlir/Dialect/Linalg/Transforms/BufferizableOpInterfaceImpl.h"
4944
#include "mlir/Dialect/Linalg/Transforms/TilingInterfaceImpl.h"
5045
#include "mlir/Dialect/MLProgram/IR/MLProgram.h"
5146
#include "mlir/Dialect/Math/IR/Math.h"
5247
#include "mlir/Dialect/MemRef/IR/MemRef.h"
5348
#include "mlir/Dialect/MemRef/IR/MemRefMemorySlot.h"
5449
#include "mlir/Dialect/MemRef/IR/ValueBoundsOpInterfaceImpl.h"
55-
#include "mlir/Dialect/MemRef/TransformOps/MemRefTransformOps.h"
5650
#include "mlir/Dialect/MemRef/Transforms/BufferizableOpInterfaceImpl.h"
5751
#include "mlir/Dialect/MemRef/Transforms/RuntimeOpVerification.h"
5852
#include "mlir/Dialect/NVGPU/IR/NVGPUDialect.h"
59-
#include "mlir/Dialect/NVGPU/TransformOps/NVGPUTransformOps.h"
6053
#include "mlir/Dialect/OpenACC/OpenACC.h"
6154
#include "mlir/Dialect/OpenMP/OpenMPDialect.h"
6255
#include "mlir/Dialect/PDL/IR/PDL.h"
6356
#include "mlir/Dialect/PDLInterp/IR/PDLInterp.h"
6457
#include "mlir/Dialect/Quant/QuantOps.h"
6558
#include "mlir/Dialect/SCF/IR/SCF.h"
6659
#include "mlir/Dialect/SCF/IR/ValueBoundsOpInterfaceImpl.h"
67-
#include "mlir/Dialect/SCF/TransformOps/SCFTransformOps.h"
6860
#include "mlir/Dialect/SCF/Transforms/BufferizableOpInterfaceImpl.h"
6961
#include "mlir/Dialect/SPIRV/IR/SPIRVDialect.h"
7062
#include "mlir/Dialect/Shape/IR/Shape.h"
7163
#include "mlir/Dialect/Shape/Transforms/BufferizableOpInterfaceImpl.h"
7264
#include "mlir/Dialect/SparseTensor/IR/SparseTensor.h"
73-
#include "mlir/Dialect/SparseTensor/TransformOps/SparseTensorTransformOps.h"
7465
#include "mlir/Dialect/SparseTensor/Transforms/BufferizableOpInterfaceImpl.h"
7566
#include "mlir/Dialect/Tensor/IR/Tensor.h"
7667
#include "mlir/Dialect/Tensor/IR/TensorInferTypeOpInterfaceImpl.h"
@@ -83,11 +74,12 @@
8374
#include "mlir/Dialect/Transform/PDLExtension/PDLExtension.h"
8475
#include "mlir/Dialect/UB/IR/UBOps.h"
8576
#include "mlir/Dialect/Vector/IR/VectorOps.h"
86-
#include "mlir/Dialect/Vector/TransformOps/VectorTransformOps.h"
8777
#include "mlir/Dialect/Vector/Transforms/BufferizableOpInterfaceImpl.h"
8878
#include "mlir/Dialect/X86Vector/X86VectorDialect.h"
8979
#include "mlir/IR/Dialect.h"
9080
#include "mlir/Interfaces/CastInterfaces.h"
81+
#include "mlir/Target/LLVM/NVVM/Target.h"
82+
#include "mlir/Target/LLVM/ROCDL/Target.h"
9183

9284
namespace mlir {
9385

@@ -136,20 +128,6 @@ inline void registerAllDialects(DialectRegistry &registry) {
136128
x86vector::X86VectorDialect>();
137129
// clang-format on
138130

139-
// Register all dialect extensions.
140-
affine::registerTransformDialectExtension(registry);
141-
bufferization::registerTransformDialectExtension(registry);
142-
func::registerTransformDialectExtension(registry);
143-
gpu::registerTransformDialectExtension(registry);
144-
linalg::registerTransformDialectExtension(registry);
145-
memref::registerTransformDialectExtension(registry);
146-
nvgpu::registerTransformDialectExtension(registry);
147-
scf::registerTransformDialectExtension(registry);
148-
sparse_tensor::registerTransformDialectExtension(registry);
149-
tensor::registerTransformDialectExtension(registry);
150-
transform::registerPDLExtension(registry);
151-
vector::registerTransformDialectExtension(registry);
152-
153131
// Register all external models.
154132
affine::registerValueBoundsOpInterfaceExternalModels(registry);
155133
arith::registerBufferizableOpInterfaceExternalModels(registry);
@@ -174,6 +152,8 @@ inline void registerAllDialects(DialectRegistry &registry) {
174152
tensor::registerTilingInterfaceExternalModels(registry);
175153
tensor::registerValueBoundsOpInterfaceExternalModels(registry);
176154
vector::registerBufferizableOpInterfaceExternalModels(registry);
155+
NVVM::registerNVVMTargetInterfaceExternalModels(registry);
156+
ROCDL::registerROCDLTargetInterfaceExternalModels(registry);
177157
}
178158

179159
/// Append all the MLIR dialects to the registry contained in the given context.

mlir/include/mlir/InitAllExtensions.h

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,22 @@
2323
#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
2424
#include "mlir/Conversion/NVVMToLLVM/NVVMToLLVM.h"
2525
#include "mlir/Conversion/UBToLLVM/UBToLLVM.h"
26+
#include "mlir/Dialect/Affine/TransformOps/AffineTransformOps.h"
27+
#include "mlir/Dialect/Bufferization/TransformOps/BufferizationTransformOps.h"
2628
#include "mlir/Dialect/Func/Extensions/AllExtensions.h"
27-
#include "mlir/Target/LLVM/NVVM/Target.h"
28-
#include "mlir/Target/LLVM/ROCDL/Target.h"
29+
#include "mlir/Dialect/Func/TransformOps/FuncTransformOps.h"
30+
#include "mlir/Dialect/GPU/TransformOps/GPUTransformOps.h"
31+
#include "mlir/Dialect/Linalg/TransformOps/DialectExtension.h"
32+
#include "mlir/Dialect/MemRef/TransformOps/MemRefTransformOps.h"
33+
#include "mlir/Dialect/NVGPU/TransformOps/NVGPUTransformOps.h"
34+
#include "mlir/Dialect/SCF/TransformOps/SCFTransformOps.h"
35+
#include "mlir/Dialect/SparseTensor/TransformOps/SparseTensorTransformOps.h"
36+
#include "mlir/Dialect/Tensor/TransformOps/TensorTransformOps.h"
37+
#include "mlir/Dialect/Vector/TransformOps/VectorTransformOps.h"
38+
#include "mlir/Target/LLVMIR/Dialect/Builtin/BuiltinToLLVMIRTranslation.h"
39+
#include "mlir/Target/LLVMIR/Dialect/GPU/GPUToLLVMIRTranslation.h"
40+
#include "mlir/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.h"
41+
#include "mlir/Target/LLVMIR/Dialect/ROCDL/ROCDLToLLVMIRTranslation.h"
2942

3043
#include <cstdlib>
3144

@@ -37,6 +50,7 @@ namespace mlir {
3750
/// individually register the specific extensions that are useful for the
3851
/// pipelines and transformations you are using.
3952
inline void registerAllExtensions(DialectRegistry &registry) {
53+
// Register all conversions to LLVM extensions.
4054
arith::registerConvertArithToLLVMInterface(registry);
4155
registerConvertComplexToLLVMInterface(registry);
4256
cf::registerConvertControlFlowToLLVMInterface(registry);
@@ -47,8 +61,23 @@ inline void registerAllExtensions(DialectRegistry &registry) {
4761
registerConvertMemRefToLLVMInterface(registry);
4862
registerConvertNVVMToLLVMInterface(registry);
4963
ub::registerConvertUBToLLVMInterface(registry);
50-
registerNVVMTarget(registry);
51-
registerROCDLTarget(registry);
64+
65+
// Register all transform dialect extensions.
66+
affine::registerTransformDialectExtension(registry);
67+
bufferization::registerTransformDialectExtension(registry);
68+
func::registerTransformDialectExtension(registry);
69+
gpu::registerTransformDialectExtension(registry);
70+
linalg::registerTransformDialectExtension(registry);
71+
memref::registerTransformDialectExtension(registry);
72+
nvgpu::registerTransformDialectExtension(registry);
73+
scf::registerTransformDialectExtension(registry);
74+
sparse_tensor::registerTransformDialectExtension(registry);
75+
tensor::registerTransformDialectExtension(registry);
76+
transform::registerPDLExtension(registry);
77+
vector::registerTransformDialectExtension(registry);
78+
79+
// Translation extensions need to be registered by calling
80+
// `registerAllToLLVMIRTranslations` (see All.h).
5281
}
5382

5483
} // namespace mlir

mlir/include/mlir/Target/LLVM/NVVM/Target.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@
1616
namespace mlir {
1717
class DialectRegistry;
1818
class MLIRContext;
19+
namespace NVVM {
1920
/// Registers the `TargetAttrInterface` for the `#nvvm.target` attribute in the
2021
/// given registry.
21-
void registerNVVMTarget(DialectRegistry &registry);
22+
void registerNVVMTargetInterfaceExternalModels(DialectRegistry &registry);
2223

2324
/// Registers the `TargetAttrInterface` for the `#nvvm.target` attribute in the
2425
/// registry associated with the given context.
25-
void registerNVVMTarget(MLIRContext &context);
26+
void registerNVVMTargetInterfaceExternalModels(MLIRContext &context);
27+
} // namespace NVVM
2628
} // namespace mlir
2729

2830
#endif // MLIR_TARGET_LLVM_NVVM_TARGET_H

mlir/include/mlir/Target/LLVM/ROCDL/Target.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@
1616
namespace mlir {
1717
class DialectRegistry;
1818
class MLIRContext;
19+
namespace ROCDL {
1920
/// Registers the `TargetAttrInterface` for the `#rocdl.target` attribute in the
2021
/// given registry.
21-
void registerROCDLTarget(DialectRegistry &registry);
22+
void registerROCDLTargetInterfaceExternalModels(DialectRegistry &registry);
2223

2324
/// Registers the `TargetAttrInterface` for the `#rocdl.target` attribute in the
2425
/// registry associated with the given context.
25-
void registerROCDLTarget(MLIRContext &context);
26+
void registerROCDLTargetInterfaceExternalModels(MLIRContext &context);
27+
} // namespace ROCDL
2628
} // namespace mlir
2729

2830
#endif // MLIR_TARGET_LLVM_ROCDL_TARGET_H

mlir/include/mlir/Target/LLVMIR/Dialect/All.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
#ifndef MLIR_TARGET_LLVMIR_DIALECT_ALL_H
1515
#define MLIR_TARGET_LLVMIR_DIALECT_ALL_H
1616

17+
#include "mlir/Target/LLVM/NVVM/Target.h"
18+
#include "mlir/Target/LLVM/ROCDL/Target.h"
1719
#include "mlir/Target/LLVMIR/Dialect/AMX/AMXToLLVMIRTranslation.h"
1820
#include "mlir/Target/LLVMIR/Dialect/ArmNeon/ArmNeonToLLVMIRTranslation.h"
1921
#include "mlir/Target/LLVMIR/Dialect/ArmSME/ArmSMEToLLVMIRTranslation.h"
@@ -46,6 +48,16 @@ static inline void registerAllToLLVMIRTranslations(DialectRegistry &registry) {
4648
registerOpenMPDialectTranslation(registry);
4749
registerROCDLDialectTranslation(registry);
4850
registerX86VectorDialectTranslation(registry);
51+
52+
// Extension required for translating GPU offloading Ops.
53+
gpu::registerOffloadingLLVMTranslationInterfaceExternalModels(registry);
54+
55+
// GPU target attribute interfaces are not used during translation, however
56+
// the IR fails to verify if they are not registered due to the promise
57+
// mechanism.
58+
// TODO: remove these.
59+
NVVM::registerNVVMTargetInterfaceExternalModels(registry);
60+
ROCDL::registerROCDLTargetInterfaceExternalModels(registry);
4961
}
5062

5163
/// Registers all dialects that can be translated from LLVM IR and the

mlir/include/mlir/Target/LLVMIR/Dialect/GPU/GPUToLLVMIRTranslation.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ void registerGPUDialectTranslation(MLIRContext &context);
2929
namespace gpu {
3030
/// Registers the offloading LLVM translation interfaces for
3131
/// `gpu.select_object`.
32-
void registerOffloadingLLVMTranslationInterfacesExternalModels(
32+
void registerOffloadingLLVMTranslationInterfaceExternalModels(
3333
mlir::DialectRegistry &registry);
3434
} // namespace gpu
3535

mlir/lib/CAPI/RegisterEverything/RegisterEverything.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
#include "mlir-c/RegisterEverything.h"
1010

1111
#include "mlir/CAPI/IR.h"
12+
#include "mlir/IR/MLIRContext.h"
1213
#include "mlir/InitAllDialects.h"
1314
#include "mlir/InitAllExtensions.h"
1415
#include "mlir/InitAllPasses.h"
16+
#include "mlir/Target/LLVMIR/Dialect/All.h"
1517
#include "mlir/Target/LLVMIR/Dialect/Builtin/BuiltinToLLVMIRTranslation.h"
1618
#include "mlir/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.h"
1719

@@ -22,8 +24,9 @@ void mlirRegisterAllDialects(MlirDialectRegistry registry) {
2224

2325
void mlirRegisterAllLLVMTranslations(MlirContext context) {
2426
auto &ctx = *unwrap(context);
25-
mlir::registerBuiltinDialectTranslation(ctx);
26-
mlir::registerLLVMDialectTranslation(ctx);
27+
mlir::DialectRegistry registry;
28+
mlir::registerAllToLLVMIRTranslations(registry);
29+
ctx.appendDialectRegistry(registry);
2730
}
2831

2932
void mlirRegisterAllPasses() { mlir::registerAllPasses(); }

mlir/lib/Dialect/GPU/Transforms/ModuleToBinary.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@
1515

1616
#include "mlir/Dialect/Func/IR/FuncOps.h"
1717
#include "mlir/Dialect/GPU/IR/GPUDialect.h"
18+
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
19+
#include "mlir/Dialect/LLVMIR/NVVMDialect.h"
20+
#include "mlir/Dialect/LLVMIR/ROCDLDialect.h"
1821
#include "mlir/IR/BuiltinOps.h"
19-
#include "mlir/Target/LLVM/NVVM/Target.h"
20-
#include "mlir/Target/LLVM/ROCDL/Target.h"
21-
#include "mlir/Target/LLVMIR/Dialect/GPU/GPUToLLVMIRTranslation.h"
22-
#include "mlir/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.h"
2322
#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
2423

2524
#include "llvm/ADT/STLExtras.h"
@@ -46,13 +45,13 @@ class GpuModuleToBinaryPass
4645
void GpuModuleToBinaryPass::getDependentDialects(
4746
DialectRegistry &registry) const {
4847
// Register all GPU related translations.
49-
registerLLVMDialectTranslation(registry);
50-
registerGPUDialectTranslation(registry);
48+
registry.insert<gpu::GPUDialect>();
49+
registry.insert<LLVM::LLVMDialect>();
5150
#if MLIR_CUDA_CONVERSIONS_ENABLED == 1
52-
registerNVVMTarget(registry);
51+
registry.insert<NVVM::NVVMDialect>();
5352
#endif
5453
#if MLIR_ROCM_CONVERSIONS_ENABLED == 1
55-
registerROCDLTarget(registry);
54+
registry.insert<ROCDL::ROCDLDialect>();
5655
#endif
5756
}
5857

mlir/lib/Dialect/GPU/Transforms/NVVMAttachTarget.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ struct NVVMAttachTarget
3838
void runOnOperation() override;
3939

4040
void getDependentDialects(DialectRegistry &registry) const override {
41-
registerNVVMTarget(registry);
41+
registry.insert<NVVM::NVVMDialect>();
4242
}
4343
};
4444
} // namespace

mlir/lib/Dialect/GPU/Transforms/ROCDLAttachTarget.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ struct ROCDLAttachTarget
3838
void runOnOperation() override;
3939

4040
void getDependentDialects(DialectRegistry &registry) const override {
41-
registerROCDLTarget(registry);
41+
registry.insert<ROCDL::ROCDLDialect>();
4242
}
4343
};
4444
} // namespace

mlir/lib/Dialect/GPU/Transforms/SerializeToBlob.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
//
1313
//===----------------------------------------------------------------------===//
1414

15+
#include "mlir/Dialect/GPU/IR/GPUDialect.h"
1516
#include "mlir/Dialect/GPU/Transforms/Passes.h"
17+
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
1618
#include "mlir/ExecutionEngine/OptUtils.h"
1719
#include "mlir/Pass/Pass.h"
1820
#include "mlir/Target/LLVMIR/Dialect/GPU/GPUToLLVMIRTranslation.h"
@@ -23,8 +25,8 @@
2325
#include "llvm/Support/TargetSelect.h"
2426
#include "llvm/Target/TargetMachine.h"
2527

26-
#include <string>
2728
#include <optional>
29+
#include <string>
2830

2931
#define DEBUG_TYPE "serialize-to-blob"
3032

@@ -124,13 +126,6 @@ gpu::SerializeToBlobPass::optimizeLlvm(llvm::Module &llvmModule,
124126
return success();
125127
}
126128

127-
void gpu::SerializeToBlobPass::getDependentDialects(
128-
DialectRegistry &registry) const {
129-
registerGPUDialectTranslation(registry);
130-
registerLLVMDialectTranslation(registry);
131-
OperationPass<gpu::GPUModuleOp>::getDependentDialects(registry);
132-
}
133-
134129
std::unique_ptr<llvm::TargetMachine>
135130
gpu::SerializeToBlobPass::createTargetMachine() {
136131
Location loc = getOperation().getLoc();

0 commit comments

Comments
 (0)