1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -simplifycfg -S | \ 2*9880d681SAndroid Build Coastguard Worker; RUN: not grep select 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker;; The PHI node in this example should not be turned into a select, as we are 5*9880d681SAndroid Build Coastguard Worker;; not able to ifcvt the entire block. As such, converting to a select just 6*9880d681SAndroid Build Coastguard Worker;; introduces inefficiency without saving copies. 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine i32 @bar(i1 %C) { 9*9880d681SAndroid Build Coastguard Workerentry: 10*9880d681SAndroid Build Coastguard Worker br i1 %C, label %then, label %endif 11*9880d681SAndroid Build Coastguard Workerthen: ; preds = %entry 12*9880d681SAndroid Build Coastguard Worker %tmp.3 = call i32 @qux( ) ; <i32> [#uses=0] 13*9880d681SAndroid Build Coastguard Worker br label %endif 14*9880d681SAndroid Build Coastguard Workerendif: ; preds = %then, %entry 15*9880d681SAndroid Build Coastguard Worker %R = phi i32 [ 123, %entry ], [ 12312, %then ] ; <i32> [#uses=1] 16*9880d681SAndroid Build Coastguard Worker ;; stuff to disable tail duplication 17*9880d681SAndroid Build Coastguard Worker call i32 @qux( ) ; <i32>:0 [#uses=0] 18*9880d681SAndroid Build Coastguard Worker call i32 @qux( ) ; <i32>:1 [#uses=0] 19*9880d681SAndroid Build Coastguard Worker call i32 @qux( ) ; <i32>:2 [#uses=0] 20*9880d681SAndroid Build Coastguard Worker call i32 @qux( ) ; <i32>:3 [#uses=0] 21*9880d681SAndroid Build Coastguard Worker call i32 @qux( ) ; <i32>:4 [#uses=0] 22*9880d681SAndroid Build Coastguard Worker call i32 @qux( ) ; <i32>:5 [#uses=0] 23*9880d681SAndroid Build Coastguard Worker call i32 @qux( ) ; <i32>:6 [#uses=0] 24*9880d681SAndroid Build Coastguard Worker ret i32 %R 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerdeclare i32 @qux() 28