[PATCH] D131057: [Sema] -Wformat: support C23 format specifier %b %B

Fangrui Song via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 3 12:41:35 PDT 2022


MaskRay added a comment.

In D131057#3697265 <https://reviews.llvm.org/D131057#3697265>, @enh wrote:

>> I think making scanf in the same patch makes sense. Let me check existing tests...
>
> fwiw, most of the libcs seem to have been doing these separately because scanf is harder. i hope to have bionic's scanf done this week though.
>
> (note in case you haven't already that there is no %B for scanf, just %b...)

Thanks for the reminder:)  I subscribed to https://www.openwall.com/lists/libc-coord/2022/08/ but working on this issue led me to read the discussion:)

`scanf("%B", i); // expected-warning{{invalid conversion specifier 'B'}}` tests this.

In D131057#3697095 <https://reviews.llvm.org/D131057#3697095>, @dim wrote:

>> GCC 12 -Wformat -pedantic emits a warning:
>>
>>   warning: ISO C17 does not support the ‘%b’ gnu_printf format [-Wformat=]
>>
>> The behavior is not ported (and it's unclear to me how to implement it).
>
> If you really want this, I think it can be implemented by looking at `LangOpts::LangStd`.

Something like `!getLangOpts().C2X` I suppose, but I do not find how to check both `-Wformat` and `-Wpedantic`.
Also, for the nature of the diagnostic, I think something in TableGen like `def ext_... InGroup<C2x>` would make sense but using a C23/C2x related -W option would deviate from the GCC behavior.
ISTM adding the diagnostic (even if we do) is not so necessary in this patch.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D131057/new/

https://reviews.llvm.org/D131057



More information about the cfe-commits mailing list