#include "llvm/Transforms/IPO.h"
#include "llvm/Transforms/Scalar.h"
#include "llvm/Support/Linker.h"
-#include "Support/SystemUtils.h"
-#include "Support/CommandLine.h"
+#include "llvm/Support/SystemUtils.h"
+#include "llvm/Support/CommandLine.h"
using namespace llvm;
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
addPass(Passes, createInternalizePass());
}
- // Now that we internalized some globals, see if we can mark any globals as
- // being constant!
- addPass(Passes, createGlobalConstifierPass());
+ // Now that we internalized some globals, see if we can hack on them!
+ addPass(Passes, createGlobalOptimizerPass());
// Linking modules together can lead to duplicated global constants, only
// keep one copy of each constant...
addPass(Passes, createFunctionInliningPass()); // Inline small functions
addPass(Passes, createPruneEHPass()); // Remove dead EH info
+ addPass(Passes, createGlobalOptimizerPass()); // Optimize globals again.
addPass(Passes, createGlobalDCEPass()); // Remove dead functions
// If we didn't decide to inline a function, check to see if we can
addPass(Passes, createScalarReplAggregatesPass()); // Break up allocas
// Run a few AA driven optimizations here and now, to cleanup the code.
- if (!DisableGlobalsModRef)
- addPass(Passes, createGlobalsModRefPass()); // IP alias analysis
+ addPass(Passes, createGlobalsModRefPass()); // IP alias analysis
addPass(Passes, createLICMPass()); // Hoist loop invariants
addPass(Passes, createLoadValueNumberingPass()); // GVN for load instrs