aboutsummaryrefslogtreecommitdiff
path: root/clang/lib
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/CodeGen/CodeGenModule.cpp20
-rw-r--r--clang/lib/CodeGen/CodeGenModule.h4
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;