Revert r91208. Something on Linux prevents the JIT from looking up a symbol

defined in the test, and I don't have time tonight to figure it out.

llvm-svn: 91209
This commit is contained in:
Jeffrey Yasskin 2009-12-12 06:18:46 +00:00
parent b34198b7ff
commit f79c7c85f7
2 changed files with 1 additions and 26 deletions

View File

@ -681,7 +681,7 @@ void *JIT::getOrEmitGlobalVariable(const GlobalVariable *GV) {
if (Ptr) return Ptr;
// If the global is external, just remember the address.
if (GV->isDeclaration() || GV->hasAvailableExternallyLinkage()) {
if (GV->isDeclaration()) {
#if HAVE___DSO_HANDLE
if (GV->getName() == "__dso_handle")
return (void*)&__dso_handle;

View File

@ -534,31 +534,6 @@ TEST_F(JITTest, FunctionPointersOutliveTheirCreator) {
#endif
}
} // anonymous namespace
// This variable 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
// definition.
extern "C" int32_t JITTest_AvailableExternallyGlobal;
int32_t JITTest_AvailableExternallyGlobal = 42;
namespace {
TEST_F(JITTest, AvailableExternallyGlobalIsntEmitted) {
TheJIT->DisableLazyCompilation(true);
LoadAssembly("@JITTest_AvailableExternallyGlobal = "
" available_externally global i32 7 "
" "
"define i32 @loader() { "
" %result = load i32* @JITTest_AvailableExternallyGlobal "
" ret i32 %result "
"} ");
Function *loaderIR = M->getFunction("loader");
int32_t (*loader)() = reinterpret_cast<int32_t(*)()>(
(intptr_t)TheJIT->getPointerToFunction(loaderIR));
EXPECT_EQ(42, loader()) << "func should return 42 from the external global,"
<< " not 7 from the IR version.";
}
// 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
// behavior.