1*9880d681SAndroid Build Coastguard Worker;; RUN: llc -verify-machineinstrs \ 2*9880d681SAndroid Build Coastguard Worker;; RUN: -mtriple=armv7-linux-gnueabi -filetype=obj %s -o - | \ 3*9880d681SAndroid Build Coastguard Worker;; RUN: llvm-readobj -t | FileCheck -check-prefix=ARM %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker;; RUN: llc -verify-machineinstrs \ 6*9880d681SAndroid Build Coastguard Worker;; RUN: -mtriple=thumbv7-linux-gnueabi -filetype=obj %s -o - | \ 7*9880d681SAndroid Build Coastguard Worker;; RUN: llvm-readobj -t | FileCheck -check-prefix=TMB %s 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker;; Ensure that if a jump table is generated that it has Mapping Symbols 10*9880d681SAndroid Build Coastguard Worker;; marking the data-in-code region. 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerdefine void @foo(i32* %ptr) nounwind ssp { 13*9880d681SAndroid Build Coastguard Worker %tmp = load i32, i32* %ptr, align 4 14*9880d681SAndroid Build Coastguard Worker switch i32 %tmp, label %exit [ 15*9880d681SAndroid Build Coastguard Worker i32 0, label %bb0 16*9880d681SAndroid Build Coastguard Worker i32 1, label %bb1 17*9880d681SAndroid Build Coastguard Worker i32 2, label %bb2 18*9880d681SAndroid Build Coastguard Worker i32 3, label %bb3 19*9880d681SAndroid Build Coastguard Worker ] 20*9880d681SAndroid Build Coastguard Workerbb0: 21*9880d681SAndroid Build Coastguard Worker store i32 0, i32* %ptr, align 4 22*9880d681SAndroid Build Coastguard Worker br label %exit 23*9880d681SAndroid Build Coastguard Workerbb1: 24*9880d681SAndroid Build Coastguard Worker store i32 1, i32* %ptr, align 4 25*9880d681SAndroid Build Coastguard Worker br label %exit 26*9880d681SAndroid Build Coastguard Workerbb2: 27*9880d681SAndroid Build Coastguard Worker store i32 2, i32* %ptr, align 4 28*9880d681SAndroid Build Coastguard Worker br label %exit 29*9880d681SAndroid Build Coastguard Workerbb3: 30*9880d681SAndroid Build Coastguard Worker store i32 3, i32* %ptr, align 4 31*9880d681SAndroid Build Coastguard Worker br label %exit 32*9880d681SAndroid Build Coastguard Workerexit: 33*9880d681SAndroid Build Coastguard Worker ret void 34*9880d681SAndroid Build Coastguard Worker} 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker;; ARM: Symbol { 37*9880d681SAndroid Build Coastguard Worker;; ARM: Name: $a 38*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Value: 0x0 39*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Size: 0 40*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Binding: Local 41*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Type: None 42*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Other: 43*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Section: [[MIXED_SECT:[^ ]+]] 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker;; ARM: Symbol { 46*9880d681SAndroid Build Coastguard Worker;; ARM: Name: $a 47*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Value: 0x{{[0-9A-F]+}} 48*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Size: 0 49*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Binding: Local 50*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Type: None 51*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Other: 52*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Section: [[MIXED_SECT]] 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker;; ARM: Symbol { 55*9880d681SAndroid Build Coastguard Worker;; ARM: Name: $d 56*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Value: 0x{{[0-9A-F]+}} 57*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Size: 0 58*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Binding: Local 59*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Type: None 60*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Other: 61*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Section: [[MIXED_SECT]] 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Worker;; ARM: Symbol { 64*9880d681SAndroid Build Coastguard Worker;; ARM: Name: $d 65*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Value: 0x0 66*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Size: 0 67*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Binding: Local (0x0) 68*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Type: None (0x0) 69*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Other: 0 70*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Section: .ARM.exidx 71*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: } 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Worker;; ARM: Symbol { 74*9880d681SAndroid Build Coastguard Worker;; ARM: Name: $d 75*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Value: 0 76*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Size: 0 77*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Binding: Local 78*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT: Type: None 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Worker;; ARM-NOT: ${{[atd]}} 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker;; TMB: Symbol { 83*9880d681SAndroid Build Coastguard Worker;; TMB: Name: $d.1 84*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Value: 0x{{[0-9A-F]+}} 85*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Size: 0 86*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Binding: Local 87*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Type: None 88*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Other: 89*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Section: [[MIXED_SECT:[^ ]+]] 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Worker;; TMB: Symbol { 92*9880d681SAndroid Build Coastguard Worker;; TMB: Name: $t 93*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Value: 0x0 94*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Size: 0 95*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Binding: Local 96*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Type: None 97*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Other: 98*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Section: [[MIXED_SECT]] 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Worker;; TMB: Symbol { 101*9880d681SAndroid Build Coastguard Worker;; TMB: Name: $t 102*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Value: 0x{{[0-9A-F]+}} 103*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Size: 0 104*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Binding: Local 105*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Type: None 106*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Other: 107*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT: Section: [[MIXED_SECT]] 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Worker 110*9880d681SAndroid Build Coastguard Worker;; TMB-NOT: ${{[atd]}} 111*9880d681SAndroid Build Coastguard Worker 112