[PATCH] D42793: [MergeICmps] Enable the MergeICmps Pass by default.

Clement Courbet via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 1 06:54:07 PST 2018


courbet created this revision.
courbet added a reviewer: spatel.

Now that PR33325 is fixed, this should always improve the generated code.


Repository:
  rL LLVM

https://reviews.llvm.org/D42793

Files:
  lib/CodeGen/TargetPassConfig.cpp
  test/CodeGen/Generic/llc-start-stop.ll


Index: test/CodeGen/Generic/llc-start-stop.ll
===================================================================
--- test/CodeGen/Generic/llc-start-stop.ll
+++ test/CodeGen/Generic/llc-start-stop.ll
@@ -13,15 +13,15 @@
 ; STOP-BEFORE-NOT: Loop Strength Reduction
 
 ; RUN: llc < %s -debug-pass=Structure -start-after=loop-reduce -o /dev/null 2>&1 | FileCheck %s -check-prefix=START-AFTER
-; START-AFTER: -machine-branch-prob -expandmemcmp
+; START-AFTER: -machine-branch-prob -mergeicmps
 ; START-AFTER: FunctionPass Manager
-; START-AFTER-NEXT: Expand memcmp() to load/stores
+; START-AFTER-NEXT: Merge contiguous icmps into a memcmp
 
 ; RUN: llc < %s -debug-pass=Structure -start-before=loop-reduce -o /dev/null 2>&1 | FileCheck %s -check-prefix=START-BEFORE
 ; START-BEFORE: -machine-branch-prob -domtree
 ; START-BEFORE: FunctionPass Manager
 ; START-BEFORE: Loop Strength Reduction
-; START-BEFORE-NEXT: Expand memcmp() to load/stores
+; START-BEFORE-NEXT: Merge contiguous icmps into a memcmp
 
 ; RUN: not llc < %s -start-before=nonexistent -o /dev/null 2>&1 | FileCheck %s -check-prefix=NONEXISTENT-START-BEFORE
 ; RUN: not llc < %s -stop-before=nonexistent -o /dev/null 2>&1 | FileCheck %s -check-prefix=NONEXISTENT-STOP-BEFORE
Index: lib/CodeGen/TargetPassConfig.cpp
===================================================================
--- lib/CodeGen/TargetPassConfig.cpp
+++ lib/CodeGen/TargetPassConfig.cpp
@@ -94,10 +94,9 @@
     "enable-implicit-null-checks",
     cl::desc("Fold null checks into faulting memory operations"),
     cl::init(false), cl::Hidden);
-static cl::opt<bool>
-    EnableMergeICmps("enable-mergeicmps",
-                     cl::desc("Merge ICmp chains into a single memcmp"),
-                     cl::init(false), cl::Hidden);
+static cl::opt<bool> DisableMergeICmps("disable-mergeicmps",
+    cl::desc("Disable MergeICmps Pass"),
+    cl::init(false), cl::Hidden);
 static cl::opt<bool> PrintLSR("print-lsr-output", cl::Hidden,
     cl::desc("Print LLVM IR produced by the loop-reduce pass"));
 static cl::opt<bool> PrintISelInput("print-isel-input", cl::Hidden,
@@ -596,7 +595,7 @@
     // loads and compares. ExpandMemCmpPass then tries to expand those calls
     // into optimally-sized loads and compares. The transforms are enabled by a
     // target lowering hook.
-    if (EnableMergeICmps)
+    if (!DisableMergeICmps)
       addPass(createMergeICmpsPass());
     addPass(createExpandMemCmpPass());
   }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D42793.132391.patch
Type: text/x-patch
Size: 2456 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180201/73d8ace5/attachment.bin>


More information about the llvm-commits mailing list