1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -licm -S | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; Promote value if at least one use is safe 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine i32 @f2(i32* %p, i8* %q) { 6*9880d681SAndroid Build Coastguard Workerentry: 7*9880d681SAndroid Build Coastguard Worker br label %loop.head 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerloop.head: ; preds = %cond.true, %entry 10*9880d681SAndroid Build Coastguard Worker store i32 20, i32* %p 11*9880d681SAndroid Build Coastguard Worker %tmp3.i = icmp eq i8* null, %q ; <i1> [#uses=1] 12*9880d681SAndroid Build Coastguard Worker br i1 %tmp3.i, label %exit, label %cond.true 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workercond.true: ; preds = %loop.head 15*9880d681SAndroid Build Coastguard Worker store i32 40, i32* %p 16*9880d681SAndroid Build Coastguard Worker br label %loop.head 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker; CHECK: exit: 19*9880d681SAndroid Build Coastguard Worker; CHECK: store i32 20, i32* %p 20*9880d681SAndroid Build Coastguard Workerexit: ; preds = %loop.head 21*9880d681SAndroid Build Coastguard Worker ret i32 0 22*9880d681SAndroid Build Coastguard Worker} 23*9880d681SAndroid Build Coastguard Worker 24