summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2001-10-18 06:05:15 +0000
committerChris Lattner <sabre@nondot.org>2001-10-18 06:05:15 +0000
commit0eafc31684d6c512c6a56868031b8c1cc4ab4ed6 (patch)
treee9ca4aef146a11cd8e489ccca9af88ffa0ccf22e
parent4457163bc40b5ef94fb478f7c33dce6a51fa8d01 (diff)
downloadllvm-0eafc31684d6c512c6a56868031b8c1cc4ab4ed6.tar.gz
llvm-0eafc31684d6c512c6a56868031b8c1cc4ab4ed6.tar.bz2
llvm-0eafc31684d6c512c6a56868031b8c1cc4ab4ed6.tar.xz
Add support to insert trace code as an "optimization"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@884 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--tools/opt/Makefile2
-rw-r--r--tools/opt/opt.cpp28
2 files changed, 14 insertions, 16 deletions
diff --git a/tools/opt/Makefile b/tools/opt/Makefile
index d374f0a76d..604e4766e1 100644
--- a/tools/opt/Makefile
+++ b/tools/opt/Makefile
@@ -1,6 +1,6 @@
LEVEL = ../..
TOOLNAME = opt
-USEDLIBS = opt bcreader bcwriter asmwriter analysis vmcore support
+USEDLIBS = opt bcreader bcwriter asmwriter analysis vmcore support instrument
include $(LEVEL)/Makefile.common
diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp
index 3d62ef8ebf..1e9117cddb 100644
--- a/tools/opt/opt.cpp
+++ b/tools/opt/opt.cpp
@@ -1,23 +1,10 @@
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
// LLVM 'OPT' UTILITY
//
-// This utility may be invoked in the following manner:
-// opt --help - Output information about command line switches
-// opt [options] -dce - Run a dead code elimination pass on input
-// bytecodes
-// opt [options] -constprop - Run a constant propogation pass on input
-// bytecodes
-// opt [options] -inline - Run a method inlining pass on input bytecodes
-// opt [options] -strip - Strip symbol tables out of methods
-// opt [options] -mstrip - Strip module & method symbol tables
-//
// Optimizations may be specified an arbitrary number of times on the command
// line, they are run in the order specified.
//
-// TODO: Add a -all option to keep applying all optimizations until the program
-// stops permuting.
-//
-//===------------------------------------------------------------------------===
+//===----------------------------------------------------------------------===//
#include <iostream.h>
#include <fstream.h>
@@ -26,6 +13,8 @@
#include "llvm/Bytecode/Writer.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Optimizations/AllOpts.h"
+#include "llvm/Transforms/Instrumentation/TraceValues.h"
+#include "llvm/Transforms/PrintModulePass.h"
using namespace opt;
@@ -33,6 +22,9 @@ enum Opts {
// Basic optimizations
dce, constprop, inlining, strip, mstrip,
+ // Miscellaneous Transformations
+ trace, tracem, print,
+
// More powerful optimizations
indvars, sccp, adce, raise,
};
@@ -50,6 +42,9 @@ struct {
{ sccp , new opt::SCCPPass() },
{ adce , new opt::AgressiveDCE() },
{ raise , new opt::RaiseRepresentation() },
+ { trace , new InsertTraceCode(true, true) },
+ { tracem , new InsertTraceCode(false, true) },
+ { print , new PrintModulePass("Current Method: \n",&cerr) },
};
cl::String InputFilename ("", "Load <arg> file to optimize", cl::NoFlags, "-");
@@ -67,6 +62,9 @@ cl::EnumList<enum Opts> OptimizationList(cl::NoFlags,
clEnumVal(sccp , "Sparse Conditional Constant Propogation"),
clEnumVal(adce , "Agressive DCE"),
clEnumVal(raise , "Raise to Higher Level"),
+ clEnumVal(trace , "Insert BB & Method trace code"),
+ clEnumVal(tracem , "Insert Method trace code only"),
+ clEnumVal(print , "Print working method to stderr"),
0);