From ec3f0944890dc4ce430cc4d63fda2ee14bbc7433 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 20 Feb 2005 18:43:35 +0000 Subject: [PATCH] Fix problems running the HowToUseJIT on powerpc, and probably problems with ANY program that does not have all functions internalized. llvm-svn: 20258 --- llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp b/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp index 7f6a89ed4858..85ce67b9a9c8 100644 --- a/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp +++ b/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp @@ -180,14 +180,14 @@ void *JITResolver::getFunctionStub(Function *F) { // Call the lazy resolver function unless we already KNOW it is an external // function, in which case we just skip the lazy resolution step. void *Actual = (void*)LazyResolverFn; - if (F->hasExternalLinkage()) + if (F->isExternal() && F->hasExternalLinkage()) Actual = TheJIT->getPointerToFunction(F); // Otherwise, codegen a new stub. For now, the stub will call the lazy // resolver function. Stub = TheJIT->getJITInfo().emitFunctionStub(Actual, MCE); - if (F->hasExternalLinkage()) { + if (Actual != (void*)LazyResolverFn) { // If we are getting the stub for an external function, we really want the // address of the stub in the GlobalAddressMap for the JIT, not the address // of the external function.