From 8312a2e12f994271b83a6af4b10836838418a28d Mon Sep 17 00:00:00 2001 From: Douglas Katzman Date: Wed, 5 Aug 2015 18:03:47 +0000 Subject: [PATCH] Claim arguments that belong to 'clang_ignored_gcc_optimization_f_Group' This seems preferable to printing two warnings per unsupported option- one warning about not supporting it, and one about not using it. It also makes the '-Wno-' option do what you mean. Differential Revision: http://reviews.llvm.org/D11766 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244079 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Tools.cpp | 1 + test/Driver/clang_f_opts.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 2135b77f5e..043d9958b3 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -3848,6 +3848,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, for (const Arg *A : Args.filtered(options::OPT_clang_ignored_gcc_optimization_f_Group)) { D.Diag(diag::warn_ignored_gcc_optimization) << A->getAsString(Args); + A->claim(); } claimNoWarnArgs(Args); diff --git a/test/Driver/clang_f_opts.c b/test/Driver/clang_f_opts.c index 003430174b..4e95266c2e 100644 --- a/test/Driver/clang_f_opts.c +++ b/test/Driver/clang_f_opts.c @@ -412,6 +412,19 @@ // CHECK-NO-WARNING1-NOT: optimization flag '-finline-limit=1000' is not supported // CHECK-NO-WARNING2-NOT: optimization flag '-finline-limit' is not supported +// Test that an ignored optimization argument only prints 1 warning, +// not both a warning about not claiming the arg, *and* about not supporting +// the arg; and that adding -Wno-ignored-optimization silences the warning. +// +// RUN: %clang -### -fprofile-correction %s 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NO-WARNING3 %s +// CHECK-NO-WARNING3: optimization flag '-fprofile-correction' is not supported +// CHECK-NO-WARNING3-NOT: argument unused +// RUN: %clang -### -fprofile-correction -Wno-ignored-optimization-argument %s 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NO-WARNING4 %s +// CHECK-NO-WARNING4-NOT: not supported +// CHECK-NO-WARNING4-NOT: argument unused + // RUN: %clang -### -S -fsigned-char %s 2>&1 | FileCheck -check-prefix=CHAR-SIGN1 %s // CHAR-SIGN1-NOT: -fno-signed-char -- 2.50.1