From 4f53b298846d720fbb906373f3f28d92f2121f35 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Sat, 4 Apr 2009 00:52:26 +0000 Subject: [PATCH] Driver: Automatically suppress warnings for duplicate versions of flags which were used for something. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68416 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Driver.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index 7890e72de6..74c4b07975 100644 --- a/lib/Driver/Driver.cpp +++ b/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(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()); + } } } -- 2.50.1