summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-ar/llvm-ar.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-07-05 13:03:07 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-07-05 13:03:07 +0000
commit8ef843fc724dd91e9443d9534d28aed2dc1d3d51 (patch)
tree82fe3f4f6133e5a7eebfd9963b1f4d8e182082bc /llvm/tools/llvm-ar/llvm-ar.cpp
parent5dd52f8c4da205446a30bb5a7fa1ccb534f45841 (diff)
downloadbcm5719-llvm-8ef843fc724dd91e9443d9534d28aed2dc1d3d51.tar.gz
bcm5719-llvm-8ef843fc724dd91e9443d9534d28aed2dc1d3d51.zip
Don't create an archive if, for example, we are asked to print the index.
llvm-svn: 185697
Diffstat (limited to 'llvm/tools/llvm-ar/llvm-ar.cpp')
-rw-r--r--llvm/tools/llvm-ar/llvm-ar.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/llvm/tools/llvm-ar/llvm-ar.cpp b/llvm/tools/llvm-ar/llvm-ar.cpp
index 53707154910..515f8991e84 100644
--- a/llvm/tools/llvm-ar/llvm-ar.cpp
+++ b/llvm/tools/llvm-ar/llvm-ar.cpp
@@ -642,6 +642,21 @@ doReplaceOrInsert(std::string* ErrMsg) {
return false;
}
+bool shouldCreateArchive(ArchiveOperation Op) {
+ switch (Op) {
+ case Print:
+ case Delete:
+ case Move:
+ case DisplayTable:
+ case Extract:
+ return false;
+
+ case QuickAppend:
+ case ReplaceOrInsert:
+ return true;
+ }
+}
+
// main - main program for llvm-ar .. see comments in the code
int main(int argc, char **argv) {
program_name = argv[0];
@@ -665,13 +680,15 @@ int main(int argc, char **argv) {
ArchiveOperation Operation = parseCommandLine();
// Create or open the archive object.
- if (!llvm::sys::fs::exists(ArchiveName)) {
+ if (shouldCreateArchive(Operation) && !llvm::sys::fs::exists(ArchiveName)) {
// Produce a warning if we should and we're creating the archive
if (!Create)
errs() << argv[0] << ": creating " << ArchiveName << "\n";
TheArchive = Archive::CreateEmpty(ArchiveName, Context);
TheArchive->writeToDisk();
- } else {
+ }
+
+ if (!TheArchive) {
std::string Error;
TheArchive = Archive::OpenAndLoad(ArchiveName, Context, &Error);
if (TheArchive == 0) {
OpenPOWER on IntegriCloud