<div dir="ltr">Thanks, I'm still cloning the repo from a VM :P</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jun 19, 2014 at 10:51 AM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">r211245<br>
<div class="HOEnZb"><div class="h5"><br>
On Wed, Jun 18, 2014 at 5:49 PM, David Blaikie <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>> wrote:<br>
> I think I've got it - it's just some excess (& inefficient) operator==<br>
> overloads, by the looks of things.<br>
><br>
> On Wed, Jun 18, 2014 at 5:47 PM, Nikola Smiljanic <<a href="mailto:popizdeh@gmail.com">popizdeh@gmail.com</a>> wrote:<br>
>> I'm panicking :) but it seems to be only in tools/extra so I'll try to fix<br>
>> this quickly.<br>
>><br>
>><br>
>> On Thu, Jun 19, 2014 at 10:46 AM, David Blaikie <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>> wrote:<br>
>>><br>
>>> Hm,m not even in clang, I think - just clang-tools-extra.<br>
>>><br>
>>> On Wed, Jun 18, 2014 at 5:45 PM, David Blaikie <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>> wrote:<br>
>>> > On Wed, Jun 18, 2014 at 5:26 PM, Nikola Smiljanic <<a href="mailto:popizdeh@gmail.com">popizdeh@gmail.com</a>><br>
>>> > wrote:<br>
>>> >> Author: nikola<br>
>>> >> Date: Wed Jun 18 19:26:49 2014<br>
>>> >> New Revision: 211244<br>
>>> >><br>
>>> >> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=211244&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=211244&view=rev</a><br>
>>> >> Log:<br>
>>> >> PR10140 - StringPool's PooledStringPtr has non-const operator== causing<br>
>>> >> bad OR-result.<br>
>>> >><br>
>>> >> Mark conversion operator explicit and const qualify comparison<br>
>>> >> operators.<br>
>>> ><br>
>>> > Looks like there's some breakage in Clang due to this (looks like<br>
>>> > making the bool conversion explicit found some more bugs). Not sure if<br>
>>> > you can/want to fix them quickly, or revert then fix.<br>
>>> ><br>
>>> > - David<br>
>>> ><br>
>>> >><br>
>>> >> Added:<br>
>>> >>     llvm/trunk/unittests/Support/StringPool.cpp<br>
>>> >> Modified:<br>
>>> >>     llvm/trunk/include/llvm/Support/StringPool.h<br>
>>> >>     llvm/trunk/unittests/Support/CMakeLists.txt<br>
>>> >><br>
>>> >> Modified: llvm/trunk/include/llvm/Support/StringPool.h<br>
>>> >> URL:<br>
>>> >> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/StringPool.h?rev=211244&r1=211243&r2=211244&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/StringPool.h?rev=211244&r1=211243&r2=211244&view=diff</a><br>


>>> >><br>
>>> >> ==============================================================================<br>
>>> >> --- llvm/trunk/include/llvm/Support/StringPool.h (original)<br>
>>> >> +++ llvm/trunk/include/llvm/Support/StringPool.h Wed Jun 18 19:26:49<br>
>>> >> 2014<br>
>>> >> @@ -128,10 +128,10 @@ namespace llvm {<br>
>>> >>      }<br>
>>> >><br>
>>> >>      inline const char *operator*() const { return begin(); }<br>
>>> >> -    inline operator bool() const { return S != nullptr; }<br>
>>> >> +    inline explicit operator bool() const { return S != nullptr; }<br>
>>> >><br>
>>> >> -    inline bool operator==(const PooledStringPtr &That) { return S ==<br>
>>> >> That.S; }<br>
>>> >> -    inline bool operator!=(const PooledStringPtr &That) { return S !=<br>
>>> >> That.S; }<br>
>>> >> +    inline bool operator==(const PooledStringPtr &That) const { return<br>
>>> >> S == That.S; }<br>
>>> >> +    inline bool operator!=(const PooledStringPtr &That) const { return<br>
>>> >> S != That.S; }<br>
>>> >>    };<br>
>>> >><br>
>>> >>  } // End llvm namespace<br>
>>> >><br>
>>> >> Modified: llvm/trunk/unittests/Support/CMakeLists.txt<br>
>>> >> URL:<br>
>>> >> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/CMakeLists.txt?rev=211244&r1=211243&r2=211244&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/CMakeLists.txt?rev=211244&r1=211243&r2=211244&view=diff</a><br>


>>> >><br>
>>> >> ==============================================================================<br>
>>> >> --- llvm/trunk/unittests/Support/CMakeLists.txt (original)<br>
>>> >> +++ llvm/trunk/unittests/Support/CMakeLists.txt Wed Jun 18 19:26:49<br>
>>> >> 2014<br>
>>> >> @@ -30,6 +30,7 @@ add_llvm_unittest(SupportTests<br>
>>> >>    ProgramTest.cpp<br>
>>> >>    RegexTest.cpp<br>
>>> >>    SourceMgrTest.cpp<br>
>>> >> +  StringPool.cpp<br>
>>> >>    SwapByteOrderTest.cpp<br>
>>> >>    ThreadLocalTest.cpp<br>
>>> >>    TimeValueTest.cpp<br>
>>> >><br>
>>> >> Added: llvm/trunk/unittests/Support/StringPool.cpp<br>
>>> >> URL:<br>
>>> >> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/StringPool.cpp?rev=211244&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/StringPool.cpp?rev=211244&view=auto</a><br>


>>> >><br>
>>> >> ==============================================================================<br>
>>> >> --- llvm/trunk/unittests/Support/StringPool.cpp (added)<br>
>>> >> +++ llvm/trunk/unittests/Support/StringPool.cpp Wed Jun 18 19:26:49<br>
>>> >> 2014<br>
>>> >> @@ -0,0 +1,31 @@<br>
>>> >> +//===- llvm/unittest/Support/ThreadLocalTest.cpp - Therad Local tests<br>
>>> >> ---===//<br>
>>> >> +//<br>
>>> >> +//                    The LLVM Compiler Infrastructure<br>
>>> >> +//<br>
>>> >> +// This file is distributed under the University of Illinois Open<br>
>>> >> Source<br>
>>> >> +// License. See LICENSE.TXT for details.<br>
>>> >> +//<br>
>>> >><br>
>>> >> +//===----------------------------------------------------------------------===//<br>
>>> >> +<br>
>>> >> +#include "llvm/Support/StringPool.h"<br>
>>> >> +#include "gtest/gtest.h"<br>
>>> >> +<br>
>>> >> +using namespace llvm;<br>
>>> >> +<br>
>>> >> +namespace {<br>
>>> >> +<br>
>>> >> +TEST(PooledStringPtrTest, OperatorEquals) {<br>
>>> >> +  StringPool pool;<br>
>>> >> +  const PooledStringPtr a = pool.intern("a");<br>
>>> >> +  const PooledStringPtr b = pool.intern("b");<br>
>>> >> +  EXPECT_FALSE(a == b);<br>
>>> >> +}<br>
>>> >> +<br>
>>> >> +TEST(PooledStringPtrTest, OperatorNotEquals) {<br>
>>> >> +  StringPool pool;<br>
>>> >> +  const PooledStringPtr a = pool.intern("a");<br>
>>> >> +  const PooledStringPtr b = pool.intern("b");<br>
>>> >> +  EXPECT_TRUE(a != b);<br>
>>> >> +}<br>
>>> >> +<br>
>>> >> +}<br>
>>> >><br>
>>> >><br>
>>> >> _______________________________________________<br>
>>> >> llvm-commits mailing list<br>
>>> >> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>>> >> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
>><br>
>><br>
</div></div></blockquote></div><br></div>