1*9880d681SAndroid Build Coastguard Worker; Test a bunch of cases where the cfg simplification code should 2*9880d681SAndroid Build Coastguard Worker; be able to fold PHI nodes into computation in common cases. Folding the PHI 3*9880d681SAndroid Build Coastguard Worker; nodes away allows the branches to be eliminated, performing a simple form of 4*9880d681SAndroid Build Coastguard Worker; 'if conversion'. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -simplifycfg -S > %t.xform 7*9880d681SAndroid Build Coastguard Worker; RUN: not grep phi %t.xform 8*9880d681SAndroid Build Coastguard Worker; RUN: grep ret %t.xform 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workerdeclare void @use(i1) 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerdeclare void @use.upgrd.1(i32) 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerdefine void @test(i1 %c, i32 %V, i32 %V2) { 16*9880d681SAndroid Build Coastguard Worker; <label>:0 17*9880d681SAndroid Build Coastguard Worker br i1 %c, label %T, label %F 18*9880d681SAndroid Build Coastguard WorkerT: ; preds = %0 19*9880d681SAndroid Build Coastguard Worker br label %F 20*9880d681SAndroid Build Coastguard WorkerF: ; preds = %T, %0 21*9880d681SAndroid Build Coastguard Worker %B1 = phi i1 [ true, %0 ], [ false, %T ] ; <i1> [#uses=1] 22*9880d681SAndroid Build Coastguard Worker %I6 = phi i32 [ %V, %0 ], [ 0, %T ] ; <i32> [#uses=1] 23*9880d681SAndroid Build Coastguard Worker call void @use( i1 %B1 ) 24*9880d681SAndroid Build Coastguard Worker call void @use.upgrd.1( i32 %I6 ) 25*9880d681SAndroid Build Coastguard Worker ret void 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28