diff --git a/mlir/lib/Dialect/SPIRV/Serialization/TranslateRegistration.cpp b/mlir/lib/Dialect/SPIRV/Serialization/TranslateRegistration.cpp --- a/mlir/lib/Dialect/SPIRV/Serialization/TranslateRegistration.cpp +++ b/mlir/lib/Dialect/SPIRV/Serialization/TranslateRegistration.cpp @@ -136,14 +136,17 @@ if (failed(spirv::serialize(*spirvModules.begin(), binary, emitDebugInfo))) return failure(); + MLIRContext deserializationContext(false); + context->getDialectRegistry().loadAll(&deserializationContext); // Then deserialize to get back a SPIR-V module. - spirv::OwningSPIRVModuleRef spirvModule = spirv::deserialize(binary, context); + spirv::OwningSPIRVModuleRef spirvModule = + spirv::deserialize(binary, &deserializationContext); if (!spirvModule) return failure(); // Wrap around in a new MLIR module. OwningModuleRef dstModule(ModuleOp::create(FileLineColLoc::get( - /*filename=*/"", /*line=*/0, /*column=*/0, context))); + /*filename=*/"", /*line=*/0, /*column=*/0, &deserializationContext))); dstModule->getBody()->push_front(spirvModule.release()); dstModule->print(output);