summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/opt/Makefile2
-rw-r--r--tools/opt/opt.cpp5
2 files changed, 5 insertions, 2 deletions
diff --git a/tools/opt/Makefile b/tools/opt/Makefile
index 604e4766e1..7998a29097 100644
--- a/tools/opt/Makefile
+++ b/tools/opt/Makefile
@@ -1,6 +1,6 @@
LEVEL = ../..
TOOLNAME = opt
-USEDLIBS = opt bcreader bcwriter asmwriter analysis vmcore support instrument
+USEDLIBS = opt bcreader bcwriter asmwriter analysis vmcore support instrument transforms
include $(LEVEL)/Makefile.common
diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp
index 7563c39777..757194d89b 100644
--- a/tools/opt/opt.cpp
+++ b/tools/opt/opt.cpp
@@ -13,13 +13,14 @@
#include "llvm/Optimizations/AllOpts.h"
#include "llvm/Transforms/Instrumentation/TraceValues.h"
#include "llvm/Transforms/PrintModulePass.h"
+#include "llvm/Transforms/ConstantMerge.h"
#include <fstream>
using namespace opt;
enum Opts {
// Basic optimizations
- dce, constprop, inlining, strip, mstrip,
+ dce, constprop, inlining, mergecons, strip, mstrip,
// Miscellaneous Transformations
trace, tracem, print,
@@ -35,6 +36,7 @@ struct {
{ dce , new opt::DeadCodeElimination() },
{ constprop, new opt::ConstantPropogation() },
{ inlining , new opt::MethodInlining() },
+ { mergecons, new ConstantMerge() },
{ strip , new opt::SymbolStripping() },
{ mstrip , new opt::FullSymbolStripping() },
{ indvars , new opt::InductionVariableCannonicalize() },
@@ -55,6 +57,7 @@ cl::EnumList<enum Opts> OptimizationList(cl::NoFlags,
clEnumVal(dce , "Dead Code Elimination"),
clEnumVal(constprop, "Simple Constant Propogation"),
clEnumValN(inlining , "inline", "Method Integration"),
+ clEnumVal(mergecons, "Merge identical global constants"),
clEnumVal(strip , "Strip Symbols"),
clEnumVal(mstrip , "Strip Module Symbols"),
clEnumVal(indvars , "Simplify Induction Variables"),