diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 20 | ||||
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.h | 4 |
2 files changed, 2 insertions, 22 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 0ee9c4a..8b0c934 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -697,7 +697,6 @@ void CodeGenModule::checkAliases() { void CodeGenModule::clear() { DeferredDeclsToEmit.clear(); EmittedDeferredDecls.clear(); - DeferredAnnotations.clear(); if (OpenMPRuntime) OpenMPRuntime->clear(); } @@ -3094,10 +3093,6 @@ void CodeGenModule::EmitVTablesOpportunistically() { } void CodeGenModule::EmitGlobalAnnotations() { - for (const auto& [MangledName, VD] : DeferredAnnotations) - AddGlobalAnnotations(VD, GetGlobalValue(MangledName)); - DeferredAnnotations.clear(); - if (Annotations.empty()) return; @@ -3602,14 +3597,6 @@ void CodeGenModule::EmitGlobal(GlobalDecl GD) { // Ignore declarations, they will be emitted on their first use. if (const auto *FD = dyn_cast<FunctionDecl>(Global)) { - // Update deferred annotations with the latest declaration if the function - // function was already used or defined. - if (FD->hasAttr<AnnotateAttr>()) { - StringRef MangledName = getMangledName(GD); - if (GetGlobalValue(MangledName)) - DeferredAnnotations[MangledName] = FD; - } - // Forward declarations are emitted lazily on first use. if (!FD->doesThisDeclarationHaveABody()) { if (!FD->doesDeclarationForceExternallyVisibleDefinition()) @@ -4383,11 +4370,6 @@ llvm::Constant *CodeGenModule::GetOrCreateLLVMFunction( llvm::Function::Create(FTy, llvm::Function::ExternalLinkage, Entry ? StringRef() : MangledName, &getModule()); - // Store the declaration associated with this function so it is potentially - // updated by further declarations or definitions and emitted at the end. - if (D && D->hasAttr<AnnotateAttr>()) - DeferredAnnotations[MangledName] = cast<ValueDecl>(D); - // If we already created a function with the same mangled name (but different // type) before, take its name and add it to the list of functions to be // replaced with F at the end of CodeGen. @@ -5682,6 +5664,8 @@ void CodeGenModule::EmitGlobalFunctionDefinition(GlobalDecl GD, AddGlobalCtor(Fn, CA->getPriority()); if (const DestructorAttr *DA = D->getAttr<DestructorAttr>()) AddGlobalDtor(Fn, DA->getPriority(), true); + if (D->hasAttr<AnnotateAttr>()) + AddGlobalAnnotations(D, Fn); if (getLangOpts().OpenMP && D->hasAttr<OMPDeclareTargetDeclAttr>()) getOpenMPRuntime().emitDeclareTargetFunction(D, GV); } diff --git a/clang/lib/CodeGen/CodeGenModule.h b/clang/lib/CodeGen/CodeGenModule.h index 8b0d68a..073b471 100644 --- a/clang/lib/CodeGen/CodeGenModule.h +++ b/clang/lib/CodeGen/CodeGenModule.h @@ -431,10 +431,6 @@ private: /// Global annotations. std::vector<llvm::Constant*> Annotations; - // Store deferred function annotations so they can be emitted at the end with - // most up to date ValueDecl that will have all the inherited annotations. - llvm::DenseMap<StringRef, const ValueDecl *> DeferredAnnotations; - /// Map used to get unique annotation strings. llvm::StringMap<llvm::Constant*> AnnotationStrings; |