[cfe-dev] -Wtautological-constant-compare issues

Richard Smith via cfe-dev cfe-dev at lists.llvm.org
Tue Dec 19 20:52:37 PST 2017

On 20 Dec 2017 03:51, "John McCall via cfe-dev" <cfe-dev at lists.llvm.org>

On Dec 19, 2017, at 6:02 PM, Shoaib Meenai <smeenai at fb.com> wrote:

Hi all (CC some people who have been involved in this discussion already
and Hans for clang 6 release discussion),

-Wtautological-constant-compare was introduced in r315614 to diagnose
tautological comparisons against a type's maximum and minimum bounds.
However, this warning can fire spuriously when a type's size is
platform-dependent. For example, libc++ has some generic code for which the
warning fires on platforms where int and long have the same size; see
https://reviews.llvm.org/D39149 for my initial attempt to work around the
warning, and then https://reviews.llvm.org/D41368, which just silences the
warning where it's problematic.

Unfortunately, this appears to be a pretty widespread problem. For example,
Petr Hosek reported in https://reviews.llvm.org/D39462 that he had to
globally disable the warning when they rolled out a newer clang. Roman
attempted to address this problem by having the warning take type size
differences into account in https://reviews.llvm.org/D39462, but that's
tricky to implement and hit some implementation roadblocks.

I think shipping the warning in its current state in clang 6 is going to be
problematic, because there are going to be many instances of generic code
running into spurious warnings. At the very least, I think the warning
as-is shouldn't be part of -Wall. What are other people's thoughts on this

If there's significant community concern about this, and to me that
standard has been met, then I think the only reasonable solution is to take
it out of -Wall until we feel more confident in it.

I agree. I think we currently have
-Wtautological-out-of-range-constant-compare (or similar? not near a
computer right now...) as a subgroup; that should remain in -Wall as it
predates this new warning, and we should make sure we have a dedicated flag
for just the "in the range of the type" portion of the warning.


cfe-dev mailing list
cfe-dev at lists.llvm.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20171219/843ef765/attachment.html>

More information about the cfe-dev mailing list