diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-04-04 00:52:26 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-04-04 00:52:26 +0000 |
commit | 90dd6f45cc0d496b1853500350ab07047364f79f (patch) | |
tree | 6548724663512405f4638b63846ad67b90f3fb5d /clang | |
parent | 18e831dcc90a0d54b23189fecd3e2008ff44fd81 (diff) | |
download | bcm5719-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.cpp | 22 |
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()); + } } } |