<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Feb 6, 2018 at 10:25 AM, Clement Courbet <span dir="ltr"><<a href="mailto:courbet@google.com" target="_blank">courbet@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Chandler,<div><br></div><div>Sorry about that, I'll make sure I'll ping the original commit and use the subversion revision next time.</div><div><br></div><div>BTW: Is it OK to resubmit with more asserts and revert immediately ? I think I know what's happening, but I don't have a PPC to test. How do people usually debug that kind of things ?</div></div></blockquote><div><br></div><div>Actually in this case the sanitizer builds confirmed what I though so I don't need to, but I'd still like to know for next time :)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="m_-911100309438238222HOEnZb"><div class="m_-911100309438238222h5"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 6, 2018 at 9:48 AM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@gmail.com" target="_blank">chandlerc@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Ok, last email I promise....<div><br></div><div>Just realized I was super negative all over this thread, and that isn't really warranted. Thanks for actually watching the bots and reverting the patch when something came up! Totally saved me a bunch of time tracking down the crashes I saw with Clang building itself with PGO enabled that would have taken probably a lot of time.  Great that we had already gotten back to green here.</div></div><div class="m_-911100309438238222m_6463743980277003221HOEnZb"><div class="m_-911100309438238222m_6463743980277003221h5"><br><div class="gmail_quote"><div dir="ltr">On Tue, Feb 6, 2018 at 12:47 AM Chandler Carruth <<a href="mailto:chandlerc@gmail.com" target="_blank">chandlerc@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Also, in the future, *please* mention the svn revision you are reverting, not just the git commitish. Also useful to follow up on the original commit saying it has been reverted. Lots of folks are bisecting failures, and they may find the original commit and have no idea that it has been reverted.</div><br><div class="gmail_quote"><div dir="ltr">On Tue, Feb 6, 2018 at 12:45 AM Chandler Carruth <<a href="mailto:chandlerc@gmail.com" target="_blank">chandlerc@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">It also appears to break numerous other self-host builds when using PGO of any kind. Just FYI.</div><br><div class="gmail_quote"><div dir="ltr">On Tue, Feb 6, 2018 at 12:41 AM Clement Courbet via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: courbet<br>
Date: Tue Feb  6 00:40:18 2018<br>
New Revision: 324319<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=324319&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=324319&view=rev</a><br>
Log:<br>
Revert "[MergeICmps] Enable the MergeICmps Pass by default."<br>
<br>
Breaks clang-ppc64be-linux-multistage buildbot.<br>
<br>
This reverts commit 515bab711f308c2e8299c49dd8c84e<wbr>a6a2e0b60e.<br>
<br>
Modified:<br>
    llvm/trunk/lib/CodeGen/TargetP<wbr>assConfig.cpp<br>
    llvm/trunk/test/CodeGen/Generi<wbr>c/llc-start-stop.ll<br>
    llvm/trunk/test/CodeGen/PowerP<wbr>C/memcmp-mergeexpand.ll<br>
    llvm/trunk/test/CodeGen/X86/me<wbr>mcmp-mergeexpand.ll<br>
<br>
Modified: llvm/trunk/lib/CodeGen/TargetP<wbr>assConfig.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TargetPassConfig.cpp?rev=324319&r1=324318&r2=324319&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/lib/CodeGen/T<wbr>argetPassConfig.cpp?rev=324319<wbr>&r1=324318&r2=324319&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/CodeGen/TargetP<wbr>assConfig.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/TargetP<wbr>assConfig.cpp Tue Feb  6 00:40:18 2018<br>
@@ -94,9 +94,10 @@ static cl::opt<bool> EnableImplicitNullC<br>
     "enable-implicit-null-checks"<wbr>,<br>
     cl::desc("Fold null checks into faulting memory operations"),<br>
     cl::init(false), cl::Hidden);<br>
-static cl::opt<bool> DisableMergeICmps("disable-mer<wbr>geicmps",<br>
-    cl::desc("Disable MergeICmps Pass"),<br>
-    cl::init(false), cl::Hidden);<br>
+static cl::opt<bool><br>
+    EnableMergeICmps("enable-merge<wbr>icmps",<br>
+                     cl::desc("Merge ICmp chains into a single memcmp"),<br>
+                     cl::init(false), cl::Hidden);<br>
 static cl::opt<bool> PrintLSR("print-lsr-output", cl::Hidden,<br>
     cl::desc("Print LLVM IR produced by the loop-reduce pass"));<br>
 static cl::opt<bool> PrintISelInput("print-isel-inp<wbr>ut", cl::Hidden,<br>
@@ -595,7 +596,7 @@ void TargetPassConfig::addIRPasses(<wbr>) {<br>
     // loads and compares. ExpandMemCmpPass then tries to expand those calls<br>
     // into optimally-sized loads and compares. The transforms are enabled by a<br>
     // target lowering hook.<br>
-    if (!DisableMergeICmps)<br>
+    if (EnableMergeICmps)<br>
       addPass(createMergeICmpsPass(<wbr>));<br>
     addPass(createExpandMemCmpPas<wbr>s());<br>
   }<br>
<br>
Modified: llvm/trunk/test/CodeGen/Generi<wbr>c/llc-start-stop.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/llc-start-stop.ll?rev=324319&r1=324318&r2=324319&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/test/CodeGen/<wbr>Generic/llc-start-stop.ll?rev=<wbr>324319&r1=324318&r2=324319&vie<wbr>w=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/CodeGen/Generi<wbr>c/llc-start-stop.ll (original)<br>
+++ llvm/trunk/test/CodeGen/Generi<wbr>c/llc-start-stop.ll Tue Feb  6 00:40:18 2018<br>
@@ -13,15 +13,15 @@<br>
 ; STOP-BEFORE-NOT: Loop Strength Reduction<br>
<br>
 ; RUN: llc < %s -debug-pass=Structure -start-after=loop-reduce -o /dev/null 2>&1 | FileCheck %s -check-prefix=START-AFTER<br>
-; START-AFTER: -machine-branch-prob -mergeicmps<br>
+; START-AFTER: -machine-branch-prob -expandmemcmp<br>
 ; START-AFTER: FunctionPass Manager<br>
-; START-AFTER-NEXT: Merge contiguous icmps into a memcmp<br>
+; START-AFTER-NEXT: Expand memcmp() to load/stores<br>
<br>
 ; RUN: llc < %s -debug-pass=Structure -start-before=loop-reduce -o /dev/null 2>&1 | FileCheck %s -check-prefix=START-BEFORE<br>
 ; START-BEFORE: -machine-branch-prob -domtree<br>
 ; START-BEFORE: FunctionPass Manager<br>
 ; START-BEFORE: Loop Strength Reduction<br>
-; START-BEFORE-NEXT: Merge contiguous icmps into a memcmp<br>
+; START-BEFORE-NEXT: Expand memcmp() to load/stores<br>
<br>
 ; RUN: not llc < %s -start-before=nonexistent -o /dev/null 2>&1 | FileCheck %s -check-prefix=NONEXISTENT-STAR<wbr>T-BEFORE<br>
 ; RUN: not llc < %s -stop-before=nonexistent -o /dev/null 2>&1 | FileCheck %s -check-prefix=NONEXISTENT-STOP<wbr>-BEFORE<br>
<br>
Modified: llvm/trunk/test/CodeGen/PowerP<wbr>C/memcmp-mergeexpand.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/PowerPC/memcmp-mergeexpand.ll?rev=324319&r1=324318&r2=324319&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/test/CodeGen/<wbr>PowerPC/memcmp-mergeexpand.ll?<wbr>rev=324319&r1=324318&r2=324319<wbr>&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/CodeGen/PowerP<wbr>C/memcmp-mergeexpand.ll (original)<br>
+++ llvm/trunk/test/CodeGen/PowerP<wbr>C/memcmp-mergeexpand.ll Tue Feb  6 00:40:18 2018<br>
@@ -7,12 +7,22 @@<br>
<br>
 define zeroext i1 @opeq1(<br>
 ; PPC64LE-LABEL: opeq1:<br>
-; PPC64LE:       # %bb.0: # %opeq1.exit<br>
-; PPC64LE-NEXT:    ld 3, 0(3)<br>
-; PPC64LE-NEXT:    ld 4, 0(4)<br>
-; PPC64LE-NEXT:    xor 3, 3, 4<br>
-; PPC64LE-NEXT:    cntlzd 3, 3<br>
-; PPC64LE-NEXT:    rldicl 3, 3, 58, 63<br>
+; PPC64LE:       # %bb.0: # %entry<br>
+; PPC64LE-NEXT:    lwz 5, 0(3)<br>
+; PPC64LE-NEXT:    lwz 6, 0(4)<br>
+; PPC64LE-NEXT:    cmplw 5, 6<br>
+; PPC64LE-NEXT:    bne 0, .LBB0_2<br>
+; PPC64LE-NEXT:  # %bb.1: # %land.rhs.i<br>
+; PPC64LE-NEXT:    lwz 3, 4(3)<br>
+; PPC64LE-NEXT:    lwz 4, 4(4)<br>
+; PPC64LE-NEXT:    cmpw 3, 4<br>
+; PPC64LE-NEXT:    b .LBB0_3<br>
+; PPC64LE-NEXT:  .LBB0_2:<br>
+; PPC64LE-NEXT:    crxor 2, 2, 2<br>
+; PPC64LE-NEXT:  .LBB0_3: # %opeq1.exit<br>
+; PPC64LE-NEXT:    li 3, 0<br>
+; PPC64LE-NEXT:    li 4, 1<br>
+; PPC64LE-NEXT:    isel 3, 4, 3, 2<br>
 ; PPC64LE-NEXT:    blr<br>
   %"struct.std::pair"* nocapture readonly dereferenceable(8) %a,<br>
   %"struct.std::pair"* nocapture readonly dereferenceable(8) %b) local_unnamed_addr #0 {<br>
<br>
Modified: llvm/trunk/test/CodeGen/X86/me<wbr>mcmp-mergeexpand.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/memcmp-mergeexpand.ll?rev=324319&r1=324318&r2=324319&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/test/CodeGen/<wbr>X86/memcmp-mergeexpand.ll?rev=<wbr>324319&r1=324318&r2=324319&vie<wbr>w=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/CodeGen/X86/me<wbr>mcmp-mergeexpand.ll (original)<br>
+++ llvm/trunk/test/CodeGen/X86/me<wbr>mcmp-mergeexpand.ll Tue Feb  6 00:40:18 2018<br>
@@ -8,22 +8,37 @@<br>
<br>
 define zeroext i1 @opeq1(<br>
 ; X86-LABEL: opeq1:<br>
-; X86:       # %bb.0: # %opeq1.exit<br>
+; X86:       # %bb.0: # %entry<br>
 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax<br>
 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx<br>
 ; X86-NEXT:    movl (%ecx), %edx<br>
+; X86-NEXT:    cmpl (%eax), %edx<br>
+; X86-NEXT:    jne .LBB0_1<br>
+; X86-NEXT:  # %bb.2: # %land.rhs.i<br>
 ; X86-NEXT:    movl 4(%ecx), %ecx<br>
-; X86-NEXT:    xorl (%eax), %edx<br>
-; X86-NEXT:    xorl 4(%eax), %ecx<br>
-; X86-NEXT:    orl %edx, %ecx<br>
+; X86-NEXT:    cmpl 4(%eax), %ecx<br>
 ; X86-NEXT:    sete %al<br>
+; X86-NEXT:    # kill: def $al killed $al killed $eax<br>
+; X86-NEXT:    retl<br>
+; X86-NEXT:  .LBB0_1:<br>
+; X86-NEXT:    xorl %eax, %eax<br>
+; X86-NEXT:    # kill: def $al killed $al killed $eax<br>
 ; X86-NEXT:    retl<br>
 ;<br>
 ; X64-LABEL: opeq1:<br>
-; X64:       # %bb.0: # %opeq1.exit<br>
-; X64-NEXT:    movq (%rdi), %rax<br>
-; X64-NEXT:    cmpq (%rsi), %rax<br>
+; X64:       # %bb.0: # %entry<br>
+; X64-NEXT:    movl (%rdi), %eax<br>
+; X64-NEXT:    cmpl (%rsi), %eax<br>
+; X64-NEXT:    jne .LBB0_1<br>
+; X64-NEXT:  # %bb.2: # %land.rhs.i<br>
+; X64-NEXT:    movl 4(%rdi), %eax<br>
+; X64-NEXT:    cmpl 4(%rsi), %eax<br>
 ; X64-NEXT:    sete %al<br>
+; X64-NEXT:    # kill: def $al killed $al killed $eax<br>
+; X64-NEXT:    retq<br>
+; X64-NEXT:  .LBB0_1:<br>
+; X64-NEXT:    xorl %eax, %eax<br>
+; X64-NEXT:    # kill: def $al killed $al killed $eax<br>
 ; X64-NEXT:    retq<br>
   %"struct.std::pair"* nocapture readonly dereferenceable(8) %a,<br>
   %"struct.std::pair"* nocapture readonly dereferenceable(8) %b) local_unnamed_addr #0 {<br>
<br>
<br>
______________________________<wbr>_________________<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/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div></blockquote></div></blockquote></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div></div>