summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2006-09-14 18:23:27 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2006-09-14 18:23:27 +0000
commitd61d39ec53110fdd148c33925e389abff528b481 (patch)
treed472b468851ea4e3a4700c6d626fb1049cbbf29a /llvm/lib/ExecutionEngine
parent616aa548b2739719ac53e01bdd620c9372aa6567 (diff)
downloadbcm5719-llvm-d61d39ec53110fdd148c33925e389abff528b481.tar.gz
bcm5719-llvm-d61d39ec53110fdd148c33925e389abff528b481.zip
Adding dllimport, dllexport and external weak linkage types.
DLL* linkages got full (I hope) codegeneration support in C & both x86 assembler backends. External weak linkage added for future use, we don't provide any codegeneration, etc. support for it. llvm-svn: 30374
Diffstat (limited to 'llvm/lib/ExecutionEngine')
-rw-r--r--llvm/lib/ExecutionEngine/ExecutionEngine.cpp4
-rw-r--r--llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp4
2 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/ExecutionEngine/ExecutionEngine.cpp b/llvm/lib/ExecutionEngine/ExecutionEngine.cpp
index 9ad6b57ecd7..067f24de8b4 100644
--- a/llvm/lib/ExecutionEngine/ExecutionEngine.cpp
+++ b/llvm/lib/ExecutionEngine/ExecutionEngine.cpp
@@ -657,7 +657,9 @@ void ExecutionEngine::emitGlobals() {
}
// If the existing global is strong, never replace it.
- if (GVEntry->hasExternalLinkage())
+ if (GVEntry->hasExternalLinkage() ||
+ GVEntry->hasDLLImportLinkage() ||
+ GVEntry->hasDLLExportLinkage())
continue;
// Otherwise, we know it's linkonce/weak, replace it if this is a strong
diff --git a/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp b/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
index 6e60caf332e..264caae2c9b 100644
--- a/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
+++ b/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
@@ -542,7 +542,7 @@ 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*)(intptr_t)LazyResolverFn;
- if (F->isExternal() && F->hasExternalLinkage())
+ if (F->isExternal())
Actual = TheJIT->getPointerToFunction(F);
// Otherwise, codegen a new stub. For now, the stub will call the lazy
@@ -738,7 +738,7 @@ void *JITEmitter::getPointerToGlobal(GlobalValue *V, void *Reference,
void *ResultPtr = TheJIT->getPointerToGlobalIfAvailable(F);
if (ResultPtr) return ResultPtr;
- if (F->hasExternalLinkage() && F->isExternal()) {
+ if (F->isExternal()) {
// If this is an external function pointer, we can force the JIT to
// 'compile' it, which really just adds it to the map.
if (DoesntNeedStub)
OpenPOWER on IntegriCloud