summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/Driver.cpp
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2012-02-13 18:16:28 +0000
committerChad Rosier <mcrosier@apple.com>2012-02-13 18:16:28 +0000
commit636d2832023ea03680618259ed2bd6600e42c01a (patch)
treee3f8c9a08ae17956b168351085c8f57bf9a35c3d /clang/lib/Driver/Driver.cpp
parentd56c8794d33e2a51011e2aa1c669146bfb502dbf (diff)
downloadbcm5719-llvm-636d2832023ea03680618259ed2bd6600e42c01a.tar.gz
bcm5719-llvm-636d2832023ea03680618259ed2bd6600e42c01a.zip
When generating diagnostic information due to a clang failure, allow multiple
-arch options if the're all the same. Patch by Jeremy Huddleston. rdar://10849701 llvm-svn: 150403
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
-rw-r--r--clang/lib/Driver/Driver.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 10eec2e1edf..26ceb32e73e 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -410,21 +410,22 @@ void Driver::generateCompilationDiagnostics(Compilation &C,
}
// Don't attempt to generate preprocessed files if multiple -arch options are
- // used.
- int Archs = 0;
+ // used, unless they're all duplicates.
+ llvm::StringSet<> ArchNames;
for (ArgList::const_iterator it = C.getArgs().begin(), ie = C.getArgs().end();
it != ie; ++it) {
Arg *A = *it;
if (A->getOption().matches(options::OPT_arch)) {
- Archs++;
- if (Archs > 1) {
- Diag(clang::diag::note_drv_command_failed_diag_msg)
- << "Error generating preprocessed source(s) - cannot generate "
- "preprocessed source with multiple -arch options.";
- return;
- }
+ StringRef ArchName = A->getValue(C.getArgs());
+ ArchNames.insert(ArchName);
}
}
+ if (ArchNames.size() > 1) {
+ Diag(clang::diag::note_drv_command_failed_diag_msg)
+ << "Error generating preprocessed source(s) - cannot generate "
+ "preprocessed source with multiple -arch options.";
+ return;
+ }
if (Inputs.empty()) {
Diag(clang::diag::note_drv_command_failed_diag_msg)
OpenPOWER on IntegriCloud