1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00
llvm-mirror/test/Transforms/LoopRotate/convergent.ll
Eric Christopher a62270de2c Revert "Temporarily Revert "Add basic loop fusion pass.""
The reversion apparently deleted the test/Transforms directory.

Will be re-reverting again.

llvm-svn: 358552
2019-04-17 04:52:47 +00:00

33 lines
718 B
LLVM

; RUN: opt -S -loop-rotate < %s | FileCheck %s
; RUN: opt -S -loop-rotate -enable-mssa-loop-dependency=true -verify-memoryssa < %s | FileCheck %s
@e = global i32 10
declare void @f1(i32) convergent
declare void @f2(i32)
; The call to f1 in the loop header shouldn't be duplicated (meaning, loop
; rotation shouldn't occur), because f1 is convergent.
; CHECK: call void @f1
; CHECK-NOT: call void @f1
define void @test(i32 %x) {
entry:
br label %loop
loop:
%n.phi = phi i32 [ %n, %loop.fin ], [ 0, %entry ]
call void @f1(i32 %n.phi)
%cond = icmp eq i32 %n.phi, %x
br i1 %cond, label %exit, label %loop.fin
loop.fin:
%n = add i32 %n.phi, 1
call void @f2(i32 %n)
br label %loop
exit:
ret void
}