<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">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-project?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 515bab711f308c2e8299c49dd8c84ea6a2e0b60e.<br>
<br>
Modified:<br>
    llvm/trunk/lib/CodeGen/TargetPassConfig.cpp<br>
    llvm/trunk/test/CodeGen/Generic/llc-start-stop.ll<br>
    llvm/trunk/test/CodeGen/PowerPC/memcmp-mergeexpand.ll<br>
    llvm/trunk/test/CodeGen/X86/memcmp-mergeexpand.ll<br>
<br>
Modified: llvm/trunk/lib/CodeGen/TargetPassConfig.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-project/llvm/trunk/lib/CodeGen/TargetPassConfig.cpp?rev=324319&r1=324318&r2=324319&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/TargetPassConfig.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/TargetPassConfig.cpp Tue Feb  6 00:40:18 2018<br>
@@ -94,9 +94,10 @@ static cl::opt<bool> EnableImplicitNullC<br>
     "enable-implicit-null-checks",<br>
     cl::desc("Fold null checks into faulting memory operations"),<br>
     cl::init(false), cl::Hidden);<br>
-static cl::opt<bool> DisableMergeICmps("disable-mergeicmps",<br>
-    cl::desc("Disable MergeICmps Pass"),<br>
-    cl::init(false), cl::Hidden);<br>
+static cl::opt<bool><br>
+    EnableMergeICmps("enable-mergeicmps",<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-input", cl::Hidden,<br>
@@ -595,7 +596,7 @@ void TargetPassConfig::addIRPasses() {<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());<br>
     addPass(createExpandMemCmpPass());<br>
   }<br>
<br>
Modified: llvm/trunk/test/CodeGen/Generic/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-project/llvm/trunk/test/CodeGen/Generic/llc-start-stop.ll?rev=324319&r1=324318&r2=324319&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/Generic/llc-start-stop.ll (original)<br>
+++ llvm/trunk/test/CodeGen/Generic/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-START-BEFORE<br>
 ; RUN: not llc < %s -stop-before=nonexistent -o /dev/null 2>&1 | FileCheck %s -check-prefix=NONEXISTENT-STOP-BEFORE<br>
<br>
Modified: llvm/trunk/test/CodeGen/PowerPC/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-project/llvm/trunk/test/CodeGen/PowerPC/memcmp-mergeexpand.ll?rev=324319&r1=324318&r2=324319&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/PowerPC/memcmp-mergeexpand.ll (original)<br>
+++ llvm/trunk/test/CodeGen/PowerPC/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/memcmp-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-project/llvm/trunk/test/CodeGen/X86/memcmp-mergeexpand.ll?rev=324319&r1=324318&r2=324319&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/X86/memcmp-mergeexpand.ll (original)<br>
+++ llvm/trunk/test/CodeGen/X86/memcmp-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>
_______________________________________________<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/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>