Author: ericwf Date: Wed Jun 21 16:42:50 2017 New Revision: 305955 URL: http://llvm.org/viewvc/llvm-project?rev=305955&view=rev Log: Attempt to avoid static init ordering issues with globalMemCounter
Modified: libcxx/trunk/test/support/count_new.hpp Modified: libcxx/trunk/test/support/count_new.hpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/count_new.hpp?rev=305955&r1=305954&r2=305955&view=diff ============================================================================== --- libcxx/trunk/test/support/count_new.hpp (original) +++ libcxx/trunk/test/support/count_new.hpp Wed Jun 21 16:42:50 2017 @@ -231,12 +231,17 @@ public: const bool MemCounter::disable_checking = false; #endif -MemCounter globalMemCounter((MemCounter::MemCounterCtorArg_())); +inline MemCounter* getGlobalMemCounter() { + static MemCounter counter((MemCounter::MemCounterCtorArg_())); + return &counter; +} + +MemCounter &globalMemCounter = *getGlobalMemCounter(); #ifndef DISABLE_NEW_COUNT void* operator new(std::size_t s) TEST_THROW_SPEC(std::bad_alloc) { - globalMemCounter.newCalled(s); + getGlobalMemCounter()->newCalled(s); void* ret = std::malloc(s); if (ret == nullptr) detail::throw_bad_alloc_helper(); @@ -245,21 +250,21 @@ void* operator new(std::size_t s) TEST_T void operator delete(void* p) TEST_NOEXCEPT { - globalMemCounter.deleteCalled(p); + getGlobalMemCounter()->deleteCalled(p); std::free(p); } void* operator new[](std::size_t s) TEST_THROW_SPEC(std::bad_alloc) { - globalMemCounter.newArrayCalled(s); + getGlobalMemCounter()->newArrayCalled(s); return operator new(s); } void operator delete[](void* p) TEST_NOEXCEPT { - globalMemCounter.deleteArrayCalled(p); + getGlobalMemCounter()->deleteArrayCalled(p); operator delete(p); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits