diff options
| author | Anton Korobeynikov <asl@math.spbu.ru> | 2006-09-14 18:23:27 +0000 | 
|---|---|---|
| committer | Anton Korobeynikov <asl@math.spbu.ru> | 2006-09-14 18:23:27 +0000 | 
| commit | d61d39ec53110fdd148c33925e389abff528b481 (patch) | |
| tree | d472b468851ea4e3a4700c6d626fb1049cbbf29a /llvm/lib/ExecutionEngine | |
| parent | 616aa548b2739719ac53e01bdd620c9372aa6567 (diff) | |
| download | bcm5719-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.cpp | 4 | ||||
| -rw-r--r-- | llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp | 4 | 
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) | 

