1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 -arm-adjust-jump-tables=0 %s -o - | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Do not use tbb / tbh if any destination is before the jumptable. 4*9880d681SAndroid Build Coastguard Worker; rdar://7102917 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdefine i16 @main__getopt_internal_2E_exit_2E_ce(i32, i1 %b) nounwind { 7*9880d681SAndroid Build Coastguard Worker; CHECK: main__getopt_internal_2E_exit_2E_ce 8*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: tbb 9*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: tbh 10*9880d681SAndroid Build Coastguard Worker; 32-bit jump tables use explicit branches, not data regions, so make sure 11*9880d681SAndroid Build Coastguard Worker; we don't annotate this region. 12*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: data_region 13*9880d681SAndroid Build Coastguard Workerentry: 14*9880d681SAndroid Build Coastguard Worker br i1 %b, label %codeRepl127.exitStub, label %newFuncRoot 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard WorkernewFuncRoot: 17*9880d681SAndroid Build Coastguard Worker br label %_getopt_internal.exit.ce 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard WorkercodeRepl127.exitStub: ; preds = %_getopt_internal.exit.ce 20*9880d681SAndroid Build Coastguard Worker ; Add an explicit edge back to before the jump table to ensure this block 21*9880d681SAndroid Build Coastguard Worker ; is placed first. 22*9880d681SAndroid Build Coastguard Worker br i1 %b, label %newFuncRoot, label %codeRepl127.exitStub.exit 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard WorkercodeRepl127.exitStub.exit: 25*9880d681SAndroid Build Coastguard Worker ret i16 0 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerparse_options.exit.loopexit.exitStub: ; preds = %_getopt_internal.exit.ce 28*9880d681SAndroid Build Coastguard Worker ret i16 1 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerbb1.i.exitStub: ; preds = %_getopt_internal.exit.ce 31*9880d681SAndroid Build Coastguard Worker ret i16 2 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerbb90.i.exitStub: ; preds = %_getopt_internal.exit.ce 34*9880d681SAndroid Build Coastguard Worker ret i16 3 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard WorkercodeRepl104.exitStub: ; preds = %_getopt_internal.exit.ce 37*9880d681SAndroid Build Coastguard Worker ret i16 4 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard WorkercodeRepl113.exitStub: ; preds = %_getopt_internal.exit.ce 40*9880d681SAndroid Build Coastguard Worker ret i16 5 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard WorkercodeRepl51.exitStub: ; preds = %_getopt_internal.exit.ce 43*9880d681SAndroid Build Coastguard Worker ret i16 6 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard WorkercodeRepl70.exitStub: ; preds = %_getopt_internal.exit.ce 46*9880d681SAndroid Build Coastguard Worker ret i16 7 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard WorkercodeRepl119.exitStub: ; preds = %_getopt_internal.exit.ce 49*9880d681SAndroid Build Coastguard Worker ret i16 8 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard WorkercodeRepl93.exitStub: ; preds = %_getopt_internal.exit.ce 52*9880d681SAndroid Build Coastguard Worker ret i16 9 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard WorkercodeRepl101.exitStub: ; preds = %_getopt_internal.exit.ce 55*9880d681SAndroid Build Coastguard Worker ret i16 10 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard WorkercodeRepl120.exitStub: ; preds = %_getopt_internal.exit.ce 58*9880d681SAndroid Build Coastguard Worker ret i16 11 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard WorkercodeRepl89.exitStub: ; preds = %_getopt_internal.exit.ce 61*9880d681SAndroid Build Coastguard Worker ret i16 12 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard WorkercodeRepl45.exitStub: ; preds = %_getopt_internal.exit.ce 64*9880d681SAndroid Build Coastguard Worker ret i16 13 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard WorkercodeRepl58.exitStub: ; preds = %_getopt_internal.exit.ce 67*9880d681SAndroid Build Coastguard Worker ret i16 14 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard WorkercodeRepl46.exitStub: ; preds = %_getopt_internal.exit.ce 70*9880d681SAndroid Build Coastguard Worker ret i16 15 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard WorkercodeRepl50.exitStub: ; preds = %_getopt_internal.exit.ce 73*9880d681SAndroid Build Coastguard Worker ret i16 16 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard WorkercodeRepl52.exitStub: ; preds = %_getopt_internal.exit.ce 76*9880d681SAndroid Build Coastguard Worker ret i16 17 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard WorkercodeRepl53.exitStub: ; preds = %_getopt_internal.exit.ce 79*9880d681SAndroid Build Coastguard Worker ret i16 18 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard WorkercodeRepl61.exitStub: ; preds = %_getopt_internal.exit.ce 82*9880d681SAndroid Build Coastguard Worker ret i16 19 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard WorkercodeRepl85.exitStub: ; preds = %_getopt_internal.exit.ce 85*9880d681SAndroid Build Coastguard Worker ret i16 20 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard WorkercodeRepl97.exitStub: ; preds = %_getopt_internal.exit.ce 88*9880d681SAndroid Build Coastguard Worker ret i16 21 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard WorkercodeRepl79.exitStub: ; preds = %_getopt_internal.exit.ce 91*9880d681SAndroid Build Coastguard Worker ret i16 22 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard WorkercodeRepl102.exitStub: ; preds = %_getopt_internal.exit.ce 94*9880d681SAndroid Build Coastguard Worker ret i16 23 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard WorkercodeRepl54.exitStub: ; preds = %_getopt_internal.exit.ce 97*9880d681SAndroid Build Coastguard Worker ret i16 24 98*9880d681SAndroid Build Coastguard Worker 99*9880d681SAndroid Build Coastguard WorkercodeRepl57.exitStub: ; preds = %_getopt_internal.exit.ce 100*9880d681SAndroid Build Coastguard Worker ret i16 25 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard WorkercodeRepl103.exitStub: ; preds = %_getopt_internal.exit.ce 103*9880d681SAndroid Build Coastguard Worker ret i16 26 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Worker_getopt_internal.exit.ce: ; preds = %newFuncRoot 106*9880d681SAndroid Build Coastguard Worker switch i32 %0, label %codeRepl127.exitStub [ 107*9880d681SAndroid Build Coastguard Worker i32 -1, label %parse_options.exit.loopexit.exitStub 108*9880d681SAndroid Build Coastguard Worker i32 0, label %bb1.i.exitStub 109*9880d681SAndroid Build Coastguard Worker i32 63, label %bb90.i.exitStub 110*9880d681SAndroid Build Coastguard Worker i32 66, label %codeRepl104.exitStub 111*9880d681SAndroid Build Coastguard Worker i32 67, label %codeRepl113.exitStub 112*9880d681SAndroid Build Coastguard Worker i32 71, label %codeRepl51.exitStub 113*9880d681SAndroid Build Coastguard Worker i32 77, label %codeRepl70.exitStub 114*9880d681SAndroid Build Coastguard Worker i32 78, label %codeRepl119.exitStub 115*9880d681SAndroid Build Coastguard Worker i32 80, label %codeRepl93.exitStub 116*9880d681SAndroid Build Coastguard Worker i32 81, label %codeRepl101.exitStub 117*9880d681SAndroid Build Coastguard Worker i32 82, label %codeRepl120.exitStub 118*9880d681SAndroid Build Coastguard Worker i32 88, label %codeRepl89.exitStub 119*9880d681SAndroid Build Coastguard Worker i32 97, label %codeRepl45.exitStub 120*9880d681SAndroid Build Coastguard Worker i32 98, label %codeRepl58.exitStub 121*9880d681SAndroid Build Coastguard Worker i32 99, label %codeRepl46.exitStub 122*9880d681SAndroid Build Coastguard Worker i32 100, label %codeRepl50.exitStub 123*9880d681SAndroid Build Coastguard Worker i32 104, label %codeRepl52.exitStub 124*9880d681SAndroid Build Coastguard Worker i32 108, label %codeRepl53.exitStub 125*9880d681SAndroid Build Coastguard Worker i32 109, label %codeRepl61.exitStub 126*9880d681SAndroid Build Coastguard Worker i32 110, label %codeRepl85.exitStub 127*9880d681SAndroid Build Coastguard Worker i32 111, label %codeRepl97.exitStub 128*9880d681SAndroid Build Coastguard Worker i32 113, label %codeRepl79.exitStub 129*9880d681SAndroid Build Coastguard Worker i32 114, label %codeRepl102.exitStub 130*9880d681SAndroid Build Coastguard Worker i32 115, label %codeRepl54.exitStub 131*9880d681SAndroid Build Coastguard Worker i32 116, label %codeRepl57.exitStub 132*9880d681SAndroid Build Coastguard Worker i32 118, label %codeRepl103.exitStub 133*9880d681SAndroid Build Coastguard Worker ] 134*9880d681SAndroid Build Coastguard Worker} 135