1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; This test ensures HandlePHINodesInSuccessorBlocks() is able to promote basic 4*9880d681SAndroid Build Coastguard Worker; non-legal integer types (i.e., i1, i8, i16). 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdeclare void @fooi8(i8) 7*9880d681SAndroid Build Coastguard Workerdeclare void @fooi16(i16) 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerdefine void @foo(i1 %cmp) nounwind ssp { 10*9880d681SAndroid Build Coastguard Workerentry: 11*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %cond.true, label %cond.false 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workercond.true: ; preds = %entry 14*9880d681SAndroid Build Coastguard Worker br label %cond.end 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workercond.false: ; preds = %entry 17*9880d681SAndroid Build Coastguard Worker br label %cond.end 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workercond.end: ; preds = %cond.false, %cond.true 20*9880d681SAndroid Build Coastguard Worker %cond = phi i1 [ 0, %cond.true ], [ 1, %cond.false ] 21*9880d681SAndroid Build Coastguard Worker br i1 %cond, label %cond.true8, label %cond.false8 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workercond.true8: ; preds = %cond.end 24*9880d681SAndroid Build Coastguard Worker br label %cond.end8 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workercond.false8: ; preds = %cond.end 27*9880d681SAndroid Build Coastguard Worker br label %cond.end8 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workercond.end8: ; preds = %cond.false8, %cond.true8 30*9880d681SAndroid Build Coastguard Worker %cond8 = phi i8 [ 0, %cond.true8 ], [ 1, %cond.false8 ] 31*9880d681SAndroid Build Coastguard Worker call void @fooi8(i8 %cond8) 32*9880d681SAndroid Build Coastguard Worker br i1 0, label %cond.true16, label %cond.false16 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workercond.true16: ; preds = %cond.end8 35*9880d681SAndroid Build Coastguard Worker br label %cond.end16 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workercond.false16: ; preds = %cond.end8 38*9880d681SAndroid Build Coastguard Worker br label %cond.end16 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workercond.end16: ; preds = %cond.false16, %cond.true16 41*9880d681SAndroid Build Coastguard Worker %cond16 = phi i16 [ 0, %cond.true16 ], [ 1, %cond.false16 ] 42*9880d681SAndroid Build Coastguard Worker call void @fooi16(i16 %cond16) 43*9880d681SAndroid Build Coastguard Worker ret void 44*9880d681SAndroid Build Coastguard Worker} 45