[cfe-dev] Incomplete set of warnings in clang

Richard Trieu rtrieu at google.com
Mon Mar 10 20:19:25 PDT 2014


r203535 should fix that for you.


On Mon, Mar 10, 2014 at 12:35 PM, Marshall Clow <mclow.lists at gmail.com>wrote:

>
> On Mar 10, 2014, at 12:22 PM, Richard Trieu <rtrieu at google.com> wrote:
>
> Marshall,
>
> Equality comparisons appear to have their own subset of -Wunused-value in
> -Wunused-comparison.  -Wunused-comparison checks both builtin and
> overloaded == and !=, which is the two warnings you saw.  For the
> relational operators, -Wunused-value does not check for overloaded
> operators.  So a < comparison of int's would trigger -Wunused-value
> warnings while a < comparison of iterators would not.  This looks like an
> oversight from when the warning was implemented.  I think the fix is to
> move the relational comparisons into -Wunused-comparison so that relational
> overloads will also be warned on.
>
>
> Sounds good to me.
> If you don’t want to do this, I will … in about a week.
>
> — Marshall
>
>
> Richard.
>
>
> On Mon, Mar 10, 2014 at 11:23 AM, Chandler Carruth <chandlerc at google.com>wrote:
>
>> (CC-ing our local warnings expert...)
>>
>>
>> On Mon, Mar 10, 2014 at 11:13 AM, Marshall Clow <mclow.lists at gmail.com>wrote:
>>
>>> As I was working on a libc++ issue (
>>> 2263. Comparing iterators and allocator pointers with different
>>> const-character), if anyone cares, I wrote the following test program:
>>>
>>> #include <string>
>>>
>>> int main() {
>>>   std::string::iterator it;
>>>   std::string::const_iterator cit;
>>>
>>>   it == cit;
>>>   it != cit;
>>>   it < cit;
>>>   it <= cit;
>>>   it > cit;
>>>   it >= cit;
>>> }
>>>
>>> I wanted to make sure that these were all legal comparisons using libc++
>>> (and they are).
>>> I kind of expected some compiler warnings about “unused results” or
>>> something.
>>>
>>> What I didn’t expect was to get _two_ warnings. I figured either zero or
>>> some multiple of six.
>>>
>>> Apparently clang doesn’t like it if you don’t use the result of == or
>>> !=, but is perfectly happy with ignoring the results of >, >=, <, <=.
>>>
>>> Why is that?
>>>
>>> — Marshall
>>>
>>>
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140310/4d8bac82/attachment.html>


More information about the cfe-dev mailing list