diff options
author | John McCall <rjmccall@apple.com> | 2012-03-30 21:00:39 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2012-03-30 21:00:39 +0000 |
commit | 355bba72ca52c4a70ca3c3802412c03a6ec31f24 (patch) | |
tree | 25e5fac38289d449ffd344c626ef9f6fa92abcbe /lib/CodeGen/CodeGenModule.h | |
parent | ba1da14e79c1ecd49306e5175b69baa1e7ed4293 (diff) |
Make sure we unique static-local decls across multiple emissions of
the function body, but do so in a way that doesn't make any assumptions
about the static local actually having a proper, unique mangling,
since apparently we don't do that correctly at all.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153776 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CodeGenModule.h')
-rw-r--r-- | lib/CodeGen/CodeGenModule.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/CodeGen/CodeGenModule.h b/lib/CodeGen/CodeGenModule.h index 5719afb612..38f5008d89 100644 --- a/lib/CodeGen/CodeGenModule.h +++ b/lib/CodeGen/CodeGenModule.h @@ -280,6 +280,7 @@ class CodeGenModule : public CodeGenTypeCache { llvm::StringMap<llvm::Constant*> CFConstantStringMap; llvm::StringMap<llvm::GlobalVariable*> ConstantStringMap; llvm::DenseMap<const Decl*, llvm::Constant *> StaticLocalDeclMap; + llvm::DenseMap<const Decl*, llvm::GlobalVariable*> StaticLocalDeclGuardMap; llvm::DenseMap<QualType, llvm::Constant *> AtomicSetterHelperFnMap; llvm::DenseMap<QualType, llvm::Constant *> AtomicGetterHelperFnMap; @@ -405,6 +406,14 @@ public: StaticLocalDeclMap[D] = C; } + llvm::GlobalVariable *getStaticLocalDeclGuardAddress(const VarDecl *D) { + return StaticLocalDeclGuardMap[D]; + } + void setStaticLocalDeclGuardAddress(const VarDecl *D, + llvm::GlobalVariable *C) { + StaticLocalDeclGuardMap[D] = C; + } + llvm::Constant *getAtomicSetterHelperFnMap(QualType Ty) { return AtomicSetterHelperFnMap[Ty]; } |