From ca718e41cf77880b68790e010868917338665444 Mon Sep 17 00:00:00 2001 From: Misha Brukman Date: Thu, 22 Apr 2004 23:07:39 +0000 Subject: [PATCH] Add command-line option to select whether to isolate or delete function from module. Default is `isolate' as before. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13113 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/extract/extract.cpp | 6 +++++- tools/llvm-extract/llvm-extract.cpp | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/extract/extract.cpp b/tools/extract/extract.cpp index b91020db7c7..20961a8cf59 100644 --- a/tools/extract/extract.cpp +++ b/tools/extract/extract.cpp @@ -36,6 +36,9 @@ OutputFilename("o", cl::desc("Specify output filename"), static cl::opt Force("f", cl::desc("Overwrite output files")); +static cl::opt +DeleteFn("delete", cl::desc("Delete specified function from Module")); + // ExtractFunc - The function to extract from the module... defaults to main. static cl::opt ExtractFunc("func", cl::desc("Specify function to extract"), cl::init("main"), @@ -64,7 +67,8 @@ int main(int argc, char **argv) { // PassManager Passes; Passes.add(new TargetData("extract", M.get())); // Use correct TargetData - Passes.add(createFunctionExtractionPass(F)); // Extract the function + // Either isolate the function or delete it from the Module + Passes.add(createFunctionExtractionPass(F, DeleteFn)); Passes.add(createGlobalDCEPass()); // Delete unreachable globals Passes.add(createFunctionResolvingPass()); // Delete prototypes Passes.add(createDeadTypeEliminationPass()); // Remove dead types... diff --git a/tools/llvm-extract/llvm-extract.cpp b/tools/llvm-extract/llvm-extract.cpp index b91020db7c7..20961a8cf59 100644 --- a/tools/llvm-extract/llvm-extract.cpp +++ b/tools/llvm-extract/llvm-extract.cpp @@ -36,6 +36,9 @@ OutputFilename("o", cl::desc("Specify output filename"), static cl::opt Force("f", cl::desc("Overwrite output files")); +static cl::opt +DeleteFn("delete", cl::desc("Delete specified function from Module")); + // ExtractFunc - The function to extract from the module... defaults to main. static cl::opt ExtractFunc("func", cl::desc("Specify function to extract"), cl::init("main"), @@ -64,7 +67,8 @@ int main(int argc, char **argv) { // PassManager Passes; Passes.add(new TargetData("extract", M.get())); // Use correct TargetData - Passes.add(createFunctionExtractionPass(F)); // Extract the function + // Either isolate the function or delete it from the Module + Passes.add(createFunctionExtractionPass(F, DeleteFn)); Passes.add(createGlobalDCEPass()); // Delete unreachable globals Passes.add(createFunctionResolvingPass()); // Delete prototypes Passes.add(createDeadTypeEliminationPass()); // Remove dead types...