1*9880d681SAndroid Build Coastguard Worker; RUN: llc -verify-machineinstrs -mcpu=i386 < %s 2*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32" 3*9880d681SAndroid Build Coastguard Workertarget triple = "i386-pc-linux-gnu" 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; The bb.i basic block gets split while emitting the schedule because 6*9880d681SAndroid Build Coastguard Worker; -mcpu=i386 doesn't have CMOV.' 7*9880d681SAndroid Build Coastguard Worker; 8*9880d681SAndroid Build Coastguard Worker; That causes the PHI to be updated wrong because the jumptable data structure is remembering the original MBB. 9*9880d681SAndroid Build Coastguard Worker; 10*9880d681SAndroid Build Coastguard Worker; -cgp-critical-edge-splitting=0 prevents the edge to PHI from being split. 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker@.str146 = external constant [4 x i8], align 1 13*9880d681SAndroid Build Coastguard Worker@.str706 = external constant [4 x i8], align 1 14*9880d681SAndroid Build Coastguard Worker@.str1189 = external constant [5 x i8], align 1 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerdeclare i32 @memcmp(i8* nocapture, i8* nocapture, i32) nounwind readonly 17*9880d681SAndroid Build Coastguard Workerdeclare i32 @strlen(i8* nocapture) nounwind readonly 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerdefine hidden zeroext i8 @f(i8* %this, i8* %Name.0, i32 %Name.1, i8* noalias %NameLoc, i8* %Operands) nounwind align 2 { 20*9880d681SAndroid Build Coastguard Workerbb.i: 21*9880d681SAndroid Build Coastguard Worker %0 = icmp eq i8 undef, 0 22*9880d681SAndroid Build Coastguard Worker %iftmp.285.0 = select i1 %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str1189, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str706, i32 0, i32 0) 23*9880d681SAndroid Build Coastguard Worker %1 = call i32 @strlen(i8* %iftmp.285.0) nounwind readonly 24*9880d681SAndroid Build Coastguard Worker switch i32 %Name.1, label %_ZNK4llvm12StringSwitchINS_9StringRefES1_E7DefaultERKS1_.exit [ 25*9880d681SAndroid Build Coastguard Worker i32 3, label %bb1.i 26*9880d681SAndroid Build Coastguard Worker i32 4, label %bb1.i1237 27*9880d681SAndroid Build Coastguard Worker i32 5, label %bb1.i1266 28*9880d681SAndroid Build Coastguard Worker i32 6, label %bb1.i1275 29*9880d681SAndroid Build Coastguard Worker i32 2, label %bb1.i1434 30*9880d681SAndroid Build Coastguard Worker i32 8, label %bb1.i1523 31*9880d681SAndroid Build Coastguard Worker i32 7, label %bb1.i1537 32*9880d681SAndroid Build Coastguard Worker ] 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerbb1.i: ; preds = %bb.i 35*9880d681SAndroid Build Coastguard Worker unreachable 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workerbb1.i1237: ; preds = %bb.i 38*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb.i1820, label %bb1.i1241 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerbb1.i1241: ; preds = %bb1.i1237 41*9880d681SAndroid Build Coastguard Worker unreachable 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerbb1.i1266: ; preds = %bb.i 44*9880d681SAndroid Build Coastguard Worker unreachable 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Workerbb1.i1275: ; preds = %bb.i 47*9880d681SAndroid Build Coastguard Worker unreachable 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Workerbb1.i1434: ; preds = %bb.i 50*9880d681SAndroid Build Coastguard Worker unreachable 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Workerbb1.i1523: ; preds = %bb.i 53*9880d681SAndroid Build Coastguard Worker unreachable 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Workerbb1.i1537: ; preds = %bb.i 56*9880d681SAndroid Build Coastguard Worker unreachable 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workerbb.i1820: ; preds = %bb1.i1237 59*9880d681SAndroid Build Coastguard Worker br label %_ZNK4llvm12StringSwitchINS_9StringRefES1_E7DefaultERKS1_.exit 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker_ZNK4llvm12StringSwitchINS_9StringRefES1_E7DefaultERKS1_.exit: ; preds = %bb.i1820, %bb.i 62*9880d681SAndroid Build Coastguard Worker %PatchedName.0.0 = phi i8* [ undef, %bb.i1820 ], [ %Name.0, %bb.i ] 63*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb141, label %_ZNK4llvm9StringRef10startswithES0_.exit 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker_ZNK4llvm9StringRef10startswithES0_.exit: ; preds = %_ZNK4llvm12StringSwitchINS_9StringRefES1_E7DefaultERKS1_.exit 66*9880d681SAndroid Build Coastguard Worker %2 = call i32 @memcmp(i8* %PatchedName.0.0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str146, i32 0, i32 0), i32 3) nounwind readonly 67*9880d681SAndroid Build Coastguard Worker unreachable 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Workerbb141: ; preds = %_ZNK4llvm12StringSwitchINS_9StringRefES1_E7DefaultERKS1_.exit 70*9880d681SAndroid Build Coastguard Worker unreachable 71*9880d681SAndroid Build Coastguard Worker} 72