; Test that LICM works when there is not a loop-preheader | |
; RUN: llvm-as < %s | opt -licm | llvm-dis | |
void "testfunc"(int %i, bool %ifcond) { | |
br bool %ifcond, label %Then, label %Else | |
Then: | |
br label %Loop | |
Else: | |
br label %Loop | |
Loop: | |
%j = phi uint [0, %Then], [12, %Else], [%Next, %Loop] | |
%i = cast int %i to uint | |
%i2 = mul uint %i, 17 | |
%Next = add uint %j, %i2 | |
%cond = seteq uint %Next, 0 | |
br bool %cond, label %Out, label %Loop | |
Out: | |
ret void | |
} |