[PATCH] D132266: [Clang][SemaChecking] move %hh and %h -Wformat warnings to -Wformat-pedantic

YingChi Long via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 22 07:38:16 PDT 2022


inclyc added a comment.

In D132266#3739618 <https://reviews.llvm.org/D132266#3739618>, @aaron.ballman wrote:

> In D132266#3739600 <https://reviews.llvm.org/D132266#3739600>, @inclyc wrote:
>
>> What I'm confusing is
>> Which of the following two explanations is the exact meaning of `hhd`?
>>
>> 1. consumes a 32-bit signed integer, then truncates it *inside* printf
>> 2. consumes an 8-bit signed integer
>>
>> If it is the case 1, we should not emit this warning, but N2562 said that it still seems to be 2 ?
>
> There's some confusion happening that we should clarify first. The sections you've been quoting so far are for the behavior of `fscanf` not `fprintf` and the requirements are different.
>
> For `fprintf`, `hhd` means that `fprintf` consumes an `int`-sized object by calling effectively `signed char value = (signed char)va_arg(list, int);`.
> For `fscanf`, `hhd` means that `fscanf` consumes a pointer in which to store the converted data by effectively calling `signed char *ptr = (signed char *)va_arg(list, signed char *); *ptr = value;`
>
> This patch is currently handling only the `fprintf` cases and is not addressing the `fscanf` ones.

Thanks! This completely solved my doubts. I mistakenly thought that `hhd` also corresponds to `signed char` in printf now. :)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D132266



More information about the cfe-commits mailing list