<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 12, 2017 at 8:01 PM, Davide Italiano via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">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></blockquote><div><br></div><div><br></div><div>XFAIL is not a good choice for a flaky test, because if it passes then the overall test run will still fail (with an unexpected passing test).</div><div><br></div><div>-- Sean Silva</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
--<br>
Davide<br>
<div class="HOEnZb"><div class="h5"><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>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
Davide<br>
<br>
"There are no solved problems; there are only problems that are more<br>
or less solved" -- Henri Poincare<br>
</font></span><div class="HOEnZb"><div class="h5">______________________________<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>
</div></div></blockquote></div><br></div></div>