summaryrefslogtreecommitdiffstats
path: root/llvm/unittests
diff options
context:
space:
mode:
authorJuergen Ributzka <juergen@apple.com>2013-11-19 03:08:35 +0000
committerJuergen Ributzka <juergen@apple.com>2013-11-19 03:08:35 +0000
commit05c5a93283b830032532321fdc4c0fe6b8473aac (patch)
treea6dd62ef804f1e97d576d5741db7fb04f1ce771e /llvm/unittests
parentef9315d942a0499141769e3c53c8830ee1e74841 (diff)
downloadbcm5719-llvm-05c5a93283b830032532321fdc4c0fe6b8473aac.tar.gz
bcm5719-llvm-05c5a93283b830032532321fdc4c0fe6b8473aac.zip
[weak vtables] Place class definitions into anonymous namespaces to prevent weak vtables.
This patch places class definitions in implementation files into anonymous namespaces to prevent weak vtables. This eliminates the need of providing an out-of-line definition to pin the vtable explicitly to the file. llvm-svn: 195092
Diffstat (limited to 'llvm/unittests')
-rw-r--r--llvm/unittests/ADT/IntrusiveRefCntPtrTest.cpp11
-rw-r--r--llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp21
-rw-r--r--llvm/unittests/ExecutionEngine/MCJIT/MCJITMultipleModuleTest.cpp10
-rw-r--r--llvm/unittests/ExecutionEngine/MCJIT/MCJITTest.cpp12
4 files changed, 20 insertions, 34 deletions
diff --git a/llvm/unittests/ADT/IntrusiveRefCntPtrTest.cpp b/llvm/unittests/ADT/IntrusiveRefCntPtrTest.cpp
index a74e05e7b24..c67ec130912 100644
--- a/llvm/unittests/ADT/IntrusiveRefCntPtrTest.cpp
+++ b/llvm/unittests/ADT/IntrusiveRefCntPtrTest.cpp
@@ -10,14 +10,13 @@
#include "llvm/ADT/IntrusiveRefCntPtr.h"
#include "gtest/gtest.h"
-namespace llvm {
-
-struct VirtualRefCounted : public RefCountedBaseVPTR {
- virtual void f();
+namespace {
+struct VirtualRefCounted : public llvm::RefCountedBaseVPTR {
+ virtual void f() {}
};
+}
-// Provide out-of-line definition to prevent weak vtable.
-void VirtualRefCounted::f() {}
+namespace llvm {
// Run this test with valgrind to detect memory leaks.
TEST(IntrusiveRefCntPtr, RefCountedBaseVPTRCopyDoesNotLeak) {
diff --git a/llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp b/llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp
index 15c58c480aa..46d6d9b8a9a 100644
--- a/llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp
+++ b/llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp
@@ -59,6 +59,7 @@ static void roundTripDestroy(void *object) {
delete static_cast<SectionMemoryManager*>(object);
}
+namespace {
class MCJITCAPITest : public testing::Test, public MCJITTestAPICommon {
protected:
MCJITCAPITest() {
@@ -83,8 +84,14 @@ protected:
UnsupportedOSs.push_back(Triple::Cygwin);
}
- virtual void SetUp();
-
+ virtual void SetUp() {
+ didCallAllocateCodeSection = false;
+ Module = 0;
+ Function = 0;
+ Engine = 0;
+ Error = 0;
+ }
+
virtual void TearDown() {
if (Engine)
LLVMDisposeExecutionEngine(Engine);
@@ -150,15 +157,7 @@ protected:
LLVMExecutionEngineRef Engine;
char *Error;
};
-
-// Provide out-of-line definition to prevent weak vtable.
-void MCJITCAPITest::SetUp() {
- didCallAllocateCodeSection = false;
- Module = 0;
- Function = 0;
- Engine = 0;
- Error = 0;
-}
+} // end anonymous namespace
TEST_F(MCJITCAPITest, simple_function) {
SKIP_UNSUPPORTED_PLATFORM;
diff --git a/llvm/unittests/ExecutionEngine/MCJIT/MCJITMultipleModuleTest.cpp b/llvm/unittests/ExecutionEngine/MCJIT/MCJITMultipleModuleTest.cpp
index cea6274656b..7c3239ea259 100644
--- a/llvm/unittests/ExecutionEngine/MCJIT/MCJITMultipleModuleTest.cpp
+++ b/llvm/unittests/ExecutionEngine/MCJIT/MCJITMultipleModuleTest.cpp
@@ -18,16 +18,10 @@
using namespace llvm;
-class MCJITMultipleModuleTest : public testing::Test, public MCJITTestBase {
-public:
- virtual ~MCJITMultipleModuleTest();
-};
-
-// Provide out-of-line definition to prevent weak vtable.
-MCJITMultipleModuleTest::~MCJITMultipleModuleTest() {}
-
namespace {
+class MCJITMultipleModuleTest : public testing::Test, public MCJITTestBase {};
+
// FIXME: ExecutionEngine has no support empty modules
/*
TEST_F(MCJITMultipleModuleTest, multiple_empty_modules) {
diff --git a/llvm/unittests/ExecutionEngine/MCJIT/MCJITTest.cpp b/llvm/unittests/ExecutionEngine/MCJIT/MCJITTest.cpp
index 9786befd720..fab81551fa5 100644
--- a/llvm/unittests/ExecutionEngine/MCJIT/MCJITTest.cpp
+++ b/llvm/unittests/ExecutionEngine/MCJIT/MCJITTest.cpp
@@ -18,19 +18,13 @@
using namespace llvm;
+namespace {
+
class MCJITTest : public testing::Test, public MCJITTestBase {
protected:
-
- virtual void SetUp();
+ virtual void SetUp() { M.reset(createEmptyModule("<main>")); }
};
-// Provide out-of-line definition to prevent weak vtable.
-void MCJITTest::SetUp() {
- M.reset(createEmptyModule("<main>"));
-}
-
-namespace {
-
// FIXME: Ensure creating an execution engine does not crash when constructed
// with a null module.
/*
OpenPOWER on IntegriCloud