brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.8 KiB · ba4638d Raw
136 lines · plain
1; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 -arm-adjust-jump-tables=0 %s -o - | FileCheck %s2; RUN: llc -mtriple=thumbv6-eabi -mcpu=cortex-m0 -arm-adjust-jump-tables=0 %s -o - | FileCheck %s3 4; Do not use tbb / tbh if any destination is before the jumptable.5; rdar://71029176 7define i16 @main__getopt_internal_2E_exit_2E_ce(i32, i1 %b) nounwind {8; CHECK: main__getopt_internal_2E_exit_2E_ce9; CHECK-NOT: tbb10; CHECK-NOT: tbh11; 32-bit jump tables use explicit branches, not data regions, so make sure12; we don't annotate this region.13; CHECK-NOT: data_region14entry:15  br i1 %b, label %codeRepl127.exitStub, label %newFuncRoot16 17codeRepl127.exitStub:		; preds = %_getopt_internal.exit.ce18  ; Add an explicit edge back to before the jump table to ensure this block19  ; is placed first.20  br i1 %b, label %newFuncRoot, label %codeRepl127.exitStub.exit21 22codeRepl127.exitStub.exit:23	ret i16 024 25parse_options.exit.loopexit.exitStub:		; preds = %_getopt_internal.exit.ce26	ret i16 127 28bb1.i.exitStub:		; preds = %_getopt_internal.exit.ce29	ret i16 230 31bb90.i.exitStub:		; preds = %_getopt_internal.exit.ce32	ret i16 333 34codeRepl104.exitStub:		; preds = %_getopt_internal.exit.ce35	ret i16 436 37codeRepl113.exitStub:		; preds = %_getopt_internal.exit.ce38	ret i16 539 40codeRepl51.exitStub:		; preds = %_getopt_internal.exit.ce41	ret i16 642 43codeRepl70.exitStub:		; preds = %_getopt_internal.exit.ce44	ret i16 745 46codeRepl119.exitStub:		; preds = %_getopt_internal.exit.ce47	ret i16 848 49codeRepl93.exitStub:		; preds = %_getopt_internal.exit.ce50	ret i16 951 52codeRepl101.exitStub:		; preds = %_getopt_internal.exit.ce53	ret i16 1054 55codeRepl120.exitStub:		; preds = %_getopt_internal.exit.ce56	ret i16 1157 58codeRepl89.exitStub:		; preds = %_getopt_internal.exit.ce59	ret i16 1260 61codeRepl45.exitStub:		; preds = %_getopt_internal.exit.ce62	ret i16 1363 64codeRepl58.exitStub:		; preds = %_getopt_internal.exit.ce65	ret i16 1466 67codeRepl46.exitStub:		; preds = %_getopt_internal.exit.ce68	ret i16 1569 70codeRepl50.exitStub:		; preds = %_getopt_internal.exit.ce71	ret i16 1672 73codeRepl52.exitStub:		; preds = %_getopt_internal.exit.ce74	ret i16 1775 76codeRepl53.exitStub:		; preds = %_getopt_internal.exit.ce77	ret i16 1878 79codeRepl61.exitStub:		; preds = %_getopt_internal.exit.ce80	ret i16 1981 82codeRepl85.exitStub:		; preds = %_getopt_internal.exit.ce83	ret i16 2084 85codeRepl97.exitStub:		; preds = %_getopt_internal.exit.ce86	ret i16 2187 88codeRepl79.exitStub:		; preds = %_getopt_internal.exit.ce89	ret i16 2290 91codeRepl102.exitStub:		; preds = %_getopt_internal.exit.ce92	ret i16 2393 94codeRepl54.exitStub:		; preds = %_getopt_internal.exit.ce95	ret i16 2496 97codeRepl57.exitStub:		; preds = %_getopt_internal.exit.ce98	ret i16 2599 100codeRepl103.exitStub:		; preds = %_getopt_internal.exit.ce101	ret i16 26102 103newFuncRoot:104	br label %_getopt_internal.exit.ce105 106_getopt_internal.exit.ce:		; preds = %newFuncRoot107	switch i32 %0, label %codeRepl127.exitStub [108		i32 -1, label %parse_options.exit.loopexit.exitStub109		i32 0, label %bb1.i.exitStub110		i32 63, label %bb90.i.exitStub111		i32 66, label %codeRepl104.exitStub112		i32 67, label %codeRepl113.exitStub113		i32 71, label %codeRepl51.exitStub114		i32 77, label %codeRepl70.exitStub115		i32 78, label %codeRepl119.exitStub116		i32 80, label %codeRepl93.exitStub117		i32 81, label %codeRepl101.exitStub118		i32 82, label %codeRepl120.exitStub119		i32 88, label %codeRepl89.exitStub120		i32 97, label %codeRepl45.exitStub121		i32 98, label %codeRepl58.exitStub122		i32 99, label %codeRepl46.exitStub123		i32 100, label %codeRepl50.exitStub124		i32 104, label %codeRepl52.exitStub125		i32 108, label %codeRepl53.exitStub126		i32 109, label %codeRepl61.exitStub127		i32 110, label %codeRepl85.exitStub128		i32 111, label %codeRepl97.exitStub129		i32 113, label %codeRepl79.exitStub130		i32 114, label %codeRepl102.exitStub131		i32 115, label %codeRepl54.exitStub132		i32 116, label %codeRepl57.exitStub133		i32 118, label %codeRepl103.exitStub134	]135}136