On Tue, Sep 25, 2012 at 5:29 PM, Hans Wennborg <[email protected]> wrote:

> On Tue, Sep 18, 2012 at 6:37 PM, Fariborz Jahanian <[email protected]>
> wrote:
> > Author: fjahanian
> > Date: Tue Sep 18 12:37:21 2012
> > New Revision: 164143
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=164143&view=rev
> > Log:
> > c: warn when an integer value comparison with an
> > integral expression have the obvious result.
> > Patch reviewed by John McCall off line.
> > // rdar://12202422
>
> This triggers a couple of warnings in Chromium. (We're tracking it at
> http://crbug.com/151927) Most look like bugs, but this one doesn't
> really:
>
> /usr/local/google/work/chrome/src/v8/src/utils.h:977:20: warning:
> comparison of constant 32 with expression of type
> 'v8::internal::AstPropertiesFlag' is always true
> [-Wtautological-constant-out-of-range-compare]
>     ASSERT(element < static_cast<int>(sizeof(T) * CHAR_BIT));
>     ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> The code, with context, is available at [1]. This is in a class
> template, and 'element' has the type of a template parameter, so
> depending on what type the template is instantiated with, the
> comparison might be tautological or not. Perhaps the warning shouldn't
> fire for expressions that depend on template parameters?
>
> Thanks,
> Hans
>
>  1. code.google.com/searchframe#W9JxUuHYyMg/trunk/src/utils.h&l=976
>

I concur with you on this. I had the case of tautological comparisons
several times (with gcc) in template functions and this is annoying. If I
remember correctly I cheated by casting the small value (here "element") to
a suitable big integer prior to the comparison, but it's annoying
(especially if ones has to switch between signed and unsigned versions of
the big integer...).

-- Matthieu.
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to