xref: /aosp_15_r20/external/llvm/test/Transforms/IndVarSimplify/pr24952.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt -indvars -S < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdeclare void @use(i1)
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdefine void @f() {
6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f(
7*9880d681SAndroid Build Coastguard Worker entry:
8*9880d681SAndroid Build Coastguard Worker  %x = alloca i32
9*9880d681SAndroid Build Coastguard Worker  %y = alloca i32
10*9880d681SAndroid Build Coastguard Worker  br label %loop
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Worker loop:
13*9880d681SAndroid Build Coastguard Worker  %iv = phi i32 [ 0, %entry ], [ %iv.inc, %loop ]
14*9880d681SAndroid Build Coastguard Worker  %iv.inc = add i32 %iv, 1
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Worker  %x.gep = getelementptr i32, i32* %x, i32 %iv
17*9880d681SAndroid Build Coastguard Worker  %eql = icmp eq i32* %x.gep, %y
18*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: @use(i1 true)
19*9880d681SAndroid Build Coastguard Worker  call void @use(i1 %eql)
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Worker  ; %be.cond deliberately 'false' -- we want want the trip count to be 0.
22*9880d681SAndroid Build Coastguard Worker  %be.cond = icmp ult i32 %iv, 0
23*9880d681SAndroid Build Coastguard Worker  br i1 %be.cond, label %loop, label %leave
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Worker leave:
26*9880d681SAndroid Build Coastguard Worker  ret void
27*9880d681SAndroid Build Coastguard Worker}
28