hazohelet added a comment.

In D159138#4628858 <https://reviews.llvm.org/D159138#4628858>, @nickdesaulniers 
wrote:

> Mind adding tests for `%#X` and `%#o` as well, since you're changing the 
> behavior of those, too?
>
> I think it would also be good to have explicit tests for `%o` and `%b` where 
> the value being printed was and was not `0`.  IIUC, we cannot diagnose those 
> (unless a literal value is being printed)?
>
> (Thanks for finding that one of the kernel cases was a false positive!)

The current implementation only sees the format string and calculates the 
minimum possible length without taking into accout the actual value passed to 
it. So currently every case assumes that the value can be 0, even when a 
literal is passed.
Even if the printed expression is not literal, we can use something like 
`Expr::EvaluateAsRValue` to learn about the printed value.

As for the `%b`, it's C23 feature and `Wfortify-source` doesn't seem to support 
it yet (`%b` is considered a valid specifier, but does not increase `Size` 
here). I think `%b` tests should be added when we support it.


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

https://reviews.llvm.org/D159138

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to