From 43d4be6be849ab0dde8aa99bb97d81cb5288386d Mon Sep 17 00:00:00 2001 From: disarray2077 <86157825+disarray2077@users.noreply.github.com> Date: Sun, 6 Feb 2022 13:12:15 -0300 Subject: [PATCH] LLVM 13.0.1 fixes --- IDEHelper/Compiler/BfIRCodeGen.cpp | 74 +++++++++++++++++++----------- IDEHelper/IDEHelper.vcxproj | 4 +- IDEHelper/X64.cpp | 9 +++- IDEHelper/X86.cpp | 9 +++- 4 files changed, 63 insertions(+), 33 deletions(-) diff --git a/IDEHelper/Compiler/BfIRCodeGen.cpp b/IDEHelper/Compiler/BfIRCodeGen.cpp index 0853ceda..9ffdc25b 100644 --- a/IDEHelper/Compiler/BfIRCodeGen.cpp +++ b/IDEHelper/Compiler/BfIRCodeGen.cpp @@ -674,7 +674,9 @@ void BfIRCodeGen::SetResult(int id, llvm::MDNode* md) void BfIRCodeGen::ProcessBfIRData(const BfSizedArray& buffer) { - struct InlineAsmErrorHook + // Diagnostic handlers were unified in LLVM change 5de2d189e6ad, so starting + // with LLVM 13 this function is gone. + /*struct InlineAsmErrorHook { static void StaticHandler(const llvm::SMDiagnostic& diag, void *context, unsigned locCookie) { @@ -688,7 +690,7 @@ void BfIRCodeGen::ProcessBfIRData(const BfSizedArray& buffer) } } }; - mLLVMContext->setInlineAsmDiagnosticHandler(InlineAsmErrorHook::StaticHandler, this); + mLLVMContext->setInlineAsmDiagnosticHandler(InlineAsmErrorHook::StaticHandler, this);*/ BF_ASSERT(mStream == NULL); mStream = new ChunkedDataBuffer(); @@ -924,7 +926,7 @@ void BfIRCodeGen::Read(llvm::Value*& llvmValue, BfIRCodeGenEntry** codeGenEntry, llvm::ConstantInt::get(llvm::Type::getInt32Ty(*mLLVMContext), idx0), llvm::ConstantInt::get(llvm::Type::getInt32Ty(*mLLVMContext), idx1)}; - llvmValue = FixGEP(target, llvm::ConstantExpr::getInBoundsGetElementPtr(NULL, target, gepArgs)); + llvmValue = FixGEP(target, llvm::ConstantExpr::getInBoundsGetElementPtr(target->getType()->getPointerElementType(), target, gepArgs)); return; } else if (constType == BfConstType_ExtractValue) @@ -1273,7 +1275,7 @@ llvm::Value* BfIRCodeGen::TryToVector(llvm::Value* value, llvm::Type* elemType) return mIRBuilder->CreateAlignedLoad(ptrVal0, llvm::MaybeAlign(1)); } - if (auto vecType = llvm::dyn_cast(ptrElemType)) + if (auto vecType = llvm::dyn_cast(ptrElemType)) { if (vecType->getElementType() == elemType) return mIRBuilder->CreateAlignedLoad(value, llvm::MaybeAlign(1)); @@ -1567,7 +1569,7 @@ void BfIRCodeGen::CreateMemSet(llvm::Value* addr, llvm::Value* val, llvm::Value* headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo()); llvm::Value* ptrVal = headVal; if (curOffset != 0) - ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(NULL, headVal, curOffset / 8); + ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(intTy, headVal, curOffset / 8); mIRBuilder->CreateStore(constVal, ptrVal, isVolatile); curOffset += 8; @@ -1586,7 +1588,7 @@ void BfIRCodeGen::CreateMemSet(llvm::Value* addr, llvm::Value* val, llvm::Value* headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo()); llvm::Value* ptrVal = headVal; if (curOffset != 0) - ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(NULL, headVal, curOffset / 4); + ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(intTy, headVal, curOffset / 4); mIRBuilder->CreateStore(constVal, ptrVal, isVolatile); curOffset += 4; @@ -1605,7 +1607,7 @@ void BfIRCodeGen::CreateMemSet(llvm::Value* addr, llvm::Value* val, llvm::Value* headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo()); llvm::Value* ptrVal = headVal; if (curOffset != 0) - ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(NULL, headVal, curOffset / 2); + ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(intTy, headVal, curOffset / 2); mIRBuilder->CreateStore(constVal, ptrVal, isVolatile); curOffset += 2; @@ -1624,7 +1626,7 @@ void BfIRCodeGen::CreateMemSet(llvm::Value* addr, llvm::Value* val, llvm::Value* headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo()); llvm::Value* ptrVal = headVal; if (curOffset != 0) - ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(NULL, headVal, curOffset / 1); + ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(intTy, headVal, curOffset / 1); mIRBuilder->CreateStore(constVal, ptrVal, isVolatile); curOffset += 1; @@ -1787,7 +1789,7 @@ void BfIRCodeGen::HandleNextCmd() { CMD_PARAM(String, fileName); std::error_code ec; - llvm::raw_fd_ostream outStream(fileName.c_str(), ec, llvm::sys::fs::OpenFlags::F_Text); + llvm::raw_fd_ostream outStream(fileName.c_str(), ec, llvm::sys::fs::OpenFlags::OF_Text); if (ec) { Fail("Failed writing IR '" + fileName + "': " + ec.message()); @@ -2311,12 +2313,12 @@ void BfIRCodeGen::HandleNextCmd() if (auto alignedPtr = GetAlignedPtr(val)) { - auto gepResult = mIRBuilder->CreateConstInBoundsGEP1_32(NULL, alignedPtr, idx0); + auto gepResult = mIRBuilder->CreateConstInBoundsGEP1_32(alignedPtr->getType()->getPointerElementType(), alignedPtr, idx0); SetResult(curId, mIRBuilder->CreateBitCast(gepResult, val->getType())); break; } - SetResult(curId, mIRBuilder->CreateConstInBoundsGEP1_32(NULL, val, idx0)); + SetResult(curId, mIRBuilder->CreateConstInBoundsGEP1_32(val->getType()->getPointerElementType(), val, idx0)); } break; case BfIRCmd_InboundsGEP2_32: @@ -2324,7 +2326,7 @@ void BfIRCodeGen::HandleNextCmd() CMD_PARAM(llvm::Value*, val); CMD_PARAM(int, idx0); CMD_PARAM(int, idx1); - SetResult(curId, FixGEP(val, mIRBuilder->CreateConstInBoundsGEP2_32(NULL, val, idx0, idx1))); + SetResult(curId, FixGEP(val, mIRBuilder->CreateConstInBoundsGEP2_32(val->getType()->getPointerElementType(), val, idx0, idx1))); } break; case BfIRCmd_InBoundsGEP1: @@ -3112,7 +3114,7 @@ void BfIRCodeGen::HandleNextCmd() if (result != NULL) { - if (auto vecType = llvm::dyn_cast(result->getType())) + if (auto vecType = llvm::dyn_cast(result->getType())) { if (auto intType = llvm::dyn_cast(vecType->getElementType())) { @@ -3180,7 +3182,7 @@ void BfIRCodeGen::HandleNextCmd() if (result != NULL) { - if (auto vecType = llvm::dyn_cast(result->getType())) + if (auto vecType = llvm::dyn_cast(result->getType())) { if (auto intType = llvm::dyn_cast(vecType->getElementType())) { @@ -3336,7 +3338,7 @@ void BfIRCodeGen::HandleNextCmd() } } - auto inst = mIRBuilder->CreateAtomicCmpXchg(args[0], args[1], args[2], successOrdering, failOrdering); + auto inst = mIRBuilder->CreateAtomicCmpXchg(args[0], args[1], args[2], llvm::MaybeAlign(), successOrdering, failOrdering); if (intrinsicData->mIntrinsic == BfIRIntrinsic_AtomicCmpStore_Weak) inst->setWeak(true); if ((memoryKind & BfIRAtomicOrdering_Volatile) != 0) @@ -3547,7 +3549,7 @@ void BfIRCodeGen::HandleNextCmd() break; } - auto atomicRMW = mIRBuilder->CreateAtomicRMW(op, args[0], args[1], ordering); + auto atomicRMW = mIRBuilder->CreateAtomicRMW(op, args[0], args[1], llvm::MaybeAlign(), ordering); if ((memoryKind & BfIRAtomicOrdering_Volatile) != 0) atomicRMW->setVolatile(true); llvm::Value* result = atomicRMW; @@ -3776,7 +3778,17 @@ void BfIRCodeGen::HandleNextCmd() CMD_PARAM(int, argIdx); BfIRAttribute attribute = (BfIRAttribute)mStream->Read(); BF_ASSERT(llvm::isa(callInst)); - ((llvm::CallInst*)callInst)->addAttribute(argIdx, LLVMMapAttribute(attribute)); + auto attr = LLVMMapAttribute(attribute); + if (attr == llvm::Attribute::StructRet) + { + // FIXME: StructRet changed from EnumAttr to TypeAttr + //llvm::Attribute sret = llvm::Attribute::getWithStructRetType(*mLLVMContext, srt); + //((llvm::CallInst*)callInst)->addAttribute(argIdx, sret); + } + else + { + ((llvm::CallInst*)callInst)->addAttribute(argIdx, attr); + } } break; case BfIRCmd_Call_AddAttribute1: @@ -3794,12 +3806,13 @@ void BfIRCodeGen::HandleNextCmd() } else if (attribute == BfIRAttribute_ByVal) { - llvm::AttrBuilder B; + // FIXME: Adding integer/type attribute without an argument. + /*llvm::AttrBuilder B; B.addAttribute(llvm::Attribute::ByVal); B.addAlignmentAttr(arg); auto attrList = ((llvm::CallInst*)callInst)->getAttributes(); attrList = attrList.addAttributes(*mLLVMContext, argIdx, B); - ((llvm::CallInst*)callInst)->setAttributes(attrList); + ((llvm::CallInst*)callInst)->setAttributes(attrList);*/ } } } @@ -3854,7 +3867,13 @@ void BfIRCodeGen::HandleNextCmd() else { auto attr = LLVMMapAttribute(attribute); - if (attr != llvm::Attribute::None) + if (attr == llvm::Attribute::StructRet) + { + // FIXME: StructRet changed from EnumAttr to TypeAttr + //llvm::Attribute sret = llvm::Attribute::getWithStructRetType(*mLLVMContext, srt); + //func->addAttribute(argIdx, sret); + } + else if (attr != llvm::Attribute::None) func->addAttribute(argIdx, attr); } } @@ -3871,12 +3890,13 @@ void BfIRCodeGen::HandleNextCmd() } else if (attribute == BfIRAttribute_ByVal) { - llvm::AttrBuilder B; + // FIXME: Adding integer/type attribute without an argument. + /*llvm::AttrBuilder B; B.addAttribute(llvm::Attribute::ByVal); B.addAlignmentAttr(arg); auto attrList = ((llvm::Function*)func)->getAttributes(); attrList = attrList.addAttributes(*mLLVMContext, argIdx, B); - ((llvm::Function*)func)->setAttributes(attrList); + ((llvm::Function*)func)->setAttributes(attrList);*/ } } break; @@ -3966,7 +3986,7 @@ void BfIRCodeGen::HandleNextCmd() CMD_PARAM(int, column); CMD_PARAM(llvm::MDNode*, diScope); CMD_PARAM(llvm::MDNode*, diInlinedAt); - mDebugLoc = llvm::DebugLoc::get(line, column, diScope, diInlinedAt); + mDebugLoc = llvm::DILocation::get(*mLLVMContext, line, column, diScope, diInlinedAt); } break; case BfIRCmd_Nop: @@ -5179,7 +5199,7 @@ static void PopulateModulePassManager(llvm::legacy::PassManagerBase &MPM, const // convert to more optimized IR using more aggressive simplify CFG options. // The extra sinking transform can create larger basic blocks, so do this // before SLP vectorization. - MPM.add(llvm::createCFGSimplificationPass(1, true, true, false, true)); + MPM.add(llvm::createCFGSimplificationPass({ 1, true, true, false, false, true })); if (options.mRunSLPAfterLoopVectorization && options.mSLPVectorize) { MPM.add(llvm::createSLPVectorizerPass()); // Vectorize parallel scalar chains. @@ -5343,7 +5363,7 @@ bool BfIRCodeGen::WriteObjectFile(const StringImpl& outFileName) } std::error_code EC; - llvm::sys::fs::OpenFlags OpenFlags = llvm::sys::fs::F_None; + llvm::sys::fs::OpenFlags OpenFlags = llvm::sys::fs::OF_None; llvm::raw_fd_ostream out(outFileName.c_str(), EC, OpenFlags); @@ -5368,7 +5388,7 @@ bool BfIRCodeGen::WriteObjectFile(const StringImpl& outFileName) if ((enableLTO) || (mCodeGenOptions.mWriteBitcode)) { std::error_code ec; - outStream = new llvm::raw_fd_ostream(outFileName.c_str(), ec, llvm::sys::fs::F_None); + outStream = new llvm::raw_fd_ostream(outFileName.c_str(), ec, llvm::sys::fs::OF_None); if (outStream->has_error()) { return false; @@ -5438,7 +5458,7 @@ bool BfIRCodeGen::WriteObjectFile(const StringImpl& outFileName) bool BfIRCodeGen::WriteIR(const StringImpl& outFileName, StringImpl& error) { std::error_code ec; - llvm::raw_fd_ostream outStream(outFileName.c_str(), ec, llvm::sys::fs::OpenFlags::F_Text); + llvm::raw_fd_ostream outStream(outFileName.c_str(), ec, llvm::sys::fs::OpenFlags::OF_Text); if (ec) { error = ec.message(); diff --git a/IDEHelper/IDEHelper.vcxproj b/IDEHelper/IDEHelper.vcxproj index f2e39a4f..2afca404 100644 --- a/IDEHelper/IDEHelper.vcxproj +++ b/IDEHelper/IDEHelper.vcxproj @@ -171,7 +171,7 @@ Windows DebugFull $(SolutionDir)\IDE\dist\$(TargetName).dll - rpcrt4.lib;cabinet.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;libcurl_a.lib;wininet.lib;LLVMMCDisassembler.lib;LLVMSupport.lib;LLVMMC.lib;LLVMObject.lib;LLVMCore.lib;LLVMBitReader.lib;LLVMAsmParser.lib;LLVMMCParser.lib;LLVMCodeGen.lib;LLVMTarget.lib;LLVMScalarOpts.lib;LLVMInstCombine.lib;LLVMSelectionDAG.lib;LLVMProfileData.lib;LLVMAnalysis.lib;LLVMAsmPrinter.lib;LLVMBitWriter.lib;LLVMVectorize.lib;LLVMipo.lib;LLVMInstrumentation.lib;LLVMDebugInfoDWARF.lib;LLVMDebugInfoPDB.lib;LLVMDebugInfoCodeView.lib;LLVMGlobalISel.lib;LLVMBinaryFormat.lib;LLVMBitstreamReader.lib;LLVMLTO.lib;LLVMPasses.lib;LLVMLinker.lib;LLVMIRReader.lib;LLVMDemangle.lib;LLVMTransformUtils.lib;LLVMAggressiveInstCombine.lib;LLVMCFGuard.lib;LLVMTextAPI.lib;LLVMRemarks.lib;LLVMX86Info.lib;LLVMX86Desc.lib;LLVMX86CodeGen.lib;LLVMX86AsmParser.lib;LLVMX86Disassembler.lib;LLVMAArch64Info.lib;LLVMAArch64Utils.lib;LLVMAArch64Desc.lib;LLVMAArch64CodeGen.lib;LLVMAArch64AsmParser.lib;LLVMAArch64Disassembler.lib;LLVMARMInfo.lib;LLVMARMUtils.lib;LLVMARMDesc.lib;LLVMARMCodeGen.lib;LLVMARMAsmParser.lib;LLVMARMDisassembler.lib;LLVMWebAssemblyInfo.lib;LLVMWebAssemblyDesc.lib;LLVMWebAssemblyCodeGen.lib;LLVMWebAssemblyAsmParser.lib;LLVMWebAssemblyDisassembler.lib;%(AdditionalDependencies) + rpcrt4.lib;cabinet.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;libcurl_a.lib;wininet.lib;LLVMMCDisassembler.lib;LLVMSupport.lib;LLVMMC.lib;LLVMObject.lib;LLVMCore.lib;LLVMBitReader.lib;LLVMAsmParser.lib;LLVMMCParser.lib;LLVMCodeGen.lib;LLVMTarget.lib;LLVMScalarOpts.lib;LLVMInstCombine.lib;LLVMSelectionDAG.lib;LLVMProfileData.lib;LLVMAnalysis.lib;LLVMAsmPrinter.lib;LLVMBitWriter.lib;LLVMVectorize.lib;LLVMipo.lib;LLVMInstrumentation.lib;LLVMDebugInfoDWARF.lib;LLVMDebugInfoPDB.lib;LLVMDebugInfoCodeView.lib;LLVMGlobalISel.lib;LLVMBinaryFormat.lib;LLVMBitstreamReader.lib;LLVMLTO.lib;LLVMPasses.lib;LLVMLinker.lib;LLVMIRReader.lib;LLVMDemangle.lib;LLVMTransformUtils.lib;LLVMAggressiveInstCombine.lib;LLVMCFGuard.lib;LLVMTextAPI.lib;LLVMRemarks.lib;LLVMX86Info.lib;LLVMX86Desc.lib;LLVMX86CodeGen.lib;LLVMX86AsmParser.lib;LLVMX86Disassembler.lib;LLVMAArch64Info.lib;LLVMAArch64Utils.lib;LLVMAArch64Desc.lib;LLVMAArch64CodeGen.lib;LLVMAArch64AsmParser.lib;LLVMAArch64Disassembler.lib;LLVMARMInfo.lib;LLVMARMUtils.lib;LLVMARMDesc.lib;LLVMARMCodeGen.lib;LLVMARMAsmParser.lib;LLVMARMDisassembler.lib;LLVMWebAssemblyInfo.lib;LLVMWebAssemblyDesc.lib;LLVMWebAssemblyCodeGen.lib;LLVMWebAssemblyAsmParser.lib;LLVMWebAssemblyDisassembler.lib;LLVMWebAssemblyUtils.lib;%(AdditionalDependencies) ..\extern\llvm_win64_11_0_0\Debug\lib; ..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\lib;..\extern\curl\deps\lib;..\extern\jemalloc_win\x64\debug false $(SolutionDir)\IDE\dist\$(TargetName).lib @@ -230,7 +230,7 @@ true $(SolutionDir)\IDE\dist\$(TargetName).dll ..\extern\llvm_win64_11_0_0\Release\lib; ..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\lib;..\extern\curl\deps\lib;..\extern\jemalloc_win\x64\release - rpcrt4.lib;cabinet.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;libcurl_a.lib;wininet.lib;LLVMMCDisassembler.lib;LLVMSupport.lib;LLVMMC.lib;LLVMObject.lib;LLVMCore.lib;LLVMBitReader.lib;LLVMAsmParser.lib;LLVMMCParser.lib;LLVMCodeGen.lib;LLVMTarget.lib;LLVMScalarOpts.lib;LLVMInstCombine.lib;LLVMSelectionDAG.lib;LLVMProfileData.lib;LLVMAnalysis.lib;LLVMAsmPrinter.lib;LLVMBitWriter.lib;LLVMVectorize.lib;LLVMipo.lib;LLVMInstrumentation.lib;LLVMDebugInfoDWARF.lib;LLVMDebugInfoPDB.lib;LLVMDebugInfoCodeView.lib;LLVMGlobalISel.lib;LLVMBinaryFormat.lib;LLVMBitstreamReader.lib;LLVMLTO.lib;LLVMPasses.lib;LLVMLinker.lib;LLVMIRReader.lib;LLVMDemangle.lib;LLVMTransformUtils.lib;LLVMAggressiveInstCombine.lib;LLVMCFGuard.lib;LLVMTextAPI.lib;LLVMRemarks.lib;LLVMX86Info.lib;LLVMX86Desc.lib;LLVMX86CodeGen.lib;LLVMX86AsmParser.lib;LLVMX86Disassembler.lib;LLVMAArch64Info.lib;LLVMAArch64Utils.lib;LLVMAArch64Desc.lib;LLVMAArch64CodeGen.lib;LLVMAArch64AsmParser.lib;LLVMAArch64Disassembler.lib;LLVMARMInfo.lib;LLVMARMUtils.lib;LLVMARMDesc.lib;LLVMARMCodeGen.lib;LLVMARMAsmParser.lib;LLVMARMDisassembler.lib;LLVMWebAssemblyInfo.lib;LLVMWebAssemblyDesc.lib;LLVMWebAssemblyCodeGen.lib;LLVMWebAssemblyAsmParser.lib;LLVMWebAssemblyDisassembler.lib;%(AdditionalDependencies) + rpcrt4.lib;cabinet.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;libcurl_a.lib;wininet.lib;LLVMMCDisassembler.lib;LLVMSupport.lib;LLVMMC.lib;LLVMObject.lib;LLVMCore.lib;LLVMBitReader.lib;LLVMAsmParser.lib;LLVMMCParser.lib;LLVMCodeGen.lib;LLVMTarget.lib;LLVMScalarOpts.lib;LLVMInstCombine.lib;LLVMSelectionDAG.lib;LLVMProfileData.lib;LLVMAnalysis.lib;LLVMAsmPrinter.lib;LLVMBitWriter.lib;LLVMVectorize.lib;LLVMipo.lib;LLVMInstrumentation.lib;LLVMDebugInfoDWARF.lib;LLVMDebugInfoPDB.lib;LLVMDebugInfoCodeView.lib;LLVMGlobalISel.lib;LLVMBinaryFormat.lib;LLVMBitstreamReader.lib;LLVMLTO.lib;LLVMPasses.lib;LLVMLinker.lib;LLVMIRReader.lib;LLVMDemangle.lib;LLVMTransformUtils.lib;LLVMAggressiveInstCombine.lib;LLVMCFGuard.lib;LLVMTextAPI.lib;LLVMRemarks.lib;LLVMX86Info.lib;LLVMX86Desc.lib;LLVMX86CodeGen.lib;LLVMX86AsmParser.lib;LLVMX86Disassembler.lib;LLVMAArch64Info.lib;LLVMAArch64Utils.lib;LLVMAArch64Desc.lib;LLVMAArch64CodeGen.lib;LLVMAArch64AsmParser.lib;LLVMAArch64Disassembler.lib;LLVMARMInfo.lib;LLVMARMUtils.lib;LLVMARMDesc.lib;LLVMARMCodeGen.lib;LLVMARMAsmParser.lib;LLVMARMDisassembler.lib;LLVMWebAssemblyInfo.lib;LLVMWebAssemblyDesc.lib;LLVMWebAssemblyCodeGen.lib;LLVMWebAssemblyAsmParser.lib;LLVMWebAssemblyDisassembler.lib;LLVMWebAssemblyUtils.lib;%(AdditionalDependencies) false true $(SolutionDir)\IDE\dist\$(TargetName).lib diff --git a/IDEHelper/X64.cpp b/IDEHelper/X64.cpp index 66817941..feebc3d2 100644 --- a/IDEHelper/X64.cpp +++ b/IDEHelper/X64.cpp @@ -835,9 +835,14 @@ X64CPU::X64CPU() : return; mInstrInfo = TheX86_64Target.createMCInstrInfo(); + + mMCContext = new MCContext(Triple(triple), mAsmInfo, mRegisterInfo, mSubtargetInfo); - mMCObjectFileInfo = new MCObjectFileInfo(); - mMCContext = new MCContext(mAsmInfo, mRegisterInfo, mMCObjectFileInfo); + mMCObjectFileInfo = TheX86_64Target.createMCObjectFileInfo(*mMCContext, false); + if (!mMCObjectFileInfo) + return; + + mMCContext->setObjectFileInfo(mMCObjectFileInfo); MCDisassembler *disAsm = TheX86_64Target.createMCDisassembler(*mSubtargetInfo, *mMCContext); mDisAsm = disAsm; diff --git a/IDEHelper/X86.cpp b/IDEHelper/X86.cpp index 0881bdac..0b38a3c1 100644 --- a/IDEHelper/X86.cpp +++ b/IDEHelper/X86.cpp @@ -443,8 +443,13 @@ X86CPU::X86CPU() : mInstrInfo = TheX86_32Target.createMCInstrInfo(); - mMCObjectFileInfo = new MCObjectFileInfo(); - mMCContext = new MCContext(mAsmInfo, mRegisterInfo, mMCObjectFileInfo); + mMCContext = new MCContext(Triple(triple), mAsmInfo, mRegisterInfo, mSubtargetInfo); + + mMCObjectFileInfo = TheX86_32Target.createMCObjectFileInfo(*mMCContext, false); + if (!mMCObjectFileInfo) + return; + + mMCContext->setObjectFileInfo(mMCObjectFileInfo); MCDisassembler *disAsm = TheX86_32Target.createMCDisassembler(*mSubtargetInfo, *mMCContext); mDisAsm = disAsm;