[clang] [Sema] -Wformat: warn about C23 %b %B when not in C23 language mode (PR #126694)
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 11 07:16:18 PST 2025
AaronBallman wrote:
> The validation of %b and %B was done without taking into account the current language mode, which means that %b and %B could have been used in format strings before they were supported.
On the one hand, yes, this is correct. On the other hand, a C23-based standard library is not going to know that the host application was compiled in C17 mode and it may very well support these modifiers: https://godbolt.org/z/G7KdeKqEx So the issue is that in C23 mode, we can assume the standard library is C23-compatible, but in pre-C23 modes, we can't make assumptions one way or the other.
So I think we don't want to treat the modifiers as being unknown. Instead, I think we should issue a diagnostic along the lines `format specifier '%b' requires a C standard library that is compatible with C23; data argument may not be used by format`. I think this is a different kind of incompatibility than we've had before, so it may require more invasive changes. However, we'll need this for other format specifiers like `%wN` and `%wfN`.
https://github.com/llvm/llvm-project/pull/126694
More information about the cfe-commits
mailing list