summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenModule.h
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-12-09 14:59:08 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-12-09 14:59:08 +0000
commitc0ff7448d758fae2168bb0d09a5893d6a7aeb5ed (patch)
treedda3f298b9ac530bad7159c02e41fd651668dbef /clang/lib/CodeGen/CodeGenModule.h
parentc3cde36ead0f088c3948329ac0e6f493a9422a86 (diff)
downloadbcm5719-llvm-c0ff7448d758fae2168bb0d09a5893d6a7aeb5ed.tar.gz
bcm5719-llvm-c0ff7448d758fae2168bb0d09a5893d6a7aeb5ed.zip
When we decide to output a deferred decl, remember the llvm GlobalValue.
We can reuse it to avoid a DenseMap+StringMap lookup to find if it was already emitted or not. This fixes a 2010 TODO. llvm-svn: 196785
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.h')
-rw-r--r--clang/lib/CodeGen/CodeGenModule.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.h b/clang/lib/CodeGen/CodeGenModule.h
index 098aa035528..ec61c596a05 100644
--- a/clang/lib/CodeGen/CodeGenModule.h
+++ b/clang/lib/CodeGen/CodeGenModule.h
@@ -273,7 +273,15 @@ class CodeGenModule : public CodeGenTypeCache {
/// DeferredDeclsToEmit - This is a list of deferred decls which we have seen
/// that *are* actually referenced. These get code generated when the module
/// is done.
- std::vector<GlobalDecl> DeferredDeclsToEmit;
+ struct DeferredGlobal {
+ DeferredGlobal(llvm::GlobalValue *GV, GlobalDecl GD) : GV(GV), GD(GD) {}
+ llvm::AssertingVH<llvm::GlobalValue> GV;
+ GlobalDecl GD;
+ };
+ std::vector<DeferredGlobal> DeferredDeclsToEmit;
+ void addDeferredDeclToEmit(llvm::GlobalValue *GV, GlobalDecl GD) {
+ DeferredDeclsToEmit.push_back(DeferredGlobal(GV, GD));
+ }
/// List of alias we have emitted. Used to make sure that what they point to
/// is defined once we get to the end of the of the translation unit.
@@ -433,6 +441,8 @@ public:
~CodeGenModule();
+ void clear();
+
/// Release - Finalize LLVM code generation.
void Release();
OpenPOWER on IntegriCloud