blob: 555bfc1d992cc95b0bca4a3149a1c2209d9b9b3d [file] [edit]
; RUN: opt -passes='loop-mssa(simple-loop-unswitch<nontrivial>)' -S < %s | FileCheck %s
declare void @barrier() memory(read)
declare void @clobber()
; CHECK: call void @barrier()
; CHECK-NEXT: %lv = load i32, ptr %ptr
define i32 @bad_unswitch(ptr %ptr, i32 %N) {
entry:
br label %loop.header
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
call void @barrier()
%lv = load i32, ptr %ptr
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
noclobber:
br label %loop.latch
clobber:
call void @clobber()
br label %loop.latch
loop.latch:
%c = icmp ult i32 %iv, %N
%iv.next = add i32 %iv, 1
br i1 %c, label %loop.header, label %exit
exit:
ret i32 10
}