From 0eafc31684d6c512c6a56868031b8c1cc4ab4ed6 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 18 Oct 2001 06:05:15 +0000 Subject: 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 --- tools/opt/Makefile | 2 +- tools/opt/opt.cpp | 28 +++++++++++++--------------- 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 #include @@ -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 file to optimize", cl::NoFlags, "-"); @@ -67,6 +62,9 @@ cl::EnumList 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); -- cgit v1.2.3