summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-04-04 00:52:26 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-04-04 00:52:26 +0000
commit90dd6f45cc0d496b1853500350ab07047364f79f (patch)
tree6548724663512405f4638b63846ad67b90f3fb5d /clang
parent18e831dcc90a0d54b23189fecd3e2008ff44fd81 (diff)
downloadbcm5719-llvm-90dd6f45cc0d496b1853500350ab07047364f79f.tar.gz
bcm5719-llvm-90dd6f45cc0d496b1853500350ab07047364f79f.zip
Driver: Automatically suppress warnings for duplicate versions of
flags which were used for something. llvm-svn: 68416
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Driver/Driver.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 7890e72de63..74c4b07975d 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -807,9 +807,29 @@ void Driver::BuildJobs(Compilation &C) const {
// FIXME: It would be nice to be able to send the argument to the
// Diagnostic, so that extra values, position, and so on could be
// printed.
- if (!A->isClaimed())
+ if (!A->isClaimed()) {
+ // Suppress the warning automatically if this is just a flag,
+ // and it is an instance of an argument we already claimed.
+ const Option &Opt = A->getOption();
+ if (isa<FlagOption>(Opt)) {
+ bool DuplicateClaimed = false;
+
+ // FIXME: Use iterator.
+ for (ArgList::const_iterator it = C.getArgs().begin(),
+ ie = C.getArgs().end(); it != ie; ++it) {
+ if ((*it)->isClaimed() && (*it)->getOption().matches(Opt.getId())) {
+ DuplicateClaimed = true;
+ break;
+ }
+ }
+
+ if (DuplicateClaimed)
+ continue;
+ }
+
Diag(clang::diag::warn_drv_unused_argument)
<< A->getAsString(C.getArgs());
+ }
}
}
OpenPOWER on IntegriCloud