summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-02-26 21:46:54 +0000
committerChris Lattner <sabre@nondot.org>2002-02-26 21:46:54 +0000
commitbd0ef77cde9c9e82f2b4ad33e4982c46274d6540 (patch)
tree0903b61112c9e6d336c8b623e235ede2f937f13c /tools
parent3b2541424f771ae11c30675ce06da7b380780028 (diff)
downloadllvm-bd0ef77cde9c9e82f2b4ad33e4982c46274d6540.tar.gz
llvm-bd0ef77cde9c9e82f2b4ad33e4982c46274d6540.tar.bz2
llvm-bd0ef77cde9c9e82f2b4ad33e4982c46274d6540.tar.xz
Change over to use new style pass mechanism, now passes only expose small
creation functions in their public header file, unless they can help it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1816 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/opt/opt.cpp66
1 files changed, 22 insertions, 44 deletions
diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp
index 2b2447b155..69a0774a2f 100644
--- a/tools/opt/opt.cpp
+++ b/tools/opt/opt.cpp
@@ -53,27 +53,7 @@ enum Opts {
globaldce, swapstructs, sortstructs,
};
-
-// New template functions - Provide functions that return passes of specified
-// types, with specified arguments...
-//
-template<class PassClass>
-Pass *New() {
- return new PassClass();
-}
-
-template<class PassClass, typename ArgTy1, ArgTy1 Arg1>
-Pass *New() {
- return new PassClass(Arg1);
-}
-
-template<class PassClass, typename ArgTy1, ArgTy1 Arg1,
- typename ArgTy2, ArgTy1 Arg2>
-Pass *New() {
- return new PassClass(Arg1, Arg2);
-}
-
-static Pass *NewPrintMethodPass() {
+static Pass *createPrintMethodPass() {
return new PrintMethodPass("Current Method: \n", &cerr);
}
@@ -83,35 +63,33 @@ struct {
enum Opts OptID;
Pass * (*PassCtor)();
} OptTable[] = {
- { dce , New<DeadCodeElimination> },
- { constprop , New<ConstantPropogation> },
- { inlining , New<MethodInlining> },
- { constmerge , New<ConstantMerge> },
- { strip , New<SymbolStripping> },
- { mstrip , New<FullSymbolStripping> },
- { mergereturn, New<UnifyMethodExitNodes> },
-
- { indvars , New<InductionVariableSimplify> },
- { instcombine, New<InstructionCombining> },
- { sccp , New<SCCPPass> },
- { adce , New<AgressiveDCE> },
- { raise , New<RaisePointerReferences> },
+ { dce , createDeadCodeEliminationPass },
+ { constprop , createConstantPropogationPass },
+ { inlining , createMethodInliningPass },
+ { constmerge , createConstantMergePass },
+ { strip , createSymbolStrippingPass },
+ { mstrip , createFullSymbolStrippingPass },
+ { mergereturn, createUnifyMethodExitNodesPass },
+
+ { indvars , createIndVarSimplifyPass },
+ { instcombine, createInstructionCombiningPass },
+ { sccp , createSCCPPass },
+ { adce , createAgressiveDCEPass },
+ { raise , createRaisePointerReferencesPass },
{ mem2reg , newPromoteMemoryToRegister },
- { trace , New<InsertTraceCode, bool, true, bool, true> },
- { tracem , New<InsertTraceCode, bool, false, bool, true> },
+ { trace , createTraceValuesPassForBasicBlocks },
+ { tracem , createTraceValuesPassForMethod },
{ paths , createProfilePathsPass },
- { print , NewPrintMethodPass },
+ { print , createPrintMethodPass },
{ verify , createVerifierPass },
- { raiseallocs, New<RaiseAllocations> },
- { cleangcc , New<CleanupGCCOutput> },
- { globaldce , New<GlobalDCE> },
- { swapstructs, New<SimpleStructMutation, SimpleStructMutation::Transform,
- SimpleStructMutation::SwapElements>},
- { sortstructs, New<SimpleStructMutation, SimpleStructMutation::Transform,
- SimpleStructMutation::SortElements>},
+ { raiseallocs, createRaiseAllocationsPass },
+ { cleangcc , createCleanupGCCOutputPass },
+ { globaldce , createGlobalDCEPass },
+ { swapstructs, createSwapElementsPass },
+ { sortstructs, createSortElementsPass },
};
// Command line option handling code...