[llvm-commits] CVS: reopt/lib/TraceToFunction/TraceToFunction.cpp

Brian Gaeke gaeke at cs.uiuc.edu
Wed May 19 03:54:01 PDT 2004


Changes in directory reopt/lib/TraceToFunction:

TraceToFunction.cpp updated: 1.42 -> 1.43

---
Log message:

Use new trace cloner


---
Diffs of the changes:  (+13 -12)

Index: reopt/lib/TraceToFunction/TraceToFunction.cpp
diff -u reopt/lib/TraceToFunction/TraceToFunction.cpp:1.42 reopt/lib/TraceToFunction/TraceToFunction.cpp:1.43
--- reopt/lib/TraceToFunction/TraceToFunction.cpp:1.42	Tue May 18 16:23:06 2004
+++ reopt/lib/TraceToFunction/TraceToFunction.cpp	Wed May 19 03:53:20 2004
@@ -282,18 +282,17 @@
 /// to O2CMap.
 ///
 static void cloneTraceBBsIntoFunction (Trace &T, Function *F, ValueMap &O2CMap){
-  // Clone each basic block into the new function.
-  for (Trace::iterator TI = T.begin (), TE = T.end (); TI != TE; ++TI) {
-    BasicBlock *srcB = *TI;
-    // Create a new BasicBlock dstB that corresponds to srcB in T.
-    BasicBlock *dstB = CloneBasicBlock (srcB, O2CMap, ".ttf");
-    DEBUG(dstB->setName (srcB->getName () + ".ttf"));
-    // Add dstB to F.
-    F->getBasicBlockList ().push_back (dstB);
-    // Remember the correspondence between srcB and dstB. (CloneFunction does
-    // this, but we aren't cloning the whole function.)
-    O2CMap[srcB] = dstB; 
-  }
+  for (Function::aiterator AI = T.getFunction ()->abegin (),
+                           AE = T.getFunction ()->aend (); AI != AE; ++AI)
+    O2CMap[AI] = AI;
+  for (Function::iterator FI = T.getFunction ()->begin (),
+                          FE = T.getFunction ()->end (); FI != FE; ++FI)
+    if (!T.contains (FI)) {
+      O2CMap[FI] = FI;
+      for (BasicBlock::iterator BI = FI->begin (), BE = FI->end (); BI != BE; ++BI)
+        O2CMap[BI] = BI;
+    }
+  CloneTraceInto (F, T, O2CMap, ".ttf");
 }
 
 /// isFirstTriggerCall - Returns true iff I is a call instruction which appears
@@ -403,6 +402,8 @@
   threadFLIEdges (F);
 
   numberExitBranchesInTrace (T, BranchNumber);
+
+  DEBUG (std::cerr << "\n FUNCTION BEFORE FIXUPS: \n" << *F << "\n\n");
 
   // Fix up the cloned basic blocks of the function so that they are
   // internally consistent.





More information about the llvm-commits mailing list