hazohelet marked 4 inline comments as done.
hazohelet added a comment.

Thanks for the review!



================
Comment at: clang/docs/ReleaseNotes.rst:125
 * ``-Woverriding-t-option`` is renamed to ``-Woverriding-option``.
 * ``-Winterrupt-service-routine`` is renamed to ``-Wexcessive-regsave`` as a 
generalization
 
----------------
serge-sans-paille wrote:
> ??
I'm not seeing any diff around here, so perhaps you were seeing some 
Phabricator bug?


================
Comment at: clang/test/Sema/warn-fortify-source.c:100-102
+  __builtin_snprintf(buf, 2, "%#x", n);
+  __builtin_snprintf(buf, 2, "%#X", n);
+  __builtin_snprintf(buf, 2, "%#o", n);
----------------
nickdesaulniers wrote:
> hazohelet wrote:
> > nickdesaulniers wrote:
> > > Note that GCC -Wformat-truncation can warn on some of these.
> > > 
> > > https://godbolt.org/z/jE3axWe1W
> > > 
> > > Looks like the diagnostic keeps an up and lower bounds on the estimated 
> > > format string expansion.
> > > 
> > > Trunk for Clang also warns for these, so is this change a regression? Or 
> > > are both GCC and Clang (trunk) incorrect?
> > Clang trunk is saying something factually incorrect because it says the 
> > output `will always be truncated`, when in fact `__builtin_snprintf(buf, 2, 
> > "%#x", n);` doesn't trigger truncation if `n` is zero.
> > 
> > GCC is correct but is more conservative than clang's `ALWAYS be truncated` 
> > diagnostics.
> > GCC's warning message is `... directive output MAY BE truncated` .
> > GCC doesn't warn on it when `n` is known to be zero. 
> > (https://godbolt.org/z/E51a3Pfhr)
> > 
> > GCC's behavior makes sense here because the truncation does happen whenever 
> > `n` is not zero. If the user knows `n` is zero then they have no reason to 
> > use `%#x` specifier.
> > So, I think it makes sense to assume `n` is not zero and emit diagnostics, 
> > but it definitely needs diagnostics rewording like `is likely to be 
> > truncated`.
> I see; thanks for the explanation. Sorry for the code review delay; I missed 
> this comment in my inbox.
As a future plan, I think it's generally good to follow GCC's behavior 
regarding this format warning considering GCC's high smartness on it.
I want to emit some warning here like GCC does because users are highly likely 
to expect non-zero value to be printed, but I think it's reasonable to defer it 
for now because it's not ideal to add a new warning flag when we are 
considering changing this warning's flag from `Wfortify-source` to 
`Wformat-truncation`


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