summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGCXXABI.h
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-12-01 01:10:48 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-12-01 01:10:48 +0000
commit5a99c49d2e232c3a5076b2f99549ccd595598a4c (patch)
tree7961878cd4a73b96ba7506a7f9cafd199dce4b84 /clang/lib/CodeGen/CGCXXABI.h
parent21ed3b13bd1a9c9d3cca49553cdd7274c4de5993 (diff)
downloadbcm5719-llvm-5a99c49d2e232c3a5076b2f99549ccd595598a4c.tar.gz
bcm5719-llvm-5a99c49d2e232c3a5076b2f99549ccd595598a4c.zip
Fix use-after-free when a C++ thread_local variable gets replaced (because its
type changes when the initializer is attached). Don't hold onto the GlobalVariable*; recompute it from the VarDecl* instead. llvm-svn: 254359
Diffstat (limited to 'clang/lib/CodeGen/CGCXXABI.h')
-rw-r--r--clang/lib/CodeGen/CGCXXABI.h6
1 files changed, 2 insertions, 4 deletions
diff --git a/clang/lib/CodeGen/CGCXXABI.h b/clang/lib/CodeGen/CGCXXABI.h
index 7667361f7b9..3f240b1802b 100644
--- a/clang/lib/CodeGen/CGCXXABI.h
+++ b/clang/lib/CodeGen/CGCXXABI.h
@@ -538,11 +538,9 @@ public:
/// thread_local variables, a list of functions to perform the
/// initialization.
virtual void EmitThreadLocalInitFuncs(
- CodeGenModule &CGM,
- ArrayRef<std::pair<const VarDecl *, llvm::GlobalVariable *>>
- CXXThreadLocals,
+ CodeGenModule &CGM, ArrayRef<const VarDecl *> CXXThreadLocals,
ArrayRef<llvm::Function *> CXXThreadLocalInits,
- ArrayRef<llvm::GlobalVariable *> CXXThreadLocalInitVars) = 0;
+ ArrayRef<const VarDecl *> CXXThreadLocalInitVars) = 0;
// Determine if references to thread_local global variables can be made
// directly or require access through a thread wrapper function.
OpenPOWER on IntegriCloud