From: Chris Lattner Date: Wed, 27 Jun 2001 23:31:14 +0000 (+0000) Subject: * Use the new reduce_apply_bool template X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=3596366bed2ec5e492d994f88ea76829a0e3d657;p=oota-llvm.git * Use the new reduce_apply_bool template * Expose Constant Pool Merging from ConstantProp.cpp * Include definitions for SCCP pass * InstListType is not neccesary anymore git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Optimizations/AllOpts.h b/include/llvm/Optimizations/AllOpts.h index 31a69c42537..c68ebc48c5a 100644 --- a/include/llvm/Optimizations/AllOpts.h +++ b/include/llvm/Optimizations/AllOpts.h @@ -21,8 +21,7 @@ class CallInst; // static inline bool ApplyOptToAllMethods(Module *C, bool (*Opt)(Method*)) { - return reduce_apply(C->getMethodList().begin(), C->getMethodList().end(), - bitwise_or(), false, ptr_fun(Opt)); + return reduce_apply_bool(C->begin(), C->end(), ptr_fun(Opt)); } //===----------------------------------------------------------------------===// @@ -43,6 +42,36 @@ static inline bool DoConstantPropogation(Module *C) { return ApplyOptToAllMethods(C, DoConstantPropogation); } +//===----------------------------------------------------------------------===// +// Constant Pool Merging Pass +// +// This function merges all constants in the specified constant pool that have +// identical types and values. This is useful for passes that generate lots of +// constants as a side effect of running. +// +bool DoConstantPoolMerging(ConstantPool &CP); +bool DoConstantPoolMerging(Method *M); +static inline bool DoConstantPoolMerging(Module *M) { + return ApplyOptToAllMethods(M, DoConstantPoolMerging) | + DoConstantPoolMerging(M->getConstantPool()); +} + + +//===----------------------------------------------------------------------===// +// Sparse Conditional Constant Propogation Pass +// + +bool DoSparseConditionalConstantProp(Method *M); + +static inline bool DoSparseConditionalConstantProp(Module *M) { + return ApplyOptToAllMethods(M, DoSparseConditionalConstantProp); +} + +// Define a shorter version of the name... +template bool DoSCCP(Unit *M) { + return DoSparseConditionalConstantProp(M); +} + //===----------------------------------------------------------------------===// // Method Inlining Pass // @@ -67,7 +96,7 @@ static inline bool DoMethodInlining(Module *C) { // method by one level. // bool InlineMethod(CallInst *C); -bool InlineMethod(BasicBlock::InstListType::iterator CI);// *CI must be CallInst +bool InlineMethod(BasicBlock::iterator CI); // *CI must be CallInst //===----------------------------------------------------------------------===//