Add command-line option to select whether to isolate or delete function from
authorMisha Brukman <brukman+llvm@gmail.com>
Thu, 22 Apr 2004 23:07:39 +0000 (23:07 +0000)
committerMisha Brukman <brukman+llvm@gmail.com>
Thu, 22 Apr 2004 23:07:39 +0000 (23:07 +0000)
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
tools/llvm-extract/llvm-extract.cpp

index b91020db7c77d601aa72ee3310ae5ac49ccda2f3..20961a8cf5976d694fb8cd9055eaa31516d00102 100644 (file)
@@ -36,6 +36,9 @@ OutputFilename("o", cl::desc("Specify output filename"),
 static cl::opt<bool>
 Force("f", cl::desc("Overwrite output files"));
 
+static cl::opt<bool>
+DeleteFn("delete", cl::desc("Delete specified function from Module"));
+
 // ExtractFunc - The function to extract from the module... defaults to main.
 static cl::opt<std::string>
 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...
index b91020db7c77d601aa72ee3310ae5ac49ccda2f3..20961a8cf5976d694fb8cd9055eaa31516d00102 100644 (file)
@@ -36,6 +36,9 @@ OutputFilename("o", cl::desc("Specify output filename"),
 static cl::opt<bool>
 Force("f", cl::desc("Overwrite output files"));
 
+static cl::opt<bool>
+DeleteFn("delete", cl::desc("Delete specified function from Module"));
+
 // ExtractFunc - The function to extract from the module... defaults to main.
 static cl::opt<std::string>
 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...