summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/Unix/ThreadLocal.inc
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2013-12-19 20:32:44 +0000
committerHans Wennborg <hans@hanshq.net>2013-12-19 20:32:44 +0000
commitfabf8bfdeadfa6f95bc3f1851425b3ef5967f254 (patch)
treef9253228d7dbaba834aa4d4c2ba6709efb447b46 /llvm/lib/Support/Unix/ThreadLocal.inc
parentfb9e92b1670c2e6fd2d1588ea982c618e559d8aa (diff)
downloadbcm5719-llvm-fabf8bfdeadfa6f95bc3f1851425b3ef5967f254.tar.gz
bcm5719-llvm-fabf8bfdeadfa6f95bc3f1851425b3ef5967f254.zip
Make sys::ThreadLocal<> zero-initialized on non-thread builds (PR18205)
According to the docs, ThreadLocal<>::get() should return NULL if no object has been set. This patch makes that the case also for non-thread builds and adds a very basic unit test to check it. (This was causing PR18205 because PrettyStackTraceHead didn't get zero- initialized and we'd crash trying to read past the end of that list. We didn't notice this so much on Linux since we'd crash after printing all the entries, but on Mac we print into a SmallString, and would crash before printing that.) llvm-svn: 197718
Diffstat (limited to 'llvm/lib/Support/Unix/ThreadLocal.inc')
-rw-r--r--llvm/lib/Support/Unix/ThreadLocal.inc2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Support/Unix/ThreadLocal.inc b/llvm/lib/Support/Unix/ThreadLocal.inc
index 2b4c9017cd9..f14d0fa3d52 100644
--- a/llvm/lib/Support/Unix/ThreadLocal.inc
+++ b/llvm/lib/Support/Unix/ThreadLocal.inc
@@ -18,7 +18,7 @@
namespace llvm {
using namespace sys;
-ThreadLocalImpl::ThreadLocalImpl() { }
+ThreadLocalImpl::ThreadLocalImpl() : data() { }
ThreadLocalImpl::~ThreadLocalImpl() { }
void ThreadLocalImpl::setInstance(const void* d) { data = const_cast<void*>(d);}
const void* ThreadLocalImpl::getInstance() { return data; }
OpenPOWER on IntegriCloud