RE: [PATCH][next] ACPICA: Use fallthrough pseudo-keyword

From: Moore, Robert
Date: Wed Oct 14 2020 - 16:48:19 EST


I'm afraid that the macro does not compile under MSVC:

warning C4067: unexpected tokens following preprocessor directive - expected a newline (compiling source file ..\..\source\tools\acpiexec\aetests.c)

It looks like "__has_attribute" is not supported.

-----Original Message-----
From: Joe Perches <joe@xxxxxxxxxxx>
Sent: Monday, July 27, 2020 7:22 PM
To: Gustavo A. R. Silva <gustavo@xxxxxxxxxxxxxx>; Moore, Robert <robert.moore@xxxxxxxxx>; Rafael J. Wysocki <rafael@xxxxxxxxxx>; Gustavo A. R. Silva <gustavoars@xxxxxxxxxx>
Cc: Kaneda, Erik <erik.kaneda@xxxxxxxxx>; Wysocki, Rafael J <rafael.j.wysocki@xxxxxxxxx>; Len Brown <lenb@xxxxxxxxxx>; ACPI Devel Maling List <linux-acpi@xxxxxxxxxxxxxxx>; open list:ACPI COMPONENT ARCHITECTURE (ACPICA) <devel@xxxxxxxxxx>; Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH][next] ACPICA: Use fallthrough pseudo-keyword

On Mon, 2020-07-27 at 17:23 -0500, Gustavo A. R. Silva wrote:
> Hi,
>
>
> This is a macro pseudo-keyword, which expands to /* fallthrough */ for
> compilers that don't support the attribute __fallthrough__. See:

Not really.

It expands to
do {} while (0)
for compilers that do not support the __fallthrough__ attribute.

The /* fallthrough */ after that is for the human reader and is stripped before compilation.

> include/linux/compiler_attributes.h:213:
> 213 #if __has_attribute(__fallthrough__)
> 214 # define fallthrough __attribute__((__fallthrough__))
> 215 #else
> 216 # define fallthrough do {} while (0) /* fallthrough */
> 217 #endif
>
> So, any compiler (older or new) will be fine with it.

But old compilers should not emit warnings for these uses.