<div dir="ltr">This test seems to be randomly failing on the bots for example<div><br></div><div><p class="MsoNormal"><a href="http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules/builds/5700">http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules/builds/5700</a><span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal"><a href="http://lab.llvm.org:8011/builders/clang-ppc64be-linux-lnt/builds/5250">http://lab.llvm.org:8011/builders/clang-ppc64be-linux-lnt/builds/5250</a><span></span></p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal"><a href="http://lab.llvm.org:8011/builders/llvm-hexagon-elf/builds/6165">http://lab.llvm.org:8011/builders/llvm-hexagon-elf/builds/6165</a><span></span></p><p class="MsoNormal"><br></p><p class="MsoNormal">But it seems to pass on the previous build and the next build. But you can go back through early builds and find a failure.  For example it also failed on build 6160 on the hexagon bot above, but it passed on 6161-6164.</p><p class="MsoNormal"><br></p></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature">~Craig</div></div>
<br><div class="gmail_quote">On Fri, May 12, 2017 at 8:22 AM, 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">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: <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>
==============================<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: <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>
==============================<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 = %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 = %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 = %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 ([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 = %while.body, %for.cond<br>
+; CHECK-NEXT:   br i1 undef, label %while.body, label %while.end<br>
+; CHECK: while.body:                                       ; preds = %while.cond<br>
+; CHECK-NEXT:   call void (i8*, ...) @printf(i8* getelementptr inbounds ([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 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 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>
</blockquote></div><br></div>