summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/tools/llvm-modextract/single.ll5
-rw-r--r--tools/llvm-modextract/llvm-modextract.cpp2
2 files changed, 7 insertions, 0 deletions
diff --git a/test/tools/llvm-modextract/single.ll b/test/tools/llvm-modextract/single.ll
index 32915ff4dad..1d63b7622eb 100644
--- a/test/tools/llvm-modextract/single.ll
+++ b/test/tools/llvm-modextract/single.ll
@@ -4,6 +4,11 @@
; RUN: llvm-modextract -b -n 0 -o - %t | llvm-dis | FileCheck %s
; RUN: not llvm-modextract -b -n 1 -o - %t 2>&1 | FileCheck --check-prefix=ERROR %s
+; RUN: llvm-modextract -n 0 -o %t0 %t
+; RUN: llvm-dis -o - %t0 | FileCheck %s
+; RUN: llvm-modextract -b -n 0 -o %t1 %t
+; RUN: llvm-dis -o - %t1 | FileCheck %s
+
; CHECK: define void @f()
; ERROR: llvm-modextract: error: module index out of range; bitcode file contains 1 module(s)
diff --git a/tools/llvm-modextract/llvm-modextract.cpp b/tools/llvm-modextract/llvm-modextract.cpp
index b4279f2ab1e..6c2e364be44 100644
--- a/tools/llvm-modextract/llvm-modextract.cpp
+++ b/tools/llvm-modextract/llvm-modextract.cpp
@@ -62,11 +62,13 @@ int main(int argc, char **argv) {
SmallVector<char, 0> Header;
BitcodeWriter Writer(Header);
Out->os() << Header << Ms[ModuleIndex].getBuffer();
+ Out->keep();
return 0;
}
std::unique_ptr<Module> M = ExitOnErr(Ms[ModuleIndex].parseModule(Context));
WriteBitcodeToFile(M.get(), Out->os());
+ Out->keep();
return 0;
}