Partially revert change in r181200 that tried to simplify JIT unit test #ifdefs.

The export list for this test requires the following symbols to be available:
  JITTest_AvailableExternallyFunction
  JITTest_AvailableExternallyGlobal
The change in r181200 commented them out, which caused the test to fail to
link, at least on Darwin. I have only reverted the change for arm, since I
can't test the other targets and since it sounds like that change was fixing
real problems for those other targets. It should be possible to rearrange the
code to keep those definitions outside the #ifdefs, but that should be done by
someone who can reproduce the problems that r181200 was trying to fix.

llvm-svn: 182233
This commit is contained in:
Bob Wilson 2013-05-20 06:13:09 +00:00
parent dad0022424
commit de1f36eea4

View File

@ -35,8 +35,8 @@ using namespace llvm;
namespace { namespace {
// Tests on ARM, PowerPC and SystemZ disabled as we're running the old jit // Tests on PowerPC and SystemZ disabled as we're running the old jit
#if !defined(__arm__) && !defined(__powerpc__) && !defined(__s390__) #if !defined(__powerpc__) && !defined(__s390__)
Function *makeReturnGlobal(std::string Name, GlobalVariable *G, Module *M) { Function *makeReturnGlobal(std::string Name, GlobalVariable *G, Module *M) {
std::vector<Type*> params; std::vector<Type*> params;
@ -185,6 +185,9 @@ class JITTest : public testing::Test {
OwningPtr<ExecutionEngine> TheJIT; OwningPtr<ExecutionEngine> TheJIT;
}; };
// Tests on ARM disabled as we're running the old jit
#if !defined(__arm__)
// Regression test for a bug. The JIT used to allocate globals inside the same // Regression test for a bug. The JIT used to allocate globals inside the same
// memory block used for the function, and when the function code was freed, // memory block used for the function, and when the function code was freed,
// the global was left in the same place. This test allocates a function // the global was left in the same place. This test allocates a function
@ -253,6 +256,11 @@ TEST(JIT, GlobalInFunction) {
EXPECT_EQ(3, *GPtr); EXPECT_EQ(3, *GPtr);
} }
#endif // !defined(__arm__)
// ARM tests disabled pending fix for PR10783.
#if !defined(__arm__)
int PlusOne(int arg) { int PlusOne(int arg) {
return arg + 1; return arg + 1;
} }
@ -413,6 +421,7 @@ TEST_F(JITTest, ModuleDeletion) {
EXPECT_EQ(RJMM->startFunctionBodyCalls.size(), EXPECT_EQ(RJMM->startFunctionBodyCalls.size(),
RJMM->deallocateFunctionBodyCalls.size()); RJMM->deallocateFunctionBodyCalls.size());
} }
#endif // !defined(__arm__)
// ARM, MIPS and PPC still emit stubs for calls since the target may be // ARM, MIPS and PPC still emit stubs for calls since the target may be
// too far away to call directly. This #if can probably be removed when // too far away to call directly. This #if can probably be removed when
@ -458,6 +467,9 @@ TEST_F(JITTest, NoStubs) {
} }
#endif // !ARM && !PPC #endif // !ARM && !PPC
// Tests on ARM disabled as we're running the old jit
#if !defined(__arm__)
TEST_F(JITTest, FunctionPointersOutliveTheirCreator) { TEST_F(JITTest, FunctionPointersOutliveTheirCreator) {
TheJIT->DisableLazyCompilation(true); TheJIT->DisableLazyCompilation(true);
LoadAssembly("define i8()* @get_foo_addr() { " LoadAssembly("define i8()* @get_foo_addr() { "
@ -492,6 +504,9 @@ TEST_F(JITTest, FunctionPointersOutliveTheirCreator) {
#endif #endif
} }
#endif //!defined(__arm__)
// Tests on ARM disabled as we're running the old jit. In addition,
// ARM does not have an implementation of replaceMachineCodeForFunction(), // ARM does not have an implementation of replaceMachineCodeForFunction(),
// so recompileAndRelinkFunction doesn't work. // so recompileAndRelinkFunction doesn't work.
#if !defined(__arm__) #if !defined(__arm__)
@ -535,6 +550,9 @@ extern "C" int32_t JITTest_AvailableExternallyGlobal;
int32_t JITTest_AvailableExternallyGlobal LLVM_ATTRIBUTE_USED = 42; int32_t JITTest_AvailableExternallyGlobal LLVM_ATTRIBUTE_USED = 42;
namespace { namespace {
// Tests on ARM disabled as we're running the old jit
#if !defined(__arm__)
TEST_F(JITTest, AvailableExternallyGlobalIsntEmitted) { TEST_F(JITTest, AvailableExternallyGlobalIsntEmitted) {
TheJIT->DisableLazyCompilation(true); TheJIT->DisableLazyCompilation(true);
LoadAssembly("@JITTest_AvailableExternallyGlobal = " LoadAssembly("@JITTest_AvailableExternallyGlobal = "
@ -551,6 +569,7 @@ TEST_F(JITTest, AvailableExternallyGlobalIsntEmitted) {
EXPECT_EQ(42, loader()) << "func should return 42 from the external global," EXPECT_EQ(42, loader()) << "func should return 42 from the external global,"
<< " not 7 from the IR version."; << " not 7 from the IR version.";
} }
#endif //!defined(__arm__)
} // anonymous namespace } // anonymous namespace
// This function is intentionally defined differently in the statically-compiled // This function is intentionally defined differently in the statically-compiled
// program from the IR input to the JIT to assert that the JIT doesn't use its // program from the IR input to the JIT to assert that the JIT doesn't use its
@ -561,6 +580,8 @@ extern "C" int32_t JITTest_AvailableExternallyFunction() {
} }
namespace { namespace {
// ARM tests disabled pending fix for PR10783.
#if !defined(__arm__)
TEST_F(JITTest, AvailableExternallyFunctionIsntCompiled) { TEST_F(JITTest, AvailableExternallyFunctionIsntCompiled) {
TheJIT->DisableLazyCompilation(true); TheJIT->DisableLazyCompilation(true);
LoadAssembly("define available_externally i32 " LoadAssembly("define available_externally i32 "
@ -716,7 +737,8 @@ TEST(LazyLoadedJITTest, EagerCompiledRecursionThroughGhost) {
(intptr_t)TheJIT->getPointerToFunction(recur1IR)); (intptr_t)TheJIT->getPointerToFunction(recur1IR));
EXPECT_EQ(3, recur1(4)); EXPECT_EQ(3, recur1(4));
} }
#endif // !defined(__arm__) && !defined(__powerpc__) && !defined(__s390__) #endif // !defined(__arm__)
#endif // !defined(__powerpc__) && !defined(__s390__)
// This code is copied from JITEventListenerTest, but it only runs once for all // This code is copied from JITEventListenerTest, but it only runs once for all
// the tests in this directory. Everything seems fine, but that's strange // the tests in this directory. Everything seems fine, but that's strange