[llvm-commits] CVS: llvm/lib/Reoptimizer/LightWtProfiling/Trigger/Globals.h Initialization.cpp RuntimeOptimizations.cpp SecondTrigger.cpp

Brian Gaeke gaeke at cs.uiuc.edu
Thu Aug 21 11:51:02 PDT 2003


Changes in directory llvm/lib/Reoptimizer/LightWtProfiling/Trigger:

Globals.h updated: 1.3 -> 1.4
Initialization.cpp updated: 1.6 -> 1.7
RuntimeOptimizations.cpp updated: 1.4 -> 1.5
SecondTrigger.cpp updated: 1.16 -> 1.17

---
Log message:

Add option to say whether to run optimizeTrace() or the old layout
engine. Change optimizeTrace() to build a Trace object.



---
Diffs of the changes:

Index: llvm/lib/Reoptimizer/LightWtProfiling/Trigger/Globals.h
diff -u llvm/lib/Reoptimizer/LightWtProfiling/Trigger/Globals.h:1.3 llvm/lib/Reoptimizer/LightWtProfiling/Trigger/Globals.h:1.4
--- llvm/lib/Reoptimizer/LightWtProfiling/Trigger/Globals.h:1.3	Mon Aug 18 22:59:31 2003
+++ llvm/lib/Reoptimizer/LightWtProfiling/Trigger/Globals.h	Thu Aug 21 11:50:14 2003
@@ -58,6 +58,12 @@
 ///
 extern bool count_trace_cycles;
 
+/// When this is set to true, use the new trace optimizer that works
+/// on vectors of LLVM basic blocks instead of the old trace layout
+/// engine.
+///
+extern bool enable_trace_optimizer;
+
 /// The current SPARC LLC writes the bytecode and its length into the
 /// executable. We can access them via these global symbols.
 ///


Index: llvm/lib/Reoptimizer/LightWtProfiling/Trigger/Initialization.cpp
diff -u llvm/lib/Reoptimizer/LightWtProfiling/Trigger/Initialization.cpp:1.6 llvm/lib/Reoptimizer/LightWtProfiling/Trigger/Initialization.cpp:1.7
--- llvm/lib/Reoptimizer/LightWtProfiling/Trigger/Initialization.cpp:1.6	Wed Aug 20 15:41:15 2003
+++ llvm/lib/Reoptimizer/LightWtProfiling/Trigger/Initialization.cpp	Thu Aug 21 11:50:14 2003
@@ -44,6 +44,8 @@
 SLIThreshold("sli-threshold", cl::location(THRESHOLD_LEVEL_2), cl::init(50));
 cl::opt<bool, true>
 CountTraceCycles("count-trace-cycles", cl::location(count_trace_cycles));
+cl::opt<bool, true>
+EnableTraceOpt("enable-trace-opt", cl::location(enable_trace_optimizer));
 
 /// reoptimizerInitialize - Initialization method for the
 /// reoptimizer. A call to this function from main() is inserted by


Index: llvm/lib/Reoptimizer/LightWtProfiling/Trigger/RuntimeOptimizations.cpp
diff -u llvm/lib/Reoptimizer/LightWtProfiling/Trigger/RuntimeOptimizations.cpp:1.4 llvm/lib/Reoptimizer/LightWtProfiling/Trigger/RuntimeOptimizations.cpp:1.5
--- llvm/lib/Reoptimizer/LightWtProfiling/Trigger/RuntimeOptimizations.cpp:1.4	Wed Aug 20 10:33:54 2003
+++ llvm/lib/Reoptimizer/LightWtProfiling/Trigger/RuntimeOptimizations.cpp	Thu Aug 21 11:50:15 2003
@@ -8,10 +8,16 @@
 
 #include "GetTimer.h"
 #include "Globals.h"
+#include "Trace.h"
 #include "Support/Debug.h"
+#include "Support/StringExtras.h"
 #include "llvm/PassManager.h"
 #include "llvm/BasicBlock.h"
 #include <set>
+#include <fstream>
+
+// From TraceToFunction.cpp
+// extern Function *runTraceToFunction (Trace &T);
 
 // From Initialization.cpp
 extern void initModules ();
@@ -43,7 +49,16 @@
   if (!M)
     initModules ();
 
-  PassManager PM;
-  // Add your favorite runtime optimization passes here.
-  PM.run (*M);
+  // Create Trace object.
+  Trace T (vBB);
+  static int count = 0;
+  count++;
+  std::string filename ("traceout" + itostr (count) + ".txt");
+  DEBUG(std::cerr << "Dumping trace to file " << filename << "\n");
+  std::ofstream o (filename.c_str ());
+  T.print (o);
+
+  // Try to turn it into a function
+  // Function *TF = runTraceToFunction (T);
+  // DEBUG(std::cerr << "Function created from trace: \n" << *TF);
 }


Index: llvm/lib/Reoptimizer/LightWtProfiling/Trigger/SecondTrigger.cpp
diff -u llvm/lib/Reoptimizer/LightWtProfiling/Trigger/SecondTrigger.cpp:1.16 llvm/lib/Reoptimizer/LightWtProfiling/Trigger/SecondTrigger.cpp:1.17
--- llvm/lib/Reoptimizer/LightWtProfiling/Trigger/SecondTrigger.cpp:1.16	Mon Aug 18 23:01:36 2003
+++ llvm/lib/Reoptimizer/LightWtProfiling/Trigger/SecondTrigger.cpp	Thu Aug 21 11:50:15 2003
@@ -530,11 +530,16 @@
   std::map<int, std::map<int, int> > pathIntersections;
   getPathIntersections(pathIntersections, paths);
 
-  //use path 0 to form vBB
-  //std::vector<BasicBlock *> vBB;
-  //constructVBB (paths[0], start, vBB);
-  //if (!vBB.empty()) { optimizeTrace (vBB, firstLevelTraceStartAddr); }
-  //return;
+  // Check whether to use the new trace optimizer which works on
+  // vectors of llvm basic blocks, or the old trace layout engine
+  // which works on SPARC instructions.
+  if (enable_trace_optimizer) {
+    //use path 0 to form vBB
+    std::vector<BasicBlock *> vBB;
+    constructVBB (paths[0], start, vBB);
+    if (!vBB.empty()) { optimizeTrace (vBB, firstLevelTraceStartAddr); }
+    return;
+  }
   
 #ifndef NDEBUG
   for(std::map<int, std::map<int, int> >::iterator MI = 





More information about the llvm-commits mailing list