mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-17 23:56:05 +02:00
Merge pull request #1415 from disarray2077/llvm1301
Fixes to upgrade LLVM version to 13.0.1
This commit is contained in:
commit
2ab072ee20
23 changed files with 193 additions and 137 deletions
|
@ -2669,7 +2669,8 @@ void BeIRCodeGen::HandleNextCmd()
|
|||
CMD_PARAM(int, line);
|
||||
CMD_PARAM(int, column);
|
||||
CMD_PARAM(BeMDNode*, diScope);
|
||||
CMD_PARAM(BeMDNode*, diInlinedAt);
|
||||
CMD_PARAM(BeMDNode*, diInlinedAt);
|
||||
BF_ASSERT(diScope != NULL);
|
||||
mBeModule->SetCurrentDebugLocation(line - 1, column - 1, diScope, (BeDbgLoc*)diInlinedAt);
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -49,8 +49,8 @@ if (${APPLE})
|
|||
../BeefySysLib/
|
||||
../BeefySysLib/third_party
|
||||
../BeefySysLib/third_party/freetype/include
|
||||
../extern/llvm-project_11_0_0/llvm/include
|
||||
../extern/llvm-project_11_0_0/llvm/lib/Target
|
||||
../extern/llvm-project_13_0_1/llvm/include
|
||||
../extern/llvm-project_13_0_1/llvm/lib/Target
|
||||
|
||||
../BeefySysLib/platform/osx
|
||||
)
|
||||
|
@ -61,8 +61,8 @@ else()
|
|||
../BeefySysLib/
|
||||
../BeefySysLib/third_party
|
||||
../BeefySysLib/third_party/freetype/include
|
||||
../extern/llvm-project_11_0_0/llvm/include
|
||||
../extern/llvm-project_11_0_0/llvm/lib/Target
|
||||
../extern/llvm-project_13_0_1/llvm/include
|
||||
../extern/llvm-project_13_0_1/llvm/lib/Target
|
||||
|
||||
../BeefySysLib/platform/linux
|
||||
)
|
||||
|
@ -77,24 +77,24 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|||
-D_DEBUG
|
||||
)
|
||||
include_directories(
|
||||
../extern/llvm_linux_11_0_0/include
|
||||
../extern/llvm_linux_11_0_0/lib/Target/X86
|
||||
../extern/llvm_linux_11_0_0/lib/Target/AArch64
|
||||
../extern/llvm_linux_13_0_1/include
|
||||
../extern/llvm_linux_13_0_1/lib/Target/X86
|
||||
../extern/llvm_linux_13_0_1/lib/Target/AArch64
|
||||
)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
|
||||
set(CMAKE_EXECUTABLE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
|
||||
set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_11_0_0/lib")
|
||||
set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_13_0_1/lib")
|
||||
else()
|
||||
include_directories(
|
||||
../extern/llvm_linux_rel_11_0_0/include
|
||||
../extern/llvm_linux_rel_11_0_0/lib/Target/X86
|
||||
../extern/llvm_linux_rel_11_0_0/lib/Target/AArch64
|
||||
../extern/llvm_linux_rel_13_0_1/include
|
||||
../extern/llvm_linux_rel_13_0_1/lib/Target/X86
|
||||
../extern/llvm_linux_rel_13_0_1/lib/Target/AArch64
|
||||
)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_RELEASE}")
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_RELEASE}")
|
||||
set(CMAKE_EXECUTABLE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_RELEASE}")
|
||||
set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_rel_11_0_0/lib")
|
||||
set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_rel_13_0_1/lib")
|
||||
endif()
|
||||
|
||||
################### Dependencies ##################
|
||||
|
@ -192,15 +192,16 @@ add_library(${PROJECT_NAME} SHARED
|
|||
)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_11_0_0/bin/llvm-config --system-libs --link-static
|
||||
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_13_0_1/bin/llvm-config --system-libs --link-static
|
||||
OUTPUT_VARIABLE LLVM_SYSTEM_LIBS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
set(TARGET_LIBS_OS "${LLVM_SYSTEM_LIBS}")
|
||||
|
||||
if (HAVE_BACKTRACE_HEADERS)
|
||||
string(APPEND TARGET_LIBS_OS " -lbacktrace")
|
||||
string(STRIP ${TARGET_LIBS_OS} TARGET_LIBS_OS)
|
||||
endif()
|
||||
|
||||
list(APPEND LLVM_LIBS
|
||||
|
@ -217,7 +218,7 @@ list(APPEND LLVM_LIBS
|
|||
${LLVM_LIB}/libLLVMInstCombine.a
|
||||
${LLVM_LIB}/libLLVMSelectionDAG.a
|
||||
${LLVM_LIB}/libLLVMProfileData.a
|
||||
${LLVM_LIB}/libLLVMTransformUtils.a
|
||||
|
||||
${LLVM_LIB}/libLLVMAnalysis.a
|
||||
${LLVM_LIB}/libLLVMAsmPrinter.a
|
||||
${LLVM_LIB}/libLLVMBitWriter.a
|
||||
|
@ -226,8 +227,9 @@ list(APPEND LLVM_LIBS
|
|||
${LLVM_LIB}/libLLVMInstrumentation.a
|
||||
${LLVM_LIB}/libLLVMDebugInfoDWARF.a
|
||||
${LLVM_LIB}/libLLVMDebugInfoPDB.a
|
||||
${LLVM_LIB}/libLLVMDebugInfoCodeView.a
|
||||
${LLVM_LIB}/libLLVMDebugInfoCodeView.a
|
||||
${LLVM_LIB}/libLLVMGlobalISel.a
|
||||
${LLVM_LIB}/libLLVMTransformUtils.a
|
||||
${LLVM_LIB}/libLLVMBinaryFormat.a
|
||||
${LLVM_LIB}/libLLVMIRReader.a
|
||||
${LLVM_LIB}/libLLVMLinker.a
|
||||
|
@ -263,6 +265,7 @@ list(APPEND LLVM_LIBS
|
|||
${LLVM_LIB}/libLLVMWebAssemblyCodeGen.a
|
||||
${LLVM_LIB}/libLLVMWebAssemblyAsmParser.a
|
||||
${LLVM_LIB}/libLLVMWebAssemblyDisassembler.a
|
||||
${LLVM_LIB}/libLLVMWebAssemblyUtils.a
|
||||
|
||||
${LLVM_LIB}/libLLVMSupport.a
|
||||
${LLVM_LIB}/libLLVMDemangle.a)
|
||||
|
|
|
@ -1794,7 +1794,7 @@ void BfCompiler::CreateVData(BfVDataModule* bfModule)
|
|||
auto res = bfModule->mBfIRBuilder->CreateCall(mainFunc, args);
|
||||
args.clear();
|
||||
bfModule->mBfIRBuilder->CreateCall(shutdownFunc, args);
|
||||
if (mainHasArgs)
|
||||
if (mainHasRet)
|
||||
bfModule->mBfIRBuilder->CreateRet(res);
|
||||
else
|
||||
bfModule->mBfIRBuilder->CreateRetVoid();
|
||||
|
@ -1815,7 +1815,7 @@ void BfCompiler::CreateVData(BfVDataModule* bfModule)
|
|||
}
|
||||
}
|
||||
|
||||
if ((mOptions.mPlatformType != BfPlatformType_Windows) &&
|
||||
if ((mOptions.mPlatformType != BfPlatformType_Windows) && (mainHasArgs) &&
|
||||
((targetType == BfTargetType_BeefConsoleApplication) || (targetType == BfTargetType_BeefTest)))
|
||||
{
|
||||
SmallVector<BfIRType, 2> paramTypes;
|
||||
|
@ -1827,11 +1827,8 @@ void BfCompiler::CreateVData(BfVDataModule* bfModule)
|
|||
bfModule->SetupIRMethod(NULL, setCmdLineFunc, false);
|
||||
|
||||
SmallVector<BfIRValue, 2> args;
|
||||
if (mainHasArgs)
|
||||
{
|
||||
args.push_back(bfModule->mBfIRBuilder->GetArgument(0));
|
||||
args.push_back(bfModule->mBfIRBuilder->GetArgument(1));
|
||||
}
|
||||
args.push_back(bfModule->mBfIRBuilder->GetArgument(0));
|
||||
args.push_back(bfModule->mBfIRBuilder->GetArgument(1));
|
||||
bfModule->mBfIRBuilder->CreateCall(setCmdLineFunc, args);
|
||||
}
|
||||
|
||||
|
|
|
@ -5396,6 +5396,7 @@ void BfIRBuilder::UpdateDebugLocation(BfIRValue inst)
|
|||
|
||||
void BfIRBuilder::SetCurrentDebugLocation(int line, int column, BfIRMDNode diScope, BfIRMDNode diInlinedAt)
|
||||
{
|
||||
BF_ASSERT(diScope);
|
||||
if (mDbgVerifyCodeGen && gDebugDbgLoc)
|
||||
{
|
||||
OutputDebugStrF("SetCurrentDebugLocation %d %d:%d\n", diScope.mId, line, column);
|
||||
|
|
|
@ -486,6 +486,12 @@ void BfIRCodeGen::FixValues(llvm::StructType* structType, llvm::SmallVector<llvm
|
|||
}
|
||||
}
|
||||
|
||||
void BfIRCodeGen::FixIndexer(llvm::Value*& val)
|
||||
{
|
||||
if ((int)val->getType()->getScalarSizeInBits() > mPtrSize * 8)
|
||||
val = mIRBuilder->CreateIntCast(val, llvm::Type::getInt32Ty(*mLLVMContext), false);
|
||||
}
|
||||
|
||||
BfTypeCode BfIRCodeGen::GetTypeCode(llvm::Type* type, bool isSigned)
|
||||
{
|
||||
if (type->isIntegerTy())
|
||||
|
@ -674,7 +680,9 @@ void BfIRCodeGen::SetResult(int id, llvm::MDNode* md)
|
|||
|
||||
void BfIRCodeGen::ProcessBfIRData(const BfSizedArray<uint8>& 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 +696,7 @@ void BfIRCodeGen::ProcessBfIRData(const BfSizedArray<uint8>& buffer)
|
|||
}
|
||||
}
|
||||
};
|
||||
mLLVMContext->setInlineAsmDiagnosticHandler(InlineAsmErrorHook::StaticHandler, this);
|
||||
mLLVMContext->setInlineAsmDiagnosticHandler(InlineAsmErrorHook::StaticHandler, this);*/
|
||||
|
||||
BF_ASSERT(mStream == NULL);
|
||||
mStream = new ChunkedDataBuffer();
|
||||
|
@ -924,7 +932,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 +1281,7 @@ llvm::Value* BfIRCodeGen::TryToVector(llvm::Value* value, llvm::Type* elemType)
|
|||
return mIRBuilder->CreateAlignedLoad(ptrVal0, llvm::MaybeAlign(1));
|
||||
}
|
||||
|
||||
if (auto vecType = llvm::dyn_cast<llvm::VectorType>(ptrElemType))
|
||||
if (auto vecType = llvm::dyn_cast<llvm::FixedVectorType>(ptrElemType))
|
||||
{
|
||||
if (vecType->getElementType() == elemType)
|
||||
return mIRBuilder->CreateAlignedLoad(value, llvm::MaybeAlign(1));
|
||||
|
@ -1567,7 +1575,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 +1594,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 +1613,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 +1632,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;
|
||||
|
@ -1670,7 +1678,9 @@ void BfIRCodeGen::InitTarget()
|
|||
else if (mCodeGenOptions.mOptLevel == BfOptLevel_O3)
|
||||
optLvl = llvm::CodeGenOpt::Aggressive;
|
||||
|
||||
if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_SSE)
|
||||
if (theTriple.isWasm())
|
||||
featuresStr = "+atomics,+bulk-memory,+mutable-globals,+sign-ext";
|
||||
else if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_SSE)
|
||||
featuresStr = "+sse";
|
||||
else if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_SSE2)
|
||||
featuresStr = "+sse2";
|
||||
|
@ -1683,7 +1693,7 @@ void BfIRCodeGen::InitTarget()
|
|||
else if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_AVX)
|
||||
featuresStr = "+avx";
|
||||
else if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_AVX2)
|
||||
featuresStr = "+avx2";
|
||||
featuresStr = "+avx2";
|
||||
|
||||
llvm::Optional<llvm::Reloc::Model> relocModel;
|
||||
llvm::CodeModel::Model cmModel = llvm::CodeModel::Small;
|
||||
|
@ -1787,7 +1797,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 +2321,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 +2334,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:
|
||||
|
@ -2338,7 +2348,7 @@ void BfIRCodeGen::HandleNextCmd()
|
|||
SetResult(curId, mIRBuilder->CreateBitCast(gepResult, val->getType()));
|
||||
break;
|
||||
}
|
||||
|
||||
FixIndexer(idx0);
|
||||
SetResult(curId, mIRBuilder->CreateInBoundsGEP(val, idx0));
|
||||
}
|
||||
break;
|
||||
|
@ -2347,6 +2357,8 @@ void BfIRCodeGen::HandleNextCmd()
|
|||
CMD_PARAM(llvm::Value*, val);
|
||||
CMD_PARAM(llvm::Value*, idx0);
|
||||
CMD_PARAM(llvm::Value*, idx1);
|
||||
FixIndexer(idx0);
|
||||
FixIndexer(idx1);
|
||||
llvm::Value* indices[2] = { idx0, idx1 };
|
||||
SetResult(curId, FixGEP(val, mIRBuilder->CreateInBoundsGEP(val, llvm::makeArrayRef(indices))));
|
||||
}
|
||||
|
@ -3112,7 +3124,7 @@ void BfIRCodeGen::HandleNextCmd()
|
|||
|
||||
if (result != NULL)
|
||||
{
|
||||
if (auto vecType = llvm::dyn_cast<llvm::VectorType>(result->getType()))
|
||||
if (auto vecType = llvm::dyn_cast<llvm::FixedVectorType>(result->getType()))
|
||||
{
|
||||
if (auto intType = llvm::dyn_cast<llvm::IntegerType>(vecType->getElementType()))
|
||||
{
|
||||
|
@ -3180,7 +3192,7 @@ void BfIRCodeGen::HandleNextCmd()
|
|||
|
||||
if (result != NULL)
|
||||
{
|
||||
if (auto vecType = llvm::dyn_cast<llvm::VectorType>(result->getType()))
|
||||
if (auto vecType = llvm::dyn_cast<llvm::FixedVectorType>(result->getType()))
|
||||
{
|
||||
if (auto intType = llvm::dyn_cast<llvm::IntegerType>(vecType->getElementType()))
|
||||
{
|
||||
|
@ -3336,7 +3348,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 +3559,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 +3788,17 @@ void BfIRCodeGen::HandleNextCmd()
|
|||
CMD_PARAM(int, argIdx);
|
||||
BfIRAttribute attribute = (BfIRAttribute)mStream->Read();
|
||||
BF_ASSERT(llvm::isa<llvm::CallInst>(callInst));
|
||||
((llvm::CallInst*)callInst)->addAttribute(argIdx, LLVMMapAttribute(attribute));
|
||||
auto attr = LLVMMapAttribute(attribute);
|
||||
if (attr == llvm::Attribute::StructRet)
|
||||
{
|
||||
auto funcType = ((llvm::CallInst*)callInst)->getFunctionType();
|
||||
llvm::Attribute sret = llvm::Attribute::getWithStructRetType(*mLLVMContext, funcType->getFunctionParamType(argIdx - 1)->getPointerElementType());
|
||||
((llvm::CallInst*)callInst)->addAttribute(argIdx, sret);
|
||||
}
|
||||
else
|
||||
{
|
||||
((llvm::CallInst*)callInst)->addAttribute(argIdx, attr);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case BfIRCmd_Call_AddAttribute1:
|
||||
|
@ -3794,12 +3816,11 @@ void BfIRCodeGen::HandleNextCmd()
|
|||
}
|
||||
else if (attribute == BfIRAttribute_ByVal)
|
||||
{
|
||||
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);
|
||||
auto funcType = ((llvm::CallInst*)callInst)->getFunctionType();
|
||||
llvm::Attribute byValAttr = llvm::Attribute::getWithByValType(*mLLVMContext, funcType->getFunctionParamType(argIdx - 1)->getPointerElementType());
|
||||
llvm::Attribute alignAttr = llvm::Attribute::getWithAlignment(*mLLVMContext, llvm::Align(arg));
|
||||
((llvm::CallInst*)callInst)->addAttribute(argIdx, byValAttr);
|
||||
((llvm::CallInst*)callInst)->addAttribute(argIdx, alignAttr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3854,7 +3875,13 @@ void BfIRCodeGen::HandleNextCmd()
|
|||
else
|
||||
{
|
||||
auto attr = LLVMMapAttribute(attribute);
|
||||
if (attr != llvm::Attribute::None)
|
||||
if (attr == llvm::Attribute::StructRet)
|
||||
{
|
||||
auto funcType = func->getFunctionType();
|
||||
llvm::Attribute sret = llvm::Attribute::getWithStructRetType(*mLLVMContext, funcType->getFunctionParamType(argIdx - 1)->getPointerElementType());
|
||||
func->addAttribute(argIdx, sret);
|
||||
}
|
||||
else if (attr != llvm::Attribute::None)
|
||||
func->addAttribute(argIdx, attr);
|
||||
}
|
||||
}
|
||||
|
@ -3871,12 +3898,11 @@ void BfIRCodeGen::HandleNextCmd()
|
|||
}
|
||||
else if (attribute == BfIRAttribute_ByVal)
|
||||
{
|
||||
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);
|
||||
auto funcType = func->getFunctionType();
|
||||
llvm::Attribute byValAttr = llvm::Attribute::getWithByValType(*mLLVMContext, funcType->getFunctionParamType(argIdx - 1)->getPointerElementType());
|
||||
llvm::Attribute alignAttr = llvm::Attribute::getWithAlignment(*mLLVMContext, llvm::Align(arg));
|
||||
func->addAttribute(argIdx, byValAttr);
|
||||
func->addAttribute(argIdx, alignAttr);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -3966,7 +3992,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 +5205,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 +5369,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 +5394,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 +5464,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();
|
||||
|
|
|
@ -125,6 +125,7 @@ public:
|
|||
public:
|
||||
void InitTarget();
|
||||
void FixValues(llvm::StructType* structType, llvm::SmallVector<llvm::Value*, 8>& values);
|
||||
void FixIndexer(llvm::Value*& val);
|
||||
BfTypeCode GetTypeCode(llvm::Type* type, bool isSigned);
|
||||
llvm::Type* GetLLVMType(BfTypeCode typeCode, bool& isSigned);
|
||||
BfIRTypeEntry& GetTypeEntry(int typeId);
|
||||
|
|
|
@ -2614,9 +2614,13 @@ void BfModule::UpdateSrcPos(BfAstNode* astNode, BfSrcPosFlags flags, int debugLo
|
|||
if (mCurMethodState->mCrossingMixin)
|
||||
inlineAt = BfIRMDNode();
|
||||
|
||||
if ((!useDIScope) && (mIsComptimeModule))
|
||||
if ((!useDIScope) && (mIsComptimeModule))
|
||||
useDIScope = wantDIFile;
|
||||
mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, column, useDIScope, inlineAt);
|
||||
|
||||
if (!useDIScope)
|
||||
mBfIRBuilder->ClearDebugLocation();
|
||||
else
|
||||
mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, column, useDIScope, inlineAt);
|
||||
if ((flags & BfSrcPosFlag_Expression) == 0)
|
||||
mBfIRBuilder->CreateStatementStart();
|
||||
}
|
||||
|
@ -2639,15 +2643,19 @@ void BfModule::SetIllegalSrcPos(BfSrcPosFlags flags)
|
|||
{
|
||||
if ((mBfIRBuilder->DbgHasInfo()) && (mCurMethodState != NULL))
|
||||
{
|
||||
if ((mCurMethodState->mCurScope->mDIInlinedAt) && (mCompiler->mOptions.IsCodeView()))
|
||||
auto curScope = mCurMethodState->mCurScope->mDIScope;
|
||||
if (curScope)
|
||||
{
|
||||
// Currently, CodeView does not record column positions so we can't use an illegal column position as an "invalid" marker
|
||||
mBfIRBuilder->SetCurrentDebugLocation(0, 0, mCurMethodState->mCurScope->mDIScope, mCurMethodState->mCurScope->mDIInlinedAt);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Set to whatever it previously was but at column zero, which we will know to be illegal
|
||||
mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, 0, mCurMethodState->mCurScope->mDIScope, mCurMethodState->mCurScope->mDIInlinedAt);
|
||||
if ((mCurMethodState->mCurScope->mDIInlinedAt) && (mCompiler->mOptions.IsCodeView()))
|
||||
{
|
||||
// Currently, CodeView does not record column positions so we can't use an illegal column position as an "invalid" marker
|
||||
mBfIRBuilder->SetCurrentDebugLocation(0, 0, curScope, mCurMethodState->mCurScope->mDIInlinedAt);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Set to whatever it previously was but at column zero, which we will know to be illegal
|
||||
mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, 0, curScope, mCurMethodState->mCurScope->mDIInlinedAt);
|
||||
}
|
||||
}
|
||||
|
||||
if ((flags & BfSrcPosFlag_Expression) == 0)
|
||||
|
|
|
@ -148,7 +148,8 @@ bool BfModule::AddDeferredCallEntry(BfDeferredCallEntry* deferredCallEntry, BfSc
|
|||
mBfIRBuilder->SetInsertPointAtStart(mCurMethodState->mIRInitBlock);
|
||||
|
||||
auto scopeHead = &mCurMethodState->mHeadScope;
|
||||
mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, 0, scopeHead->mDIScope, BfIRMDNode());
|
||||
if (scopeHead->mDIScope)
|
||||
mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, 0, scopeHead->mDIScope, BfIRMDNode());
|
||||
|
||||
if (WantsLifetimes())
|
||||
mBfIRBuilder->CreateLifetimeStart(listEntry->mDynCallTail);
|
||||
|
@ -164,7 +165,8 @@ bool BfModule::AddDeferredCallEntry(BfDeferredCallEntry* deferredCallEntry, BfSc
|
|||
|
||||
mBfIRBuilder->SetInsertPoint(mCurMethodState->mIRInitBlock);
|
||||
|
||||
mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, 0, scopeHead->mDIScope, BfIRMDNode());
|
||||
if (scopeHead->mDIScope)
|
||||
mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, 0, scopeHead->mDIScope, BfIRMDNode());
|
||||
mBfIRBuilder->CreateStatementStart();
|
||||
|
||||
//TODO: Make this work for LLVM - we need a proper debug location
|
||||
|
|
|
@ -160,7 +160,7 @@
|
|||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_11_0_0\llvm\include;..\extern\llvm_win64_11_0_0\include;..\extern\llvm-project_11_0_0\llvm\lib\Target;..\extern\llvm_win64_11_0_0\lib\Target\AArch64;..\extern\llvm_win64_11_0_0\lib\Target\X86;..\extern\llvm-project_11_0_0\llvm\tools\clang\include;..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\include</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_13_0_1\llvm\include;..\extern\llvm_win64_13_0_1\include;..\extern\llvm-project_13_0_1\llvm\lib\Target;..\extern\llvm_win64_13_0_1\lib\Target\AArch64;..\extern\llvm_win64_13_0_1\lib\Target\X86;..\extern\llvm-project_13_0_1\llvm\tools\clang\include;..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\include</AdditionalIncludeDirectories>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<AdditionalOptions>-D_SCL_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
|
@ -171,8 +171,8 @@
|
|||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
|
||||
<OutputFile>$(SolutionDir)\IDE\dist\$(TargetName).dll</OutputFile>
|
||||
<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;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>..\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</AdditionalLibraryDirectories>
|
||||
<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)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>..\extern\llvm_win64_13_0_1\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</AdditionalLibraryDirectories>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<ImportLibrary>$(SolutionDir)\IDE\dist\$(TargetName).lib</ImportLibrary>
|
||||
<IgnoreSpecificDefaultLibraries>MSVCRT</IgnoreSpecificDefaultLibraries>
|
||||
|
@ -219,7 +219,7 @@
|
|||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>zBP_DISABLED;WIN32;NDEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_11_0_0\llvm\include;..\extern\llvm_win64_11_0_0\include;..\extern\llvm-project_11_0_0\llvm\lib\Target;..\extern\llvm_win64_11_0_0\lib\Target\X86;..\extern\llvm-project_11_0_0\llvm\tools\clang\include;..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\include</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_13_0_1\llvm\include;..\extern\llvm_win64_13_0_1\include;..\extern\llvm-project_13_0_1\llvm\lib\Target;..\extern\llvm_win64_13_0_1\lib\Target\X86;..\extern\llvm-project_13_0_1\llvm\tools\clang\include;..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\include</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
</ClCompile>
|
||||
|
@ -229,8 +229,8 @@
|
|||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>$(SolutionDir)\IDE\dist\$(TargetName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\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</AdditionalLibraryDirectories>
|
||||
<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;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>..\extern\llvm_win64_13_0_1\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</AdditionalLibraryDirectories>
|
||||
<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)</AdditionalDependencies>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<FullProgramDatabaseFile>true</FullProgramDatabaseFile>
|
||||
<ImportLibrary>$(SolutionDir)\IDE\dist\$(TargetName).lib</ImportLibrary>
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue