From: "Philippe Mathieu-Daudé" <philmd@redhat.com>
To: Sami Mujawar <Sami.Mujawar@arm.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: Alexei Fedorov <Alexei.Fedorov@arm.com>,
Ard Biesheuvel <Ard.Biesheuvel@arm.com>,
"leif@nuviainc.com" <leif@nuviainc.com>,
Matteo Carlini <Matteo.Carlini@arm.com>,
Laura Moretta <Laura.Moretta@arm.com>, nd <nd@arm.com>
Subject: Re: [PATCH v2 2/2] ArmPlatformPkg: Fix comparison of constants warning
Date: Wed, 20 May 2020 13:37:20 +0200 [thread overview]
Message-ID: <18f8bfe7-14d2-3d3d-0e8a-265c3f7a7915@redhat.com> (raw)
In-Reply-To: <DB7PR08MB30972D4B1E9194A0DB4FE7B884B60@DB7PR08MB3097.eurprd08.prod.outlook.com>
[Top-posting is difficult to read on technical lists; it's better to
reply inline; maybe GitHub will fix this problem after all]
On 5/20/20 1:25 PM, Sami Mujawar wrote:
> Hi Philippe,
>
> I had put a descriptive message to make people aware that the pragma effects the next line of code only. But I agree we can abbreviate it as per your suggestion.
Usually #pragma should be avoided at all cost, but is acceptable as last
resort aid. Since you use it in a C source file (and not an header) it
is a bit implicit that the scope is local. Sometime too verbose
documentation is harmful. Anyway I'm diverging.
> However, there is an ongoing discussion about an alternative (by which we could avoid the pragma) on another thread at https://edk2.groups.io/g/devel/message/59948.
Good, this approach is preferable.
Regards,
Phil.
>
> Regards,
>
> Sami Mujawar
>
> -----Original Message-----
> From: Philippe Mathieu-Daudé <philmd@redhat.com>
> Sent: 20 May 2020 11:47 AM
> To: Sami Mujawar <Sami.Mujawar@arm.com>; devel@edk2.groups.io
> Cc: Alexei Fedorov <Alexei.Fedorov@arm.com>; Ard Biesheuvel <Ard.Biesheuvel@arm.com>; leif@nuviainc.com; Matteo Carlini <Matteo.Carlini@arm.com>; Laura Moretta <Laura.Moretta@arm.com>; nd <nd@arm.com>
> Subject: Re: [PATCH v2 2/2] ArmPlatformPkg: Fix comparison of constants warning
>
> Hi Sami,
>
> On 5/18/20 2:46 PM, Sami Mujawar wrote:
>> The VS2017 compiler reports 'warning C6326: potential comparison of a
>> constant with another constant' when a fixed PCD value is compared
>> with a constant value.
>>
>> The faulting code is as marked by '-->' below:
>>
>> --> if (FixedPcdGet32 (PL011UartInteger) != 0) {
>> Integer = FixedPcdGet32 (PL011UartInteger);
>> Fractional = FixedPcdGet32 (PL011UartFractional);
>> } else {
>> ...
>>
>> The macro FixedPcdGet32 (PL011UartInteger) evaluates to a macro
>> _PCD_VALUE_PL011UartInteger that is defined by the build system to
>> represent the UART Integer value. Therefore, the VS2017 compiler
>> reports the above warning.
>>
>> In this case the warning reported by the Visual Studio compiler does
>> not evaluate to an issue. However, it can be useful to detect
>> potential issues in other scenarios.
>> Other compilers may either be incapable of detecting and reporting
>> comparison with constant warnings or may be good at reducing false
>> positives. So, it is definitely useful to keep this warning enabled,
>> and disabling it case by case is a suitable option.
>>
>> Therefore, disable this warning for Visual studio compilers using the
>> pragma suppress directive that:
>> 'Pushes the current state of the pragma on the stack, disables the
>> specified warning for the next line, and then pops the warning stack
>> so that the pragma state is reset.'
>>
>> Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
>> ---
>>
>> Notes:
>> v2:
>> - Update patch to selectively suppress comparison of [SAMI]
>> constant warning and submit as a separate series.
>>
>> v1:
>> - Fix comparison of constant warning reported by VS2017 [SAMI]
>> - Various feedbacks can be seen at:
>> https://edk2.groups.io/g/devel/topic/32999801#46278
>>
>> ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c | 10 +++++++++-
>> 1 file changed, 9 insertions(+), 1 deletion(-)
>>
>> diff --git a/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
>> b/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
>> index
>> 2d3c279cce49304959953ec4a34b50e09a7d0045..3c915e1e8de22a0b0b4cc46d495a
>> 5a6cbc784013 100644
>> --- a/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
>> +++ b/ArmPlatformPkg/Library/PL011UartLib/PL011UartLib.c
>> @@ -2,7 +2,7 @@
>> Serial I/O Port library functions with no library
>> constructor/destructor
>>
>> Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
>> - Copyright (c) 2011 - 2019, ARM Ltd. All rights reserved.<BR>
>> + Copyright (c) 2011 - 2020, ARM Ltd. All rights reserved.<BR>
>>
>> SPDX-License-Identifier: BSD-2-Clause-Patent
>>
>> @@ -174,6 +174,14 @@ PL011UartInitializePort (
>> //
>>
>> // If PL011 Integer value has been defined then always ignore the
>> BAUD rate
>> +#if defined(_MSC_EXTENSIONS)
>> + // Suppress 'warning C6326' reported by Visual Studio compiler
>> +using
>> + // the suppress pragma directive that: 'Pushes the current state of
>> + // the pragma on the stack, disables the specified warning for the
>> + // next line, and then pops the warning stack so that the pragma
>> +state
>> + // is reset.'
>
> We don't need to document how #pragma works each time we use it in the source code...
>
> What about a simpler comment, referring the particular Visual Studio
> version:
>
> //
>
> // Disable 'potential comparison of a constant with another constant'
> // warning with VS2017 compiler static code analysis option is enabled //
>
>> +#pragma warning(suppress:6326)
>> +#endif
>> if (FixedPcdGet32 (PL011UartInteger) != 0) {
>> Integer = FixedPcdGet32 (PL011UartInteger);
>> Fractional = FixedPcdGet32 (PL011UartFractional);
>>
>
prev parent reply other threads:[~2020-05-20 11:37 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-18 12:46 [PATCH v3 0/2] Fix warnings reported by VS2017 compiler Sami Mujawar
2020-05-18 12:46 ` [PATCH v1-resend 1/2] ArmPlatformPkg: Fix UART divisor warning Sami Mujawar
2020-07-02 11:50 ` [edk2-devel] " Sami Mujawar
2020-05-18 12:46 ` [PATCH v2 2/2] ArmPlatformPkg: Fix comparison of constants warning Sami Mujawar
2020-05-18 17:51 ` Leif Lindholm
2020-05-20 10:47 ` Philippe Mathieu-Daudé
2020-05-20 11:25 ` Sami Mujawar
2020-05-20 11:37 ` Philippe Mathieu-Daudé [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=18f8bfe7-14d2-3d3d-0e8a-265c3f7a7915@redhat.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox