Llvm 我可以将parseBitcodeFile返回值强制转换为模块*?

Llvm 我可以将parseBitcodeFile返回值强制转换为模块*?,llvm,Llvm,其返回类型为错误或。我正在查看一些旧代码,他们直接将其返回值分配给模块*,但我的编译器抱怨说,从error到模块*的转换不存在,只需调用error的get方法: ErrorOr<Module *> ModuleOrErr = parseBitcodeFile(Buffer, Context); std::unique_ptr<Module> M(ModuleOrErr.get()); std::unique_ptr<Module> llvm::parseIR

其返回类型为
错误或
。我正在查看一些旧代码,他们直接将其返回值分配给
模块*
,但我的编译器抱怨说,从
error
模块*

的转换不存在,只需调用
error
get
方法:

ErrorOr<Module *> ModuleOrErr = parseBitcodeFile(Buffer, Context);
std::unique_ptr<Module> M(ModuleOrErr.get());
std::unique_ptr<Module> llvm::parseIR(MemoryBufferRef Buffer, SMDiagnostic &Err,
                                      LLVMContext &Context) {
  NamedRegionTimer T(TimeIRParsingName, TimeIRParsingGroupName,
                     TimePassesIsEnabled);
  if (isBitcode((const unsigned char *)Buffer.getBufferStart(),
                (const unsigned char *)Buffer.getBufferEnd())) {
    ErrorOr<Module *> ModuleOrErr = parseBitcodeFile(Buffer, Context);
    if (std::error_code EC = ModuleOrErr.getError()) {
      Err = SMDiagnostic(Buffer.getBufferIdentifier(), SourceMgr::DK_Error,
                         EC.message());
      return nullptr;
    }
    return std::unique_ptr<Module>(ModuleOrErr.get());
  }

  return parseAssembly(Buffer, Err, Context);
}