enum Opts {
// Basic optimizations
dce, die, constprop, gcse, licm, inlining, constmerge,
- strip, mstrip, mergereturn,
+ strip, mstrip, mergereturn, simplifycfg,
// Miscellaneous Transformations
raiseallocs, lowerallocs, funcresolve, cleangcc, lowerrefs,
enum Opts OptID;
Pass * (*PassCtor)();
} OptTable[] = {
- { dce , createDeadCodeEliminationPass },
- { die , createDeadInstEliminationPass },
- { constprop , createConstantPropogationPass },
- { gcse , createGCSEPass },
- { licm , createLICMPass },
- { inlining , createFunctionInliningPass },
- { constmerge , createConstantMergePass },
- { strip , createSymbolStrippingPass },
- { mstrip , createFullSymbolStrippingPass },
+ { dce , createDeadCodeEliminationPass },
+ { die , createDeadInstEliminationPass },
+ { constprop , createConstantPropogationPass },
+ { gcse , createGCSEPass },
+ { licm , createLICMPass },
+ { inlining , createFunctionInliningPass },
+ { constmerge , createConstantMergePass },
+ { strip , createSymbolStrippingPass },
+ { mstrip , createFullSymbolStrippingPass },
{ mergereturn, createUnifyFunctionExitNodesPass },
+ { simplifycfg, createCFGSimplificationPass },
{ indvars , createIndVarSimplifyPass },
{ instcombine, createInstructionCombiningPass },
{ trace , createTraceValuesPassForBasicBlocks },
{ tracem , createTraceValuesPassForFunction },
- { paths , createProfilePathsPass },
+ { paths , createProfilePathsPass },
{ print , createPrintFunctionPass },
{ printm , createPrintModulePass },
clEnumVal(strip , "Strip symbols"),
clEnumVal(mstrip , "Strip module symbols"),
clEnumVal(mergereturn, "Unify function exit nodes"),
+ clEnumVal(simplifycfg, "CFG Simplification"),
clEnumVal(indvars , "Simplify Induction Variables"),
clEnumVal(instcombine, "Combine redundant instructions"),