[llvm-commits] CVS: llvm/lib/Target/CBackend/Writer.cpp

Chris Lattner lattner at cs.uiuc.edu
Sat May 8 23:30:02 PDT 2004


Changes in directory llvm/lib/Target/CBackend:

Writer.cpp updated: 1.170 -> 1.171

---
Log message:

Get this looking more like a function pass.


---
Diffs of the changes:  (+33 -32)

Index: llvm/lib/Target/CBackend/Writer.cpp
diff -u llvm/lib/Target/CBackend/Writer.cpp:1.170 llvm/lib/Target/CBackend/Writer.cpp:1.171
--- llvm/lib/Target/CBackend/Writer.cpp:1.170	Sat May  8 22:42:48 2004
+++ llvm/lib/Target/CBackend/Writer.cpp	Sat May  8 23:30:20 2004
@@ -59,14 +59,14 @@
 
     bool doInitialization(Module &M);
     bool run(Module &M) {
-      // First pass, lower all unhandled intrinsics.
-      lowerIntrinsics(M);
-
       doInitialization(M);
 
       for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
-        if (!I->isExternal())
+        if (!I->isExternal()) {
+          // First pass, lower all unhandled intrinsics.
+          lowerIntrinsics(*I);
           printFunction(*I);
+        }
 
       // Free memory...
       delete Mang;
@@ -82,7 +82,7 @@
     void writeOperandInternal(Value *Operand);
 
   private :
-    void lowerIntrinsics(Module &M);
+    void lowerIntrinsics(Function &F);
 
     bool nameAllUsedStructureTypes(Module &M);
     void printModule(Module *M);
@@ -655,6 +655,8 @@
   // Initialize
   TheModule = &M;
   FUT = &getAnalysis<FindUsedTypes>();
+
+  IL.AddPrototypes(M);
   
   // Ensure that all structure types have names...
   bool Changed = nameAllUsedStructureTypes(M);
@@ -776,7 +778,7 @@
 void CWriter::printFloatingPointConstants(Module &M) {
   union {
     double D;
-    unsigned long long U;
+    uint64_t U;
   } DBLUnion;
 
   union {
@@ -1219,33 +1221,32 @@
 }
 
 
-void CWriter::lowerIntrinsics(Module &M) {
-  for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F)
-    for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB)
-      for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; )
-        if (CallInst *CI = dyn_cast<CallInst>(I++))
-          if (Function *F = CI->getCalledFunction())
-            switch (F->getIntrinsicID()) {
-            case Intrinsic::not_intrinsic:
-            case Intrinsic::vastart:
-            case Intrinsic::vacopy:
-            case Intrinsic::vaend:
-            case Intrinsic::returnaddress:
-            case Intrinsic::frameaddress:
-            case Intrinsic::setjmp:
-            case Intrinsic::longjmp:
-              // We directly implement these intrinsics
-              break;
-            default:
-              // All other intrinsic calls we must lower.
-              Instruction *Before = CI->getPrev();
-              IL.LowerIntrinsicCall(CI);
-              if (Before) {        // Move iterator to instruction after call
-                I = Before; ++I;
-              } else {
-                I = BB->begin();
-              }
+void CWriter::lowerIntrinsics(Function &F) {
+  for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB)
+    for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; )
+      if (CallInst *CI = dyn_cast<CallInst>(I++))
+        if (Function *F = CI->getCalledFunction())
+          switch (F->getIntrinsicID()) {
+          case Intrinsic::not_intrinsic:
+          case Intrinsic::vastart:
+          case Intrinsic::vacopy:
+          case Intrinsic::vaend:
+          case Intrinsic::returnaddress:
+          case Intrinsic::frameaddress:
+          case Intrinsic::setjmp:
+          case Intrinsic::longjmp:
+            // We directly implement these intrinsics
+            break;
+          default:
+            // All other intrinsic calls we must lower.
+            Instruction *Before = CI->getPrev();
+            IL.LowerIntrinsicCall(CI);
+            if (Before) {        // Move iterator to instruction after call
+              I = Before; ++I;
+            } else {
+              I = BB->begin();
             }
+          }
 }
 
 





More information about the llvm-commits mailing list