Changes in directory llvm/lib/Transforms/IPO:

GlobalOpt.cpp updated: 1.63 -> 1.64
SimplifyLibCalls.cpp updated: 1.68 -> 1.69
---
Log message:

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.


---
Diffs of the changes:  (+6 -4)

 GlobalOpt.cpp        |    4 ++--
 SimplifyLibCalls.cpp |    6 ++++--
 2 files changed, 6 insertions(+), 4 deletions(-)


Index: llvm/lib/Transforms/IPO/GlobalOpt.cpp
diff -u llvm/lib/Transforms/IPO/GlobalOpt.cpp:1.63 
llvm/lib/Transforms/IPO/GlobalOpt.cpp:1.64
--- llvm/lib/Transforms/IPO/GlobalOpt.cpp:1.63  Sun Aug 27 17:42:52 2006
+++ llvm/lib/Transforms/IPO/GlobalOpt.cpp       Thu Sep 14 13:23:27 2006
@@ -1245,7 +1245,7 @@
 static bool isSimpleEnoughPointerToCommit(Constant *C) {
   if (GlobalVariable *GV = dyn_cast<GlobalVariable>(C)) {
     if (!GV->hasExternalLinkage() && !GV->hasInternalLinkage())
-      return false;  // do not allow weak/linkonce linkage.
+      return false;  // do not allow weak/linkonce/dllimport/dllexport linkage.
     return !GV->isExternal();  // reject external globals.
   }
   if (ConstantExpr *CE = dyn_cast<ConstantExpr>(C))
@@ -1254,7 +1254,7 @@
         isa<GlobalVariable>(CE->getOperand(0))) {
       GlobalVariable *GV = cast<GlobalVariable>(CE->getOperand(0));
       if (!GV->hasExternalLinkage() && !GV->hasInternalLinkage())
-        return false;  // do not allow weak/linkonce linkage.
+        return false;  // do not allow weak/linkonce/dllimport/dllexport 
linkage.
       return GV->hasInitializer() &&
              ConstantFoldLoadThroughGEPConstantExpr(GV->getInitializer(), CE);
     }


Index: llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp
diff -u llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp:1.68 
llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp:1.69
--- llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp:1.68   Sun Aug 27 17:42:52 2006
+++ llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp        Thu Sep 14 13:23:27 2006
@@ -178,8 +178,10 @@
         // All the "well-known" functions are external and have external 
linkage
         // because they live in a runtime library somewhere and were (probably)
         // not compiled by LLVM.  So, we only act on external functions that
-        // have external linkage and non-empty uses.
-        if (!FI->isExternal() || !FI->hasExternalLinkage() || FI->use_empty())
+        // have external or dllimport linkage and non-empty uses.
+        if (!FI->isExternal() ||
+            !(FI->hasExternalLinkage() || FI->hasDLLImportLinkage()) ||
+            FI->use_empty())
           continue;
 
         // Get the optimization class that pertains to this function



_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to