r255382 - [clang-cl] Let /W4 map to -Wall -Wextra instead of just -Wall.

Nico Weber via cfe-commits cfe-commits at lists.llvm.org
Tue Dec 15 11:56:49 PST 2015


Looks like the warning is still emitted frequently. It looks like cl.exe
processes /W4 before /wd4100 even though if it's passed as "/wd4100 /W4".
clang-cl probably interprets this as "first, disable Wunused-parameter,
then turn on everything in Wall and Wextra".

I suppose we could process W1-4 before all other warning flags to be
compatible with cl.exe in this regard. However, it's less clear what to do
about /Wall -- if we process /Wall before all the other flags, then -Wall
(another spelling of /Wall) will behave differently in clang and clang-cl.
Maybe that's ok?

On Tue, Dec 15, 2015 at 12:11 PM, Nico Weber <thakis at chromium.org> wrote:

> Feedback on PR25563 pretty strongly suggests that users do want most of
> this. It looks like llvm passes /wd4100 to suppress the corresponding cl
> warning. r255655 maps that to -Wno-unused-parameter – does this fix the
> problem of these bots?
>
> On Mon, Dec 14, 2015 at 10:01 PM, Reid Kleckner via cfe-commits <
> cfe-commits at lists.llvm.org> wrote:
>
>> So, this change makes it impossible to download the build lots from the
>> Windows self-hosting builders because of -Wunused-parameter errors.
>>
>> http://lab.llvm.org:8011/builders/clang-x86-win2008-selfhost/builds/5103/steps/build%20stage%202/logs/stdio
>>
>> Maybe that's an indication that users don't really want /W4 to go to
>> -Wextra?
>>
>> On Fri, Dec 11, 2015 at 2:31 PM, Nico Weber via cfe-commits <
>> cfe-commits at lists.llvm.org> wrote:
>>
>>> Author: nico
>>> Date: Fri Dec 11 16:31:16 2015
>>> New Revision: 255382
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=255382&view=rev
>>> Log:
>>> [clang-cl] Let /W4 map to -Wall -Wextra instead of just -Wall.
>>>
>>> There's no way to make a flag alias to two flags, so add a /WCL4 flag
>>> that
>>> maps to the All, Extra diag groups.  Fixes PR25563.
>>>
>>> http://reviews.llvm.org/D15350
>>>
>>> Modified:
>>>     cfe/trunk/docs/UsersManual.rst
>>>     cfe/trunk/include/clang/Basic/DiagnosticGroups.td
>>>     cfe/trunk/include/clang/Driver/CLCompatOptions.td
>>>     cfe/trunk/include/clang/Driver/Options.td
>>>     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=255382&r1=255381&r2=255382&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/docs/UsersManual.rst (original)
>>> +++ cfe/trunk/docs/UsersManual.rst Fri Dec 11 16:31:16 2015
>>> @@ -2080,7 +2080,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/Basic/DiagnosticGroups.td
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticGroups.td?rev=255382&r1=255381&r2=255382&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/include/clang/Basic/DiagnosticGroups.td (original)
>>> +++ cfe/trunk/include/clang/Basic/DiagnosticGroups.td Fri Dec 11
>>> 16:31:16 2015
>>> @@ -663,7 +663,10 @@ def Consumed       : DiagGroup<"consumed
>>>  // Note that putting warnings in -Wall will not disable them by
>>> default. If a
>>>  // warning should be active _only_ when -Wall is passed in, mark it as
>>>  // DefaultIgnore in addition to putting it here.
>>> -def : DiagGroup<"all", [Most, Parentheses, Switch, SwitchBool]>;
>>> +def All : DiagGroup<"all", [Most, Parentheses, Switch, SwitchBool]>;
>>> +
>>> +// Warnings that should be in clang-cl /w4.
>>> +def : DiagGroup<"CL4", [All, Extra]>;
>>>
>>>  // Warnings enabled by -pedantic.  This is magically filled in by
>>> TableGen.
>>>  def Pedantic : DiagGroup<"pedantic">;
>>>
>>> Modified: cfe/trunk/include/clang/Driver/CLCompatOptions.td
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CLCompatOptions.td?rev=255382&r1=255381&r2=255382&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/include/clang/Driver/CLCompatOptions.td (original)
>>> +++ cfe/trunk/include/clang/Driver/CLCompatOptions.td Fri Dec 11
>>> 16:31:16 2015
>>> @@ -119,7 +119,7 @@ def _SLASH_W0 : CLFlag<"W0">, HelpText<"
>>>  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_W4 : CLFlag<"W4">, HelpText<"Enable -Wall and -Wextra">,
>>> Alias<WCL4>;
>>>  def _SLASH_Wall : CLFlag<"Wall">, HelpText<"Enable -Wall">, Alias<Wall>;
>>>  def _SLASH_WX : CLFlag<"WX">, HelpText<"Treat warnings as errors">,
>>>    Alias<W_Joined>, AliasArgs<["error"]>;
>>>
>>> Modified: cfe/trunk/include/clang/Driver/Options.td
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=255382&r1=255381&r2=255382&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/include/clang/Driver/Options.td (original)
>>> +++ cfe/trunk/include/clang/Driver/Options.td Fri Dec 11 16:31:16 2015
>>> @@ -295,6 +295,7 @@ def Wa_COMMA : CommaJoined<["-"], "Wa,">
>>>    HelpText<"Pass the comma separated arguments in <arg> to the
>>> assembler">,
>>>    MetaVarName<"<arg>">;
>>>  def Wall : Flag<["-"], "Wall">, Group<W_Group>, Flags<[CC1Option]>;
>>> +def WCL4 : Flag<["-"], "WCL4">, Group<W_Group>, Flags<[CC1Option]>;
>>>  def Wdeprecated : Flag<["-"], "Wdeprecated">, Group<W_Group>,
>>> Flags<[CC1Option]>;
>>>  def Wno_deprecated : Flag<["-"], "Wno-deprecated">, Group<W_Group>,
>>> Flags<[CC1Option]>;
>>>  def Wextra : Flag<["-"], "Wextra">, Group<W_Group>, Flags<[CC1Option]>;
>>>
>>> Modified: cfe/trunk/test/Driver/cl-options.c
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-options.c?rev=255382&r1=255381&r2=255382&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/test/Driver/cl-options.c (original)
>>> +++ cfe/trunk/test/Driver/cl-options.c Fri Dec 11 16:31:16 2015
>>> @@ -173,9 +173,10 @@
>>>  // 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 /W4 -### -- %s 2>&1 | FileCheck -check-prefix=W4 %s
>>>  // RUN: %clang_cl /Wall -### -- %s 2>&1 | FileCheck -check-prefix=W1 %s
>>>  // W1: -Wall
>>> +// W4: -WCL4
>>>
>>>  // RUN: %clang_cl /WX -### -- %s 2>&1 | FileCheck -check-prefix=WX %s
>>>  // WX: -Werror
>>>
>>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20151215/3c3af8a2/attachment-0001.html>


More information about the cfe-commits mailing list