<div dir="ltr">Generally we just try to avoid the false positives - even if it means dropping a few true positives, so I'd just suggest doing the first part of that check & ignoring the second part.<br><br><div class="gmail_quote"><div dir="ltr">On Mon, Jul 18, 2016 at 10:42 AM Justin Lebar <<a href="mailto:jlebar@google.com">jlebar@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">It is a clang diagnostic.<br>
<br>
> Should we fix the diagnostic rather than the code (the code seems pretty reasonable)?<br>
<br>
Maybe...  If in a macro expansion a side-effecting expression comes<br>
from a macro param and is used in both an evaluated and unevaluated<br>
context, then don't warn?  That seems awful complicated.<br>
<br>
On Mon, Jul 18, 2016 at 10:37 AM, David Blaikie <<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>> wrote:<br>
> Is that a Clang diagnostic? Should we fix the diagnostic rather than the<br>
> code (the code seems pretty reasonable)?<br>
><br>
> On Sun, Jul 17, 2016 at 11:17 AM Justin Lebar via llvm-commits<br>
> <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
>><br>
>> Author: jlebar<br>
>> Date: Sun Jul 17 13:10:30 2016<br>
>> New Revision: 275717<br>
>><br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=275717&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=275717&view=rev</a><br>
>> Log:<br>
>> Fix warnings in ImmutableSetTest and SequenceTest.<br>
>><br>
>> Doing "I++" inside of an EXPECT_* triggers<br>
>><br>
>>   warning: expression with side effects has no effect in an unevaluated<br>
>> context<br>
>><br>
>> because EXPECT_* partially expands to<br>
>><br>
>>   EqHelper<(sizeof(::testing::internal::IsNullLiteralHelper(i++)) == 1)><br>
>><br>
>> which is an unevaluated context.<br>
>><br>
>> Modified:<br>
>>     llvm/trunk/unittests/ADT/ImmutableSetTest.cpp<br>
>>     llvm/trunk/unittests/ADT/SequenceTest.cpp<br>
>><br>
>> Modified: llvm/trunk/unittests/ADT/ImmutableSetTest.cpp<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/ImmutableSetTest.cpp?rev=275717&r1=275716&r2=275717&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/ImmutableSetTest.cpp?rev=275717&r1=275716&r2=275717&view=diff</a><br>
>><br>
>> ==============================================================================<br>
>> --- llvm/trunk/unittests/ADT/ImmutableSetTest.cpp (original)<br>
>> +++ llvm/trunk/unittests/ADT/ImmutableSetTest.cpp Sun Jul 17 13:10:30 2016<br>
>> @@ -181,19 +181,22 @@ TEST_F(ImmutableSetTest, IterLongSetTest<br>
>><br>
>>    int i = 0;<br>
>>    for (ImmutableSet<long>::iterator I = S.begin(), E = S.end(); I != E;<br>
>> ++I) {<br>
>> -    ASSERT_EQ(i++, *I);<br>
>> +    ASSERT_EQ(i, *I);<br>
>> +    i++;<br>
>>    }<br>
>>    ASSERT_EQ(0, i);<br>
>><br>
>>    i = 0;<br>
>>    for (ImmutableSet<long>::iterator I = S2.begin(), E = S2.end(); I != E;<br>
>> ++I) {<br>
>> -    ASSERT_EQ(i++, *I);<br>
>> +    ASSERT_EQ(i, *I);<br>
>> +    i++;<br>
>>    }<br>
>>    ASSERT_EQ(3, i);<br>
>><br>
>>    i = 0;<br>
>>    for (ImmutableSet<long>::iterator I = S3.begin(), E = S3.end(); I != E;<br>
>> I++) {<br>
>> -    ASSERT_EQ(i++, *I);<br>
>> +    ASSERT_EQ(i, *I);<br>
>> +    i++;<br>
>>    }<br>
>>    ASSERT_EQ(6, i);<br>
>>  }<br>
>><br>
>> Modified: llvm/trunk/unittests/ADT/SequenceTest.cpp<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/SequenceTest.cpp?rev=275717&r1=275716&r2=275717&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/SequenceTest.cpp?rev=275717&r1=275716&r2=275717&view=diff</a><br>
>><br>
>> ==============================================================================<br>
>> --- llvm/trunk/unittests/ADT/SequenceTest.cpp (original)<br>
>> +++ llvm/trunk/unittests/ADT/SequenceTest.cpp Sun Jul 17 13:10:30 2016<br>
>> @@ -18,8 +18,10 @@ namespace {<br>
>><br>
>>  TEST(SequenceTest, Basic) {<br>
>>    int x = 0;<br>
>> -  for (int i : seq(0, 10))<br>
>> -    EXPECT_EQ(x++, i);<br>
>> +  for (int i : seq(0, 10)) {<br>
>> +    EXPECT_EQ(x, i);<br>
>> +    x++;<br>
>> +  }<br>
>>    EXPECT_EQ(10, x);<br>
>><br>
>>    auto my_seq = seq(0, 4);<br>
>><br>
>><br>
>> _______________________________________________<br>
>> llvm-commits mailing list<br>
>> <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div></div>