diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2024-07-27 23:34:35 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2024-10-23 18:26:01 +0000 |
commit | 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583 (patch) | |
tree | 6cf5ab1f05330c6773b1f3f64799d56a9c7a1faa /contrib/llvm-project/llvm/lib/IR/Module.cpp | |
parent | 6b9f7133aba44189d9625c352bc2c2a59baf18ef (diff) | |
parent | ac9a064cb179f3425b310fa2847f8764ac970a4d (diff) |
Diffstat (limited to 'contrib/llvm-project/llvm/lib/IR/Module.cpp')
-rw-r--r-- | contrib/llvm-project/llvm/lib/IR/Module.cpp | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/contrib/llvm-project/llvm/lib/IR/Module.cpp b/contrib/llvm-project/llvm/lib/IR/Module.cpp index eeb90a6cb3c4..c966c53d09ba 100644 --- a/contrib/llvm-project/llvm/lib/IR/Module.cpp +++ b/contrib/llvm-project/llvm/lib/IR/Module.cpp @@ -54,6 +54,8 @@ using namespace llvm; +extern cl::opt<bool> UseNewDbgInfoFormat; + //===----------------------------------------------------------------------===// // Methods to implement the globals and functions lists. // @@ -72,7 +74,7 @@ template class llvm::SymbolTableListTraits<GlobalIFunc>; Module::Module(StringRef MID, LLVMContext &C) : Context(C), ValSymTab(std::make_unique<ValueSymbolTable>(-1)), ModuleID(std::string(MID)), SourceFileName(std::string(MID)), DL(""), - IsNewDbgInfoFormat(false) { + IsNewDbgInfoFormat(UseNewDbgInfoFormat) { Context.addModule(this); } @@ -85,6 +87,28 @@ Module::~Module() { IFuncList.clear(); } +void Module::removeDebugIntrinsicDeclarations() { + auto *DeclareIntrinsicFn = + Intrinsic::getDeclaration(this, Intrinsic::dbg_declare); + assert((!isMaterialized() || DeclareIntrinsicFn->hasZeroLiveUses()) && + "Debug declare intrinsic should have had uses removed."); + DeclareIntrinsicFn->eraseFromParent(); + auto *ValueIntrinsicFn = + Intrinsic::getDeclaration(this, Intrinsic::dbg_value); + assert((!isMaterialized() || ValueIntrinsicFn->hasZeroLiveUses()) && + "Debug value intrinsic should have had uses removed."); + ValueIntrinsicFn->eraseFromParent(); + auto *AssignIntrinsicFn = + Intrinsic::getDeclaration(this, Intrinsic::dbg_assign); + assert((!isMaterialized() || AssignIntrinsicFn->hasZeroLiveUses()) && + "Debug assign intrinsic should have had uses removed."); + AssignIntrinsicFn->eraseFromParent(); + auto *LabelntrinsicFn = Intrinsic::getDeclaration(this, Intrinsic::dbg_label); + assert((!isMaterialized() || LabelntrinsicFn->hasZeroLiveUses()) && + "Debug label intrinsic should have had uses removed."); + LabelntrinsicFn->eraseFromParent(); +} + std::unique_ptr<RandomNumberGenerator> Module::createRNG(const StringRef Name) const { SmallString<32> Salt(Name); @@ -149,10 +173,9 @@ FunctionCallee Module::getOrInsertFunction(StringRef Name, FunctionType *Ty, if (!F) { // Nope, add it Function *New = Function::Create(Ty, GlobalVariable::ExternalLinkage, - DL.getProgramAddressSpace(), Name); + DL.getProgramAddressSpace(), Name, this); if (!New->isIntrinsic()) // Intrinsics get attrs set on construction New->setAttributes(AttributeList); - FunctionList.push_back(New); return {Ty, New}; // Return the new prototype. } @@ -364,8 +387,7 @@ void Module::setModuleFlag(ModFlagBehavior Behavior, StringRef Key, Metadata *Val) { NamedMDNode *ModFlags = getOrInsertModuleFlagsMetadata(); // Replace the flag if it already exists. - for (unsigned I = 0, E = ModFlags->getNumOperands(); I != E; ++I) { - MDNode *Flag = ModFlags->getOperand(I); + for (MDNode *Flag : ModFlags->operands()) { ModFlagBehavior MFB; MDString *K = nullptr; Metadata *V = nullptr; @@ -376,6 +398,15 @@ void Module::setModuleFlag(ModFlagBehavior Behavior, StringRef Key, } addModuleFlag(Behavior, Key, Val); } +void Module::setModuleFlag(ModFlagBehavior Behavior, StringRef Key, + Constant *Val) { + setModuleFlag(Behavior, Key, ConstantAsMetadata::get(Val)); +} +void Module::setModuleFlag(ModFlagBehavior Behavior, StringRef Key, + uint32_t Val) { + Type *Int32Ty = Type::getInt32Ty(Context); + setModuleFlag(Behavior, Key, ConstantInt::get(Int32Ty, Val)); +} void Module::setDataLayout(StringRef Desc) { DL.reset(Desc); @@ -861,7 +892,7 @@ StringRef Module::getDarwinTargetVariantTriple() const { } void Module::setDarwinTargetVariantTriple(StringRef T) { - addModuleFlag(ModFlagBehavior::Override, "darwin.target_variant.triple", + addModuleFlag(ModFlagBehavior::Warning, "darwin.target_variant.triple", MDString::get(getContext(), T)); } |