<div dir="ltr"><div><div><div><div><div>Hi Davide,<br><br></div>Sorry for getting back to you late. Got cold and was virtually away during the weekend and yesterday.<br><br></div>None of these builders is mine, and none of them is in the LLVM Lab. You would have to contact the owners directly to see if the remote access could be arranged.<br></div>So, it is good that you now have a way to reproduce the problem locally.<br><br></div>Thanks<br><br></div>Galina<br><div><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 12, 2017 at 8:03 PM, Davide Italiano <span dir="ltr"><<a href="mailto:davide@freebsd.org" target="_blank">davide@freebsd.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Galina,<br>
does this test on any of the bots you own? If so, can I access it to<br>
debug/take a look at the logs/etc.. ?<br>
I tried very hard to reproduce the problem locally without luck.<br>
<div class="HOEnZb"><div class="h5"><br>
On Fri, May 12, 2017 at 8:01 PM, Davide Italiano <<a href="mailto:davide@freebsd.org">davide@freebsd.org</a>> wrote:<br>
> I think this test is just exposing some underlying<br>
> non-determinism/problem, but I can't take a look right now<br>
> unforunately.<br>
> Given NewGVN is not the default and the change is correct, I'm<br>
> XFAIL'ing this for now, and I'll debug over the weekend (or monday at<br>
> last). Sorry if this caused troubles, but I'm as puzzled as you are.<br>
><br>
> --<br>
> Davide<br>
><br>
> On Fri, May 12, 2017 at 5:07 PM, Craig Topper <<a href="mailto:craig.topper@gmail.com">craig.topper@gmail.com</a>> wrote:<br>
>> This test seems to be randomly failing on the bots for example<br>
>><br>
>> <a href="http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules/builds/5700" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/<wbr>builders/clang-x86_64-linux-<wbr>selfhost-modules/builds/5700</a><br>
>><br>
>><br>
>><br>
>> <a href="http://lab.llvm.org:8011/builders/clang-ppc64be-linux-lnt/builds/5250" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/<wbr>builders/clang-ppc64be-linux-<wbr>lnt/builds/5250</a><br>
>><br>
>><br>
>><br>
>> <a href="http://lab.llvm.org:8011/builders/llvm-hexagon-elf/builds/6165" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/<wbr>builders/llvm-hexagon-elf/<wbr>builds/6165</a><br>
>><br>
>><br>
>> But it seems to pass on the previous build and the next build. But you can<br>
>> go back through early builds and find a failure.  For example it also failed<br>
>> on build 6160 on the hexagon bot above, but it passed on 6161-6164.<br>
>><br>
>><br>
>><br>
>> ~Craig<br>
>><br>
>> On Fri, May 12, 2017 at 8:22 AM, Davide Italiano via llvm-commits<br>
>> <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br>
>>><br>
>>> Author: davide<br>
>>> Date: Fri May 12 10:22:45 2017<br>
>>> New Revision: 302905<br>
>>><br>
>>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=302905&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=302905&view=rev</a><br>
>>> Log:<br>
>>> [NewGVN] Don't incorrectly reset the memory leader.<br>
>>><br>
>>> This code was missing a check for stores, so we were thinking the<br>
>>> congruency class didn't have any memory members, and reset the<br>
>>> memory leader.<br>
>>><br>
>>> Differential Revision:  <a href="https://reviews.llvm.org/D33056" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D33056</a><br>
>>><br>
>>> Added:<br>
>>>     llvm/trunk/test/Transforms/<wbr>NewGVN/pr32934.ll<br>
>>> Modified:<br>
>>>     llvm/trunk/lib/Transforms/<wbr>Scalar/NewGVN.cpp<br>
>>><br>
>>> Modified: llvm/trunk/lib/Transforms/<wbr>Scalar/NewGVN.cpp<br>
>>> URL:<br>
>>> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/NewGVN.cpp?rev=302905&r1=302904&r2=302905&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Transforms/Scalar/NewGVN.cpp?<wbr>rev=302905&r1=302904&r2=<wbr>302905&view=diff</a><br>
>>><br>
>>> ==============================<wbr>==============================<wbr>==================<br>
>>> --- llvm/trunk/lib/Transforms/<wbr>Scalar/NewGVN.cpp (original)<br>
>>> +++ llvm/trunk/lib/Transforms/<wbr>Scalar/NewGVN.cpp Fri May 12 10:22:45 2017<br>
>>> @@ -1409,7 +1409,7 @@ bool NewGVN::setMemoryClass(const Memory<br>
>>>          NewClass->memory_insert(MP);<br>
>>>          // This may have killed the class if it had no non-memory members<br>
>>>          if (OldClass->getMemoryLeader() == From) {<br>
>>> -          if (OldClass->memory_empty()) {<br>
>>> +          if (OldClass->definesNoMemory()) {<br>
>>>              OldClass->setMemoryLeader(<wbr>nullptr);<br>
>>>            } else {<br>
>>>              OldClass->setMemoryLeader(<wbr>getNextMemoryLeader(OldClass))<wbr>;<br>
>>><br>
>>> Added: llvm/trunk/test/Transforms/<wbr>NewGVN/pr32934.ll<br>
>>> URL:<br>
>>> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/NewGVN/pr32934.ll?rev=302905&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>Transforms/NewGVN/pr32934.ll?<wbr>rev=302905&view=auto</a><br>
>>><br>
>>> ==============================<wbr>==============================<wbr>==================<br>
>>> --- llvm/trunk/test/Transforms/<wbr>NewGVN/pr32934.ll (added)<br>
>>> +++ llvm/trunk/test/Transforms/<wbr>NewGVN/pr32934.ll Fri May 12 10:22:45 2017<br>
>>> @@ -0,0 +1,68 @@<br>
>>> +; RUN: opt -S -newgvn %s | FileCheck %s<br>
>>> +<br>
>>> +; CHECK: define void @tinkywinky() {<br>
>>> +; CHECK-NEXT: entry:<br>
>>> +; CHECK-NEXT:   %d = alloca i32, align 4<br>
>>> +; CHECK-NEXT:   store i32 0, i32* null, align 4<br>
>>> +; CHECK-NEXT:   br label %for.cond<br>
>>> +; CHECK: for.cond:                                         ; preds =<br>
>>> %if.end, %entry<br>
>>> +; CHECK-NEXT:   %0 = load i32, i32* null, align 4<br>
>>> +; CHECK-NEXT:   %cmp = icmp slt i32 %0, 1<br>
>>> +; CHECK-NEXT:   br i1 %cmp, label %for.body, label %while.cond<br>
>>> +; CHECK: for.body:                                         ; preds =<br>
>>> %for.cond<br>
>>> +; CHECK-NEXT:   %1 = load i32, i32* @a, align 4<br>
>>> +; CHECK-NEXT:   store i32 %1, i32* %d, align 4<br>
>>> +; CHECK-NEXT:   br label %L<br>
>>> +; CHECK: L:                                                ; preds =<br>
>>> %if.then, %for.body<br>
>>> +; CHECK-NEXT:   %tobool = icmp ne i32 %1, 0<br>
>>> +; CHECK-NEXT:   br i1 %tobool, label %if.then, label %if.end<br>
>>> +; CHECK: if.then:                                          ; preds = %L<br>
>>> +; CHECK-NEXT:   call void (i8*, ...) @printf(i8* getelementptr inbounds<br>
>>> ([2 x i8], [2 x i8]* @patatino, i32 0, i32 0))<br>
>>> +; CHECK-NEXT:   br label %L<br>
>>> +; CHECK: if.end:                                           ; preds = %L<br>
>>> +; CHECK-NEXT:   br label %for.cond<br>
>>> +; CHECK: while.cond:                                       ; preds =<br>
>>> %while.body, %for.cond<br>
>>> +; CHECK-NEXT:   br i1 undef, label %while.body, label %while.end<br>
>>> +; CHECK: while.body:                                       ; preds =<br>
>>> %while.cond<br>
>>> +; CHECK-NEXT:   call void (i8*, ...) @printf(i8* getelementptr inbounds<br>
>>> ([2 x i8], [2 x i8]* @patatino, i32 0, i32 0))<br>
>>> +; CHECK-NEXT:   br label %while.cond<br>
>>> +; CHECK: while.end:<br>
>>> +; CHECK-NEXT:   %2 = load i32, i32* @a, align 4<br>
>>> +; CHECK-NEXT:   store i32 %2, i32* undef, align 4<br>
>>> +; CHECK-NEXT:   ret void<br>
>>> +<br>
>>> +@a = external global i32, align 4<br>
>>> +@patatino = external unnamed_addr constant [2 x i8], align 1<br>
>>> +define void @tinkywinky() {<br>
>>> +entry:<br>
>>> +  %d = alloca i32, align 4<br>
>>> +  store i32 0, i32* null, align 4<br>
>>> +  br label %for.cond<br>
>>> +for.cond:<br>
>>> +  %0 = load i32, i32* null, align 4<br>
>>> +  %cmp = icmp slt i32 %0, 1<br>
>>> +  br i1 %cmp, label %for.body, label %while.cond<br>
>>> +for.body:<br>
>>> +  %1 = load i32, i32* @a, align 4<br>
>>> +  store i32 %1, i32* %d, align 4<br>
>>> +  br label %L<br>
>>> +L:<br>
>>> +  %2 = load i32, i32* %d, align 4<br>
>>> +  %tobool = icmp ne i32 %2, 0<br>
>>> +  br i1 %tobool, label %if.then, label %if.end<br>
>>> +if.then:<br>
>>> +  call void (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x<br>
>>> i8]* @patatino, i32 0, i32 0))<br>
>>> +  br label %L<br>
>>> +if.end:<br>
>>> +  br label %for.cond<br>
>>> +while.cond:<br>
>>> +  br i1 undef, label %while.body, label %while.end<br>
>>> +while.body:<br>
>>> +  call void (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x<br>
>>> i8]* @patatino, i32 0, i32 0))<br>
>>> +  br label %while.cond<br>
>>> +while.end:<br>
>>> +  %3 = load i32, i32* @a, align 4<br>
>>> +  store i32 %3, i32* undef, align 4<br>
>>> +  ret void<br>
>>> +}<br>
>>> +declare void @printf(i8*, ...) #1<br>
>>><br>
>>><br>
>>> ______________________________<wbr>_________________<br>
>>> llvm-commits mailing list<br>
>>> <a href="mailto:llvm-commits@lists.llvm.org">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/<wbr>mailman/listinfo/llvm-commits</a><br>
>><br>
>><br>
><br>
><br>
><br>
> --<br>
> Davide<br>
><br>
> "There are no solved problems; there are only problems that are more<br>
> or less solved" -- Henri Poincare<br>
<br>
<br>
<br>
--<br>
Davide<br>
<br>
"There are no solved problems; there are only problems that are more<br>
or less solved" -- Henri Poincare<br>
</div></div></blockquote></div><br></div></div></div></div>