Expose the lowerallocs pass
authorChris Lattner <sabre@nondot.org>
Fri, 10 May 2002 15:43:07 +0000 (15:43 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 10 May 2002 15:43:07 +0000 (15:43 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2602 91177308-0d34-0410-b5e6-96231b3b80d8

tools/opt/opt.cpp

index ebddd18c805c4cf600fc20ce49883ab66d2020bd..6de7529ec4f01a5cd53f1d360d25f1cd0373c523 100644 (file)
 #include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h"
 #include "llvm/Transforms/Instrumentation/TraceValues.h"
 #include "llvm/Transforms/Instrumentation/ProfilePaths.h"
+#include "llvm/Target/TargetData.h"
 #include "Support/CommandLine.h"
 #include "Support/Signals.h"
 #include <fstream>
 #include <memory>
 
+// FIXME: This should be parameterizable eventually for different target
+// types...
+static TargetData TD("opt target");
+
 // Opts enum - All of the transformations we can do...
 enum Opts {
   // Basic optimizations
   dce, die, constprop, gcse, inlining, constmerge, strip, mstrip, mergereturn,
 
   // Miscellaneous Transformations
-  raiseallocs, funcresolve, cleangcc, lowerrefs,
+  raiseallocs, lowerallocs, funcresolve, cleangcc, lowerrefs,
 
   // Printing and verifying...
   print, printm, verify,
@@ -59,6 +64,10 @@ static Pass *createPrintModulePass() {
   return new PrintModulePass(&cerr);
 }
 
+static Pass *createLowerAllocationsPassNT() {
+  return createLowerAllocationsPass(TD);
+}
+
 // OptTable - Correlate enum Opts to Pass constructors...
 //
 struct {
@@ -93,9 +102,10 @@ struct {
   { printm     , createPrintModulePass   },
   { verify     , createVerifierPass      },
 
-  { raiseallocs, createRaiseAllocationsPass  },
-  { cleangcc   , createCleanupGCCOutputPass  },
-  { funcresolve, createFunctionResolvingPass },
+  { raiseallocs, createRaiseAllocationsPass   },
+  { lowerallocs, createLowerAllocationsPassNT },
+  { cleangcc   , createCleanupGCCOutputPass   },
+  { funcresolve, createFunctionResolvingPass  },
 
   { internalize, createInternalizePass  },
   { globaldce  , createGlobalDCEPass    },
@@ -139,6 +149,7 @@ cl::EnumList<enum Opts> OptimizationList(cl::NoFlags,
   clEnumVal(poolalloc  , "Pool allocate disjoint datastructures"),
 
   clEnumVal(raiseallocs, "Raise allocations from calls to instructions"),
+  clEnumVal(lowerallocs, "Lower allocations from instructions to calls (TD)"),
   clEnumVal(cleangcc   , "Cleanup GCC Output"),
   clEnumVal(funcresolve, "Resolve calls to foo(...) to foo(<concrete types>)"),
   clEnumVal(raise      , "Raise to Higher Level"),