This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] assert: Suppress pedantic warning caused by statement expression [BZ# 21242]
On Wed, Jul 5, 2017 at 11:51 AM, Florian Weimer <fweimer@redhat.com> wrote:
> On 07/05/2017 05:46 PM, Zack Weinberg wrote:
>> A problem occurs to me: expressions involving VLAs _are_ evaluated
>> inside sizeof.
>
> The type of the sizeof argument would still be int (due to the
> comparison against 0), so this doesn't actually occur.
I rechecked what C99 says about sizeof and VLAs, and you're right -
the operand of sizeof is only evaluated when sizeof is _directly_
applied to a VLA. So this is indeed safe, but I think this wrinkle
should be mentioned in the comment. Perhaps
/* The first occurrence of EXPR is not evaluated due to the sizeof,
but will trigger any pedantic warnings masked by the __extension__
for the second occurrence. The explicit comparison against zero
ensures that sizeof is not directly applied to a function pointer or
bit-field (which would be ill-formed) or VLA (which would be evaluated). */
zw