Rename pass to DecomposeMultiDimRefs.
authorVikram S. Adve <vadve@cs.uiuc.edu>
Sun, 24 Mar 2002 03:19:54 +0000 (03:19 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Sun, 24 Mar 2002 03:19:54 +0000 (03:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1960 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llc/llc.cpp
tools/opt/opt.cpp

index c4422adfbafc42803360d9adc26a0651651846b6..140151b69f658f156187afbc4eebd54c7038c7f9 100644 (file)
@@ -10,6 +10,7 @@
 #include "llvm/Transforms/Instrumentation/TraceValues.h"
 #include "llvm/Transforms/ChangeAllocations.h"
 #include "llvm/Transforms/HoistPHIConstants.h"
+#include "llvm/Transforms/Scalar/DecomposeMultiDimRefs.h"
 #include "llvm/Assembly/PrintModulePass.h"
 #include "llvm/Bytecode/WriteBytecodePass.h"
 #include "llvm/Transforms/ConstantMerge.h"
@@ -92,8 +93,13 @@ int main(int argc, char **argv) {
 
     // Eliminate duplication in constant pool
     Passes.add(createDynamicConstantMergePass());
-      
-    // Then write out the module with tracing code before code generation 
+  }
+  
+  // Decompose multi-dimensional refs into a sequence of 1D refs
+  Passes.add(createDecomposeMultiDimRefsPass());
+  
+  // Write out the module with tracing code just before code generation
+  if (TraceValues != TraceOff) {   // If tracing enabled...
     assert(InputFilename != "-" &&
            "files on stdin not supported with tracing");
     string traceFileName = GetFileNameRoot(InputFilename) + ".trace.bc";
@@ -104,7 +110,7 @@ int main(int argc, char **argv) {
            << "Use -f command line argument to force output\n";
       return 1;
     }
-
+    
     std::ostream *os = new std::ofstream(traceFileName.c_str());
     if (!os->good()) {
       cerr << "Error opening " << traceFileName
index a7ad98ea8875a331d6f55c42373755f233a31578..3fad1ec44274184b26d6d596189ac7bf1004c034 100644 (file)
@@ -26,6 +26,7 @@
 #include "llvm/Transforms/Scalar/IndVarSimplify.h"
 #include "llvm/Transforms/Scalar/InstructionCombining.h"
 #include "llvm/Transforms/Scalar/PromoteMemoryToRegister.h"
+#include "llvm/Transforms/Scalar/DecomposeMultiDimRefs.h"
 #include "llvm/Transforms/Instrumentation/TraceValues.h"
 #include "llvm/Transforms/Instrumentation/ProfilePaths.h"
 #include "Support/CommandLine.h"
@@ -38,7 +39,7 @@ enum Opts {
   dce, die, constprop, inlining, constmerge, strip, mstrip, mergereturn,
 
   // Miscellaneous Transformations
-  raiseallocs, cleangcc,
+  raiseallocs, cleangcc, lowerrefs,
 
   // Printing and verifying...
   print, verify,
@@ -91,6 +92,7 @@ struct {
   { globaldce  , createGlobalDCEPass },
   { swapstructs, createSwapElementsPass },
   { sortstructs, createSortElementsPass },
+  { lowerrefs,   createDecomposeMultiDimRefsPass } 
 };
 
 // Command line option handling code...
@@ -129,6 +131,7 @@ cl::EnumList<enum Opts> OptimizationList(cl::NoFlags,
   clEnumVal(paths      , "Insert path profiling instrumentation"),
   clEnumVal(print      , "Print working method to stderr"),
   clEnumVal(verify     , "Verify module is well formed"),
+  clEnumVal(lowerrefs  , "Decompose multi-dimensional structure/array refs to use one index per instruction"),
 0);