Add peephole optimization pass at the end of code generation.
authorVikram S. Adve <vadve@cs.uiuc.edu>
Fri, 20 Sep 2002 00:52:43 +0000 (00:52 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Fri, 20 Sep 2002 00:52:43 +0000 (00:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3846 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/TargetMachine.cpp

index 84149f8934b131a9b2061b9e0057d776cde7b1e3..8d9a832d2816bc08de3f88f1caea6bdca762402d 100644 (file)
@@ -12,6 +12,7 @@
 #include "llvm/CodeGen/InstrSelection.h"
 #include "llvm/CodeGen/InstrScheduling.h"
 #include "llvm/CodeGen/RegisterAllocation.h"
+#include "llvm/CodeGen/PeepholeOpts.h"
 #include "llvm/CodeGen/MachineCodeForMethod.h"
 #include "llvm/CodeGen/MachineCodeForInstruction.h"
 #include "llvm/Reoptimizer/Mapping/MappingInfo.h" 
@@ -32,6 +33,9 @@ static cl::opt<bool> DisablePreSelect("nopreselect",
 static cl::opt<bool> DisableSched("nosched",
                                   cl::desc("Disable local scheduling pass"));
 
+static cl::opt<bool> DisablePeephole("nopeephole",
+                                     cl::desc("Disable peephole optimization pass"));
+
 //---------------------------------------------------------------------------
 // class TargetMachine
 // 
@@ -132,13 +136,11 @@ TargetMachine::addPassesToEmitAssembly(PassManager &PM, std::ostream &Out)
 
   PM.add(getRegisterAllocator(*this));
 
-  //PM.add(new OptimizeLeafProcedures());
-  //PM.add(new DeleteFallThroughBranches());
-  //PM.add(new RemoveChainedBranches());    // should be folded with previous
-  //PM.add(new RemoveRedundantOps());       // operations with %g0, NOP, etc.
-
   PM.add(getPrologEpilogInsertionPass());
 
+  if (!DisablePeephole)
+    PM.add(createPeepholeOptsPass(*this));
+
   PM.add(MappingInfoForFunction(Out));  
 
   // Output assembly language to the .s file.  Assembly emission is split into