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);
}