| # RUN: llc -mtriple=thumbv6m-apple-unknown-macho --run-pass=arm-cp-islands -o - %s | FileCheck %s |
| --- | |
| ; ModuleID = 'test.ll' |
| source_filename = "simple.ll" |
| target datalayout = "e-m:o-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64" |
| target triple = "thumbv6m-apple-unknown-macho" |
| |
| define i32 @foo(i32 %in) !dbg !5 { |
| call void @llvm.dbg.value(metadata i32 0, metadata !9, metadata !DIExpression()), !dbg !11 |
| switch i32 %in, label %default [ |
| i32 0, label %l0 |
| i32 1, label %l1 |
| i32 2, label %l2 |
| i32 3, label %l3 |
| ], !dbg !11 |
| |
| default: ; preds = %0 |
| ret i32 42, !dbg !12 |
| |
| l0: ; preds = %0 |
| ret i32 0, !dbg !13 |
| |
| l1: ; preds = %0 |
| ret i32 1, !dbg !14 |
| |
| l2: ; preds = %0 |
| ret i32 2, !dbg !15 |
| |
| l3: ; preds = %0 |
| ret i32 3, !dbg !16 |
| } |
| |
| ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) |
| declare void @llvm.dbg.value(metadata, metadata, metadata) #0 |
| |
| attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } |
| |
| !llvm.dbg.cu = !{!0} |
| !llvm.debugify = !{!2, !3} |
| !llvm.module.flags = !{!4} |
| |
| !0 = distinct !DICompileUnit(language: DW_LANG_C, file: !1, producer: "debugify", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug) |
| !1 = !DIFile(filename: "simple.ll", directory: "/") |
| !2 = !{i32 6} |
| !3 = !{i32 1} |
| !4 = !{i32 2, !"Debug Info Version", i32 3} |
| !5 = distinct !DISubprogram(name: "foo", linkageName: "foo", scope: null, file: !1, line: 1, type: !6, scopeLine: 1, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !8) |
| !6 = !DISubroutineType(types: !7) |
| !7 = !{} |
| !8 = !{!9} |
| !9 = !DILocalVariable(name: "1", scope: !5, file: !1, line: 1, type: !10) |
| !10 = !DIBasicType(name: "ty32", size: 32, encoding: DW_ATE_unsigned) |
| !11 = !DILocation(line: 1, column: 1, scope: !5) |
| !12 = !DILocation(line: 2, column: 1, scope: !5) |
| !13 = !DILocation(line: 3, column: 1, scope: !5) |
| !14 = !DILocation(line: 4, column: 1, scope: !5) |
| !15 = !DILocation(line: 5, column: 1, scope: !5) |
| !16 = !DILocation(line: 6, column: 1, scope: !5) |
| |
| ... |
| --- |
| name: foo |
| alignment: 2 |
| exposesReturnsTwice: false |
| legalized: false |
| regBankSelected: false |
| selected: false |
| failedISel: false |
| tracksRegLiveness: true |
| hasWinCFI: false |
| callsEHReturn: false |
| callsUnwindInit: false |
| hasEHCatchret: false |
| hasEHScopes: false |
| hasEHFunclets: false |
| debugInstrRef: false |
| failsVerification: false |
| tracksDebugUserValues: true |
| registers: [] |
| liveins: |
| - { reg: '$r0', virtual-reg: '' } |
| frameInfo: |
| isFrameAddressTaken: false |
| isReturnAddressTaken: false |
| hasStackMap: false |
| hasPatchPoint: false |
| stackSize: 0 |
| offsetAdjustment: 0 |
| maxAlignment: 1 |
| adjustsStack: false |
| hasCalls: false |
| stackProtector: '' |
| functionContext: '' |
| maxCallFrameSize: 0 |
| cvBytesOfCalleeSavedRegisters: 0 |
| hasOpaqueSPAdjustment: false |
| hasVAStart: false |
| hasMustTailInVarArgFunc: false |
| hasTailCall: false |
| localFrameSize: 0 |
| savePoint: '' |
| restorePoint: '' |
| fixedStack: [] |
| stack: [] |
| callSites: [] |
| debugValueSubstitutions: [] |
| constants: [] |
| machineFunctionInfo: {} |
| jumpTable: |
| kind: inline |
| entries: |
| - id: 0 |
| blocks: [ '%bb.3', '%bb.4', '%bb.5', '%bb.6' ] |
| body: | |
| bb.0 (%ir-block.0): |
| successors: %bb.2(0x19999998), %bb.1(0x66666668) |
| liveins: $r0 |
| |
| DBG_VALUE 0, $noreg, !9, !DIExpression(), debug-location !11 |
| tCMPi8 renamable $r0, 3, 14 /* CC::al */, $noreg, implicit-def $cpsr, debug-location !11 |
| tBcc %bb.2, 8 /* CC::hi */, killed $cpsr, debug-location !11 |
| |
| bb.1 (%ir-block.0): |
| successors: %bb.3(0x20000000), %bb.4(0x20000000), %bb.5(0x20000000), %bb.6(0x20000000) |
| liveins: $r0 |
| |
| renamable $r0, dead $cpsr = tLSLri killed renamable $r0, 2, 14 /* CC::al */, $noreg |
| DBG_VALUE 0, $noreg, !9, !DIExpression(), debug-location !11 |
| renamable $r1 = tLEApcrelJT %jump-table.0, 14 /* CC::al */, $noreg |
| renamable $r0 = tLDRr renamable $r1, killed renamable $r0, 14 /* CC::al */, $noreg :: (load (s32) from jump-table) |
| renamable $r0, dead $cpsr = tADDrr killed renamable $r1, killed renamable $r0, 14 /* CC::al */, $noreg |
| tBR_JTr killed renamable $r0, %jump-table.0 |
| ; CHECK: tTBB_JT |
| |
| bb.3.l0: |
| DBG_VALUE 0, $noreg, !9, !DIExpression(), debug-location !11 |
| renamable $r0, dead $cpsr = tMOVi8 0, 14 /* CC::al */, $noreg |
| tBX_RET 14 /* CC::al */, $noreg, implicit $r0, debug-location !13 |
| |
| bb.2.default: |
| DBG_VALUE 0, $noreg, !9, !DIExpression(), debug-location !11 |
| renamable $r0, dead $cpsr = tMOVi8 42, 14 /* CC::al */, $noreg |
| tBX_RET 14 /* CC::al */, $noreg, implicit $r0, debug-location !12 |
| |
| bb.4.l1: |
| DBG_VALUE 0, $noreg, !9, !DIExpression(), debug-location !11 |
| renamable $r0, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg |
| tBX_RET 14 /* CC::al */, $noreg, implicit $r0, debug-location !14 |
| |
| bb.5.l2: |
| DBG_VALUE 0, $noreg, !9, !DIExpression(), debug-location !11 |
| renamable $r0, dead $cpsr = tMOVi8 2, 14 /* CC::al */, $noreg |
| tBX_RET 14 /* CC::al */, $noreg, implicit $r0, debug-location !15 |
| |
| bb.6.l3: |
| DBG_VALUE 0, $noreg, !9, !DIExpression(), debug-location !11 |
| renamable $r0, dead $cpsr = tMOVi8 3, 14 /* CC::al */, $noreg |
| tBX_RET 14 /* CC::al */, $noreg, implicit $r0, debug-location !16 |
| |
| ... |