[PATCH] D10961: Disable loop re-rotation for -Oz
Andrey Turetskiy
andrey.turetskiy at gmail.com
Mon Jul 6 07:50:50 PDT 2015
aturetsk added a reviewer: chandlerc.
aturetsk added a subscriber: llvm-commits.
After changes in [[ http://reviews.llvm.org/rL231820 | rL231820 ]] loop re-rotation is performed even in -Oz mode. Since loop rotation is disabled for -Oz, it seems loop re-rotation should be disabled too.
http://reviews.llvm.org/D10961
Files:
Transforms/LoopRotate/oz-disable.ll
lib/Transforms/IPO/PassManagerBuilder.cpp
Index: lib/Transforms/IPO/PassManagerBuilder.cpp
===================================================================
--- lib/Transforms/IPO/PassManagerBuilder.cpp
+++ lib/Transforms/IPO/PassManagerBuilder.cpp
@@ -319,8 +319,8 @@
// Re-rotate loops in all our loop nests. These may have fallout out of
// rotated form due to GVN or other transformations, and the vectorizer relies
- // on the rotated form.
- MPM.add(createLoopRotatePass());
+ // on the rotated form. Disabled at -Oz.
+ MPM.add(createLoopRotatePass(SizeLevel == 2 ? 0 : -1));
// Distribute loops to allow partial vectorization. I.e. isolate dependences
// into separate loop that would otherwise inhibit vectorization.
Index: Transforms/LoopRotate/oz-disable.ll
===================================================================
--- /dev/null
+++ Transforms/LoopRotate/oz-disable.ll
@@ -0,0 +1,31 @@
+; RUN: opt -S -Os < %s | FileCheck %s -check-prefix=OS
+; RUN: opt -S -Oz < %s | FileCheck %s -check-prefix=OZ
+
+; Loop should be rotated for -Os but not for -Oz.
+; OS: icmp
+; OS: icmp
+; OZ: icmp
+; OZ-NOT: icmp
+
+ at e = global i32 10
+
+declare void @use(i32)
+
+define void @test() {
+entry:
+ %end = load i32, i32* @e
+ br label %loop
+
+loop:
+ %n.phi = phi i32 [ %n, %loop.fin ], [ 0, %entry ]
+ %cond = icmp eq i32 %n.phi, %end
+ br i1 %cond, label %exit, label %loop.fin
+
+loop.fin:
+ %n = add i32 %n.phi, 1
+ call void @use(i32 %n)
+ br label %loop
+
+exit:
+ ret void
+}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D10961.29084.patch
Type: text/x-patch
Size: 1482 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150706/a6ec6e2e/attachment.bin>
More information about the llvm-commits
mailing list