//===----------------------------------------------------------------------===//
//
+/// createLoopExtractorPass - This pass extracts all natural loops from the
+/// program into a function if it can.
+///
+ModulePass *createLoopExtractorPass();
+
/// createSingleLoopExtractorPass - This pass extracts one natural loop from the
/// program into a function if it can. This is used by bugpoint.
///
(void) llvm::createAggressiveDCEPass();
(void) llvm::createArgumentPromotionPass();
+ (void) llvm::createBlockPlacementPass();
(void) llvm::createBlockProfilerPass();
(void) llvm::createBreakCriticalEdgesPass();
(void) llvm::createCFGSimplificationPass();
(void) llvm::createInstructionCombiningPass();
(void) llvm::createInternalizePass();
(void) llvm::createLICMPass();
+ (void) llvm::createLoopExtractorPass();
(void) llvm::createLoopInstrumentationPass();
(void) llvm::createLoopSimplifyPass();
(void) llvm::createLoopStrengthReducePass();
(void) llvm::createLowerGCPass();
(void) llvm::createLowerInvokePass();
(void) llvm::createLowerPackedPass();
+ (void) llvm::createLowerSelectPass();
(void) llvm::createLowerSetJmpPass();
(void) llvm::createLowerSwitchPass();
+ (void) llvm::createPREPass();
(void) llvm::createProfilePathsPass();
(void) llvm::createPromoteMemoryToRegister();
(void) llvm::createPruneEHPass();
(void) llvm::createSCCPPass();
(void) llvm::createScalarReplAggregatesPass();
(void) llvm::createSingleLoopExtractorPass();
+ (void) llvm::createStripSymbolsPass();
(void) llvm::createTailCallEliminationPass();
(void) llvm::createTailDuplicationPass();
(void) llvm::createTraceBasicBlockPass();
(void) llvm::createTraceValuesPassForBasicBlocks();
(void) llvm::createTraceValuesPassForFunction();
+ (void) llvm::createUnifyFunctionExitNodesPass();
}
} X;
};
// Returns a pass which converts all instances of ConstantExpression
// into regular LLVM instructions.
FunctionPass* createLowerConstantExpressionsPass();
-
+
+//===----------------------------------------------------------------------===//
+// This pass reorders basic blocks in order to increase the number of fall-
+// through conditional branches.
+FunctionPass *createBlockPlacementPass();
+
+//===----------------------------------------------------------------------===//
+// This pass does partial redundancy elimination.
+FunctionPass *createPREPass();
+
} // End llvm namespace
#endif
Y("loop-extract-single", "Extract at most one loop into a new function");
} // End anonymous namespace
+// createLoopExtractorPass - This pass extracts all natural loops from the
+// program into a function if it can.
+//
+ModulePass *llvm::createLoopExtractorPass() { return new LoopExtractor(); }
+
bool LoopExtractor::runOnFunction(Function &F) {
LoopInfo &LI = getAnalysis<LoopInfo>();
#include "llvm/Pass.h"
#include "llvm/Support/CFG.h"
#include "llvm/ADT/Statistic.h"
+#include "llvm/Transforms/Scalar.h"
#include <set>
using namespace llvm;
"Profile Guided Basic Block Placement");
}
+FunctionPass *llvm::createBlockPlacementPass() { return new BlockPlacement(); }
+
bool BlockPlacement::runOnFunction(Function &F) {
PI = &getAnalysis<ProfileInfo>();