[cfe-commits] r49944 - in /cfe/trunk/lib/CodeGen: CodeGenModule.cpp CodeGenModule.h
Nate Begeman
natebegeman at mac.com
Fri Apr 18 16:44:02 PDT 2008
Author: sampo
Date: Fri Apr 18 18:43:57 2008
New Revision: 49944
URL: http://llvm.org/viewvc/llvm-project?rev=49944&view=rev
Log:
Add support to module codegen for adding and emitting annotations
Modified:
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h
Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=49944&r1=49943&r2=49944&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Fri Apr 18 18:43:57 2008
@@ -44,6 +44,7 @@
if (ObjCInitFunction)
AddGlobalCtor(ObjCInitFunction);
EmitGlobalCtors();
+ EmitAnnotations();
delete Runtime;
}
@@ -123,6 +124,22 @@
+void CodeGenModule::EmitAnnotations() {
+ if (Annotations.empty())
+ return;
+
+ // Create a new global variable for the ConstantStruct in the Module.
+ llvm::Constant *Array =
+ llvm::ConstantArray::get(llvm::ArrayType::get(Annotations[0]->getType(),
+ Annotations.size()),
+ Annotations);
+ llvm::GlobalValue *gv =
+ new llvm::GlobalVariable(Array->getType(), false,
+ llvm::GlobalValue::AppendingLinkage, Array,
+ "llvm.global.annotations", &TheModule);
+ gv->setSection("llvm.metadata");
+}
+
/// ReplaceMapValuesWith - This is a really slow and bad function that
/// searches for any entries in GlobalDeclMap that point to OldVal, changing
/// them to point to NewVal. This is badbadbad, FIXME!
Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=49944&r1=49943&r2=49944&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.h Fri Apr 18 18:43:57 2008
@@ -59,6 +59,7 @@
llvm::Function *MemSetFn;
llvm::DenseMap<const Decl*, llvm::Constant*> GlobalDeclMap;
std::vector<llvm::Constant*> GlobalCtors;
+ std::vector<llvm::Constant*> Annotations;
llvm::StringMap<llvm::Constant*> CFConstantStringMap;
llvm::StringMap<llvm::Constant*> ConstantStringMap;
@@ -99,6 +100,8 @@
void AddGlobalCtor(llvm::Function * Ctor);
void EmitGlobalCtors(void);
+ void AddAnnotation(llvm::Constant *C) { Annotations.push_back(C); }
+ void EmitAnnotations(void);
void EmitObjCMethod(const ObjCMethodDecl *OMD);
void EmitFunction(const FunctionDecl *FD);
More information about the cfe-commits
mailing list