Author: Fangrui Song Date: 2022-04-10T01:21:31-07:00 New Revision: 8e1530ba43f0e298c3e4821f38434479baf88227
URL: https://github.com/llvm/llvm-project/commit/8e1530ba43f0e298c3e4821f38434479baf88227 DIFF: https://github.com/llvm/llvm-project/commit/8e1530ba43f0e298c3e4821f38434479baf88227.diff LOG: [Driver] Simplify OPT_fcolor_diagnostics claim Mostly NFC, but the diagnostic is changed to the more appropriate err_drv_invalid_argument_to_option. Added: Modified: clang/lib/Driver/ToolChains/Clang.cpp clang/test/Driver/color-diagnostics.c Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 0da0c75d0cc5d..c0566189ae69c 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -3954,20 +3954,13 @@ static void RenderDiagnosticsOptions(const Driver &D, const ArgList &Args, // re-parsed to construct this job; claim any possible color diagnostic here // to avoid warn_drv_unused_argument and diagnose bad // OPT_fdiagnostics_color_EQ values. - for (const Arg *A : Args) { - const Option &O = A->getOption(); - if (!O.matches(options::OPT_fcolor_diagnostics) && - !O.matches(options::OPT_fno_color_diagnostics) && - !O.matches(options::OPT_fdiagnostics_color_EQ)) - continue; - - if (O.matches(options::OPT_fdiagnostics_color_EQ)) { - StringRef Value(A->getValue()); - if (Value != "always" && Value != "never" && Value != "auto") - D.Diag(diag::err_drv_clang_unsupported) - << ("-fdiagnostics-color=" + Value).str(); - } - A->claim(); + Args.getLastArg(options::OPT_fcolor_diagnostics, + options::OPT_fno_color_diagnostics); + if (const Arg *A = Args.getLastArg(options::OPT_fdiagnostics_color_EQ)) { + StringRef Value(A->getValue()); + if (Value != "always" && Value != "never" && Value != "auto") + D.Diag(diag::err_drv_invalid_argument_to_option) + << Value << A->getOption().getName(); } if (D.getDiags().getDiagnosticOptions().ShowColors) diff --git a/clang/test/Driver/color-diagnostics.c b/clang/test/Driver/color-diagnostics.c index ebf614eeb1a37..0d38a6ba2d414 100644 --- a/clang/test/Driver/color-diagnostics.c +++ b/clang/test/Driver/color-diagnostics.c @@ -29,7 +29,7 @@ // RUN: %clang -fdiagnostics-color=foo -### -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-DCE_FOO %s -// CHECK-DCE_FOO: error: the clang compiler does not support '-fdiagnostics-color=foo' +// CHECK-DCE_FOO: error: invalid argument 'foo' to -fdiagnostics-color= // Check that the last flag wins. // RUN: %clang -fno-color-diagnostics -fdiagnostics-color -### -c %s 2>&1 \ _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits