Run DSE at link-time, and turn on an IP alias analysis by default in gccld!
authorChris Lattner <sabre@nondot.org>
Tue, 27 Jul 2004 08:13:15 +0000 (08:13 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 27 Jul 2004 08:13:15 +0000 (08:13 +0000)
The -disable-globalsmodref is temporary and will be removed eventually.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15268 91177308-0d34-0410-b5e6-96231b3b80d8

tools/gccld/GenerateCode.cpp

index d186f745e1fc943133955cbc11451e0aae1ee66c..74576bb1ba38732e1f1248c457f2b5ebadccc3b5 100644 (file)
@@ -17,6 +17,7 @@
 #include "llvm/Module.h"
 #include "llvm/PassManager.h"
 #include "llvm/Analysis/LoadValueNumbering.h"
+#include "llvm/Analysis/Passes.h"
 #include "llvm/Analysis/Verifier.h"
 #include "llvm/Bytecode/WriteBytecodePass.h"
 #include "llvm/Target/TargetData.h"
@@ -37,6 +38,9 @@ namespace {
   cl::opt<bool>
   DisableOptimizations("disable-opt",
                        cl::desc("Do not run any optimization passes"));
+  cl::opt<bool>
+  DisableGlobalsModRef("disable-globalsmodref", cl::Hidden,
+                      cl::desc("Turn on the more aggressive alias analysis"));
 }
 
 /// CopyEnv - This function takes an array of environment variables and makes a
@@ -196,11 +200,13 @@ int llvm::GenerateBytecode(Module *M, bool Strip, bool Internalize,
     addPass(Passes, createScalarReplAggregatesPass()); // Break up allocas
 
     // Run a few AA driven optimizations here and now, to cleanup the code.
-    // Eventually we should put an IP AA in place here.
+    if (!DisableGlobalsModRef)
+      addPass(Passes, createGlobalsModRefPass());    // IP alias analysis
 
     addPass(Passes, createLICMPass());               // Hoist loop invariants
     addPass(Passes, createLoadValueNumberingPass()); // GVN for load instrs
     addPass(Passes, createGCSEPass());               // Remove common subexprs
+    addPass(Passes, createDeadStoreEliminationPass()); // Nuke dead stores
 
     // Cleanup and simplify the code after the scalar optimizations.
     addPass(Passes, createInstructionCombiningPass());