xref: /aosp_15_r20/external/llvm/test/Transforms/InstCombine/2008-06-19-UncondLoad.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -instcombine -S | grep load | count 3
2*9880d681SAndroid Build Coastguard Worker; PR2471
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdeclare i32 @x(i32*)
5*9880d681SAndroid Build Coastguard Workerdefine i32 @b(i32* %a, i32* %b) {
6*9880d681SAndroid Build Coastguard Workerentry:
7*9880d681SAndroid Build Coastguard Worker        %tmp1 = load i32, i32* %a
8*9880d681SAndroid Build Coastguard Worker        %tmp3 = load i32, i32* %b
9*9880d681SAndroid Build Coastguard Worker        %add = add i32 %tmp1, %tmp3
10*9880d681SAndroid Build Coastguard Worker        %call = call i32 @x( i32* %a )
11*9880d681SAndroid Build Coastguard Worker        %tobool = icmp ne i32 %add, 0
12*9880d681SAndroid Build Coastguard Worker	; not safe to turn into an uncond load
13*9880d681SAndroid Build Coastguard Worker        %cond = select i1 %tobool, i32* %b, i32* %a
14*9880d681SAndroid Build Coastguard Worker        %tmp8 = load i32, i32* %cond
15*9880d681SAndroid Build Coastguard Worker        ret i32 %tmp8
16*9880d681SAndroid Build Coastguard Worker}
17