forked from OSchip/llvm-project
Disable loop re-rotation for -Oz (patch by Andrey Turetsky)
After changes in 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. Differential Revision: http://reviews.llvm.org/D10961 llvm-svn: 241897
This commit is contained in:
parent
edb0210c38
commit
da33d80e9a
|
@ -320,8 +320,8 @@ void PassManagerBuilder::populateModulePassManager(
|
|||
|
||||
// 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. Disable header duplication 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.
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
; REQUIRES: asserts
|
||||
; RUN: opt < %s -S -Os -debug -debug-only=loop-rotate 2>&1 | FileCheck %s -check-prefix=OS
|
||||
; RUN: opt < %s -S -Oz -debug -debug-only=loop-rotate 2>&1 | FileCheck %s -check-prefix=OZ
|
||||
|
||||
; Loop should be rotated for -Os but not for -Oz.
|
||||
; OS: rotating Loop at depth 1
|
||||
; OZ-NOT: rotating Loop at depth 1
|
||||
|
||||
@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
|
||||
}
|
Loading…
Reference in New Issue