takuto.ikuta updated this revision to Diff 173302. takuto.ikuta added a comment.
warn in GetCommand Repository: rL LLVM https://reviews.llvm.org/D54298 Files: clang/include/clang/Basic/DiagnosticDriverKinds.td clang/lib/Driver/ToolChains/MSVC.cpp clang/test/Driver/cl-options.c Index: clang/test/Driver/cl-options.c =================================================================== --- clang/test/Driver/cl-options.c +++ clang/test/Driver/cl-options.c @@ -494,6 +494,8 @@ // NoDllExportInlines: "-fno-dllexport-inlines" // RUN: %clang_cl /Zc:dllexportInlines /c -### -- %s 2>&1 | FileCheck -check-prefix=DllExportInlines %s // DllExportInlines-NOT: "-fno-dllexport-inlines" +// RUN: %clang_cl /fallback /Zc:dllexportInlines- /c -### -- %s 2>&1 | FileCheck -check-prefix=DllExportInlinesFallback %s +// DllExportInlinesFallback: warning: option '/Zc:dllexportInlines-' is ignored when /fallback happens [-Woption-ignored] // RUN: %clang_cl /Zi /c -### -- %s 2>&1 | FileCheck -check-prefix=Zi %s // Zi: "-gcodeview" Index: clang/lib/Driver/ToolChains/MSVC.cpp =================================================================== --- clang/lib/Driver/ToolChains/MSVC.cpp +++ clang/lib/Driver/ToolChains/MSVC.cpp @@ -669,6 +669,12 @@ // them too. Args.AddAllArgs(CmdArgs, options::OPT_UNKNOWN); + // Warning for ignored flag. + if (const Arg *dllexportInlines = + Args.getLastArg(options::OPT__SLASH_Zc_dllexportInlines_)) + C.getDriver().Diag(clang::diag::warn_drv_non_fallback_argument_clang_cl) + << dllexportInlines->getAsString(Args); + // Input filename. assert(Inputs.size() == 1); const InputInfo &II = Inputs[0]; Index: clang/include/clang/Basic/DiagnosticDriverKinds.td =================================================================== --- clang/include/clang/Basic/DiagnosticDriverKinds.td +++ clang/include/clang/Basic/DiagnosticDriverKinds.td @@ -161,6 +161,10 @@ "support for '/Yc' with more than one source file not implemented yet; flag ignored">, InGroup<ClangClPch>; +def warn_drv_non_fallback_argument_clang_cl : Warning< + "option '%0' is ignored when /fallback happens">, + InGroup<OptionIgnored>; + def err_drv_invalid_value : Error<"invalid value '%1' in '%0'">; def err_drv_invalid_int_value : Error<"invalid integral value '%1' in '%0'">; def err_drv_invalid_remap_file : Error<
Index: clang/test/Driver/cl-options.c =================================================================== --- clang/test/Driver/cl-options.c +++ clang/test/Driver/cl-options.c @@ -494,6 +494,8 @@ // NoDllExportInlines: "-fno-dllexport-inlines" // RUN: %clang_cl /Zc:dllexportInlines /c -### -- %s 2>&1 | FileCheck -check-prefix=DllExportInlines %s // DllExportInlines-NOT: "-fno-dllexport-inlines" +// RUN: %clang_cl /fallback /Zc:dllexportInlines- /c -### -- %s 2>&1 | FileCheck -check-prefix=DllExportInlinesFallback %s +// DllExportInlinesFallback: warning: option '/Zc:dllexportInlines-' is ignored when /fallback happens [-Woption-ignored] // RUN: %clang_cl /Zi /c -### -- %s 2>&1 | FileCheck -check-prefix=Zi %s // Zi: "-gcodeview" Index: clang/lib/Driver/ToolChains/MSVC.cpp =================================================================== --- clang/lib/Driver/ToolChains/MSVC.cpp +++ clang/lib/Driver/ToolChains/MSVC.cpp @@ -669,6 +669,12 @@ // them too. Args.AddAllArgs(CmdArgs, options::OPT_UNKNOWN); + // Warning for ignored flag. + if (const Arg *dllexportInlines = + Args.getLastArg(options::OPT__SLASH_Zc_dllexportInlines_)) + C.getDriver().Diag(clang::diag::warn_drv_non_fallback_argument_clang_cl) + << dllexportInlines->getAsString(Args); + // Input filename. assert(Inputs.size() == 1); const InputInfo &II = Inputs[0]; Index: clang/include/clang/Basic/DiagnosticDriverKinds.td =================================================================== --- clang/include/clang/Basic/DiagnosticDriverKinds.td +++ clang/include/clang/Basic/DiagnosticDriverKinds.td @@ -161,6 +161,10 @@ "support for '/Yc' with more than one source file not implemented yet; flag ignored">, InGroup<ClangClPch>; +def warn_drv_non_fallback_argument_clang_cl : Warning< + "option '%0' is ignored when /fallback happens">, + InGroup<OptionIgnored>; + def err_drv_invalid_value : Error<"invalid value '%1' in '%0'">; def err_drv_invalid_int_value : Error<"invalid integral value '%1' in '%0'">; def err_drv_invalid_remap_file : Error<
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits