aaron.ballman added a comment.
In D132266#3740013 <https://reviews.llvm.org/D132266#3740013>, @inclyc wrote:
> If some one use `%hhd` with an unmatched type argument. Should we emit
> diagnose like
>
> format specifies type 'int' but the argument has type 'WhateverType'
>
> instead of
>
> format specifies type 'char' but the argument has type 'WhateverType'
>
> ?
>
> It's seems that there are many regression tests about this. Should we keep
> the legacy behaviour?
I think we want the diagnostic to identify the target type from the format
specifier along with the actual and promoted type (if relevant) of the argument
that mismatches. e.g.,
float f = 1.0f;
printf("%hd", f);
I would expect this to say something like `format specifies type 'short' but
the argument has type 'double' (promoted from 'float')`.
This way users know 1) what the type of the source argument is without hunting
for it, 2) what the target type of the format specifier is without hunting down
what the specifiers mean, 3) what the actual mismatching type is.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D132266/new/
https://reviews.llvm.org/D132266
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits