//===----------------------------------------------------------------------===//
-/// createFunctionExtractionPass - If isolateFn is true, this pass deletes as
-/// much of the module as possible, except for the function specified.
-/// Otherwise, it deletes the given function, leaving everything else intact.
+/// createFunctionExtractionPass - If deleteFn is true, this pass deletes as
+/// the specified function. Otherwise, it deletes as much of the module as
+/// possible, except for the function specified.
///
-Pass *createFunctionExtractionPass(Function *F, bool isolateFn = true);
+Pass *createFunctionExtractionPass(Function *F, bool deleteFn = false);
//===----------------------------------------------------------------------===//
namespace {
class FunctionExtractorPass : public Pass {
Function *Named;
- bool isolateFunc;
+ bool deleteFunc;
public:
- /// FunctionExtractorPass - ctor for the pass. If isolateFn is true, then
- /// the named function is the only thing left in the Module (default
- /// behavior), otherwise the function is the thing deleted.
+ /// FunctionExtractorPass - If deleteFn is true, this pass deletes as the
+ /// specified function. Otherwise, it deletes as much of the module as
+ /// possible, except for the function specified.
///
- FunctionExtractorPass(Function *F = 0, bool isolateFn = true)
- : Named(F), isolateFunc(isolateFn) {}
+ FunctionExtractorPass(Function *F = 0, bool deleteFn = true)
+ : Named(F), deleteFunc(deleteFn) {}
bool run(Module &M) {
if (Named == 0) {
if (Named == 0) return false; // No function to extract
}
- if (isolateFunc)
- return isolateFunction(M);
- else
+ if (deleteFunc)
return deleteFunction();
+ else
+ return isolateFunction(M);
}
bool deleteFunction() {
RegisterPass<FunctionExtractorPass> X("extract", "Function Extractor");
}
-Pass *llvm::createFunctionExtractionPass(Function *F, bool isolateFn) {
- return new FunctionExtractorPass(F, isolateFn);
+Pass *llvm::createFunctionExtractionPass(Function *F, bool deleteFn) {
+ return new FunctionExtractorPass(F, deleteFn);
}