r253582 - clang-cl: Make /W4 imply -Wall -Wextra (PR25563)
Hans Wennborg via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 19 09:50:00 PST 2015
Author: hans
Date: Thu Nov 19 11:49:59 2015
New Revision: 253582
URL: http://llvm.org/viewvc/llvm-project?rev=253582&view=rev
Log:
clang-cl: Make /W4 imply -Wall -Wextra (PR25563)
Modified:
cfe/trunk/docs/UsersManual.rst
cfe/trunk/include/clang/Driver/CLCompatOptions.td
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/test/Driver/cl-options.c
Modified: cfe/trunk/docs/UsersManual.rst
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/UsersManual.rst?rev=253582&r1=253581&r2=253582&view=diff
==============================================================================
--- cfe/trunk/docs/UsersManual.rst (original)
+++ cfe/trunk/docs/UsersManual.rst Thu Nov 19 11:49:59 2015
@@ -2173,7 +2173,7 @@ Execute ``clang-cl /?`` to see a list of
/W1 Enable -Wall
/W2 Enable -Wall
/W3 Enable -Wall
- /W4 Enable -Wall
+ /W4 Enable -Wall and -Wextra
/Wall Enable -Wall
/WX- Do not treat warnings as errors
/WX Treat warnings as errors
Modified: cfe/trunk/include/clang/Driver/CLCompatOptions.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CLCompatOptions.td?rev=253582&r1=253581&r2=253582&view=diff
==============================================================================
--- cfe/trunk/include/clang/Driver/CLCompatOptions.td (original)
+++ cfe/trunk/include/clang/Driver/CLCompatOptions.td Thu Nov 19 11:49:59 2015
@@ -115,12 +115,12 @@ def _SLASH_showIncludes : CLFlag<"showIn
Alias<show_includes>;
def _SLASH_U : CLJoinedOrSeparate<"U">, HelpText<"Undefine macro">,
MetaVarName<"<macro>">, Alias<U>;
-def _SLASH_W0 : CLFlag<"W0">, HelpText<"Disable all warnings">, Alias<w>;
-def _SLASH_W1 : CLFlag<"W1">, HelpText<"Enable -Wall">, Alias<Wall>;
-def _SLASH_W2 : CLFlag<"W2">, HelpText<"Enable -Wall">, Alias<Wall>;
-def _SLASH_W3 : CLFlag<"W3">, HelpText<"Enable -Wall">, Alias<Wall>;
-def _SLASH_W4 : CLFlag<"W4">, HelpText<"Enable -Wall">, Alias<Wall>;
-def _SLASH_Wall : CLFlag<"Wall">, HelpText<"Enable -Wall">, Alias<Wall>;
+def _SLASH_W0 : CLFlag<"W0">, HelpText<"Disable all warnings">;
+def _SLASH_W1 : CLFlag<"W1">, HelpText<"Enable -Wall">;
+def _SLASH_W2 : CLFlag<"W2">, HelpText<"Enable -Wall">;
+def _SLASH_W3 : CLFlag<"W3">, HelpText<"Enable -Wall">;
+def _SLASH_W4 : CLFlag<"W4">, HelpText<"Enable -Wall and -Wextra">;
+def _SLASH_Wall : CLFlag<"Wall">, HelpText<"Enable -Wall">;
def _SLASH_WX : CLFlag<"WX">, HelpText<"Treat warnings as errors">,
Alias<W_Joined>, AliasArgs<["error"]>;
def _SLASH_WX_ : CLFlag<"WX-">, HelpText<"Do not treat warnings as errors">,
Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=253582&r1=253581&r2=253582&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Thu Nov 19 11:49:59 2015
@@ -5684,6 +5684,26 @@ void Clang::AddClangCLArgs(const ArgList
else
CmdArgs.push_back("msvc");
}
+
+ if (Arg *A =
+ Args.getLastArg(options::OPT__SLASH_W0, options::OPT__SLASH_W1,
+ options::OPT__SLASH_W2, options::OPT__SLASH_W3,
+ options::OPT__SLASH_W4, options::OPT__SLASH_Wall)) {
+ switch (A->getOption().getID()) {
+ case options::OPT__SLASH_W0:
+ CmdArgs.push_back("-w");
+ break;
+ case options::OPT__SLASH_W4:
+ CmdArgs.push_back("-Wextra");
+ // Fallthrough.
+ case options::OPT__SLASH_W1:
+ case options::OPT__SLASH_W2:
+ case options::OPT__SLASH_W3:
+ case options::OPT__SLASH_Wall:
+ CmdArgs.push_back("-Wall");
+ break;
+ }
+ }
}
visualstudio::Compiler *Clang::getCLFallback() const {
Modified: cfe/trunk/test/Driver/cl-options.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-options.c?rev=253582&r1=253581&r2=253582&view=diff
==============================================================================
--- cfe/trunk/test/Driver/cl-options.c (original)
+++ cfe/trunk/test/Driver/cl-options.c Thu Nov 19 11:49:59 2015
@@ -173,10 +173,15 @@
// RUN: %clang_cl /W1 -### -- %s 2>&1 | FileCheck -check-prefix=W1 %s
// RUN: %clang_cl /W2 -### -- %s 2>&1 | FileCheck -check-prefix=W1 %s
// RUN: %clang_cl /W3 -### -- %s 2>&1 | FileCheck -check-prefix=W1 %s
-// RUN: %clang_cl /W4 -### -- %s 2>&1 | FileCheck -check-prefix=W1 %s
// RUN: %clang_cl /Wall -### -- %s 2>&1 | FileCheck -check-prefix=W1 %s
// W1: -Wall
+// RUN: %clang_cl /W4 -### -- %s 2>&1 | FileCheck -check-prefix=W4 %s
+// W4: -Wextra
+// W4: -Wall
+// RUN: %clang_cl /W4 /W1 -### -- %s 2>&1 | FileCheck -check-prefix=W4W1 %s
+// W4W1-NOT: -Wextra
+
// RUN: %clang_cl /WX -### -- %s 2>&1 | FileCheck -check-prefix=WX %s
// WX: -Werror
More information about the cfe-commits
mailing list