1;; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort=1 \ 2;; RUN: -mtriple=armv7-linux-gnueabi -filetype=obj %s -o - | \ 3;; RUN: llvm-readobj -t | FileCheck -check-prefix=ARM %s 4 5;; RUN: llc -O0 -verify-machineinstrs -fast-isel-abort=1 \ 6;; RUN: -mtriple=thumbv7-linux-gnueabi -filetype=obj %s -o - | \ 7;; RUN: llvm-readobj -t | FileCheck -check-prefix=TMB %s 8 9;; Ensure that if a jump table is generated that it has Mapping Symbols 10;; marking the data-in-code region. 11 12define void @foo(i32* %ptr) nounwind ssp { 13 %tmp = load i32, i32* %ptr, align 4 14 switch i32 %tmp, label %default [ 15 i32 11, label %bb0 16 i32 10, label %bb1 17 i32 8, label %bb2 18 i32 4, label %bb3 19 i32 2, label %bb4 20 i32 6, label %bb5 21 i32 9, label %bb6 22 i32 15, label %bb7 23 i32 1, label %bb8 24 i32 3, label %bb9 25 i32 5, label %bb10 26 i32 30, label %bb11 27 i32 31, label %bb12 28 i32 13, label %bb13 29 i32 14, label %bb14 30 i32 20, label %bb15 31 i32 19, label %bb16 32 i32 17, label %bb17 33 i32 18, label %bb18 34 i32 21, label %bb19 35 i32 22, label %bb20 36 i32 16, label %bb21 37 i32 24, label %bb22 38 i32 25, label %bb23 39 i32 26, label %bb24 40 i32 27, label %bb25 41 i32 28, label %bb26 42 i32 23, label %bb27 43 i32 12, label %bb28 44 ] 45 46default: 47 br label %exit 48bb0: 49 br label %exit 50bb1: 51 br label %exit 52bb2: 53 br label %exit 54bb3: 55 br label %exit 56bb4: 57 br label %exit 58bb5: 59 br label %exit 60bb6: 61 br label %exit 62bb7: 63 br label %exit 64bb8: 65 br label %exit 66bb9: 67 br label %exit 68bb10: 69 br label %exit 70bb11: 71 br label %exit 72bb12: 73 br label %exit 74bb13: 75 br label %exit 76bb14: 77 br label %exit 78bb15: 79 br label %exit 80bb16: 81 br label %exit 82bb17: 83 br label %exit 84bb18: 85 br label %exit 86bb19: 87 br label %exit 88bb20: 89 br label %exit 90bb21: 91 br label %exit 92bb22: 93 br label %exit 94bb23: 95 br label %exit 96bb24: 97 br label %exit 98bb25: 99 br label %exit 100bb26: 101 br label %exit 102bb27: 103 br label %exit 104bb28: 105 br label %exit 106 107 108exit: 109 110 ret void 111} 112 113;; ARM: Symbol { 114;; ARM: Name: $a 115;; ARM-NEXT: Value: 0x0 116;; ARM-NEXT: Size: 0 117;; ARM-NEXT: Binding: Local 118;; ARM-NEXT: Type: None 119;; ARM-NEXT: Other: 120;; ARM-NEXT: Section: [[MIXED_SECT:[^ ]+]] 121 122;; ARM: Symbol { 123;; ARM: Name: $a 124;; ARM-NEXT: Value: 0x{{[0-9A-F]+}} 125;; ARM-NEXT: Size: 0 126;; ARM-NEXT: Binding: Local 127;; ARM-NEXT: Type: None 128;; ARM-NEXT: Other: 129;; ARM-NEXT: Section: [[MIXED_SECT]] 130 131;; ARM: Symbol { 132;; ARM: Name: $d 133;; ARM-NEXT: Value: 0 134;; ARM-NEXT: Size: 0 135;; ARM-NEXT: Binding: Local 136;; ARM-NEXT: Type: None 137 138;; ARM: Symbol { 139;; ARM: Name: $d 140;; ARM-NEXT: Value: 0x{{[0-9A-F]+}} 141;; ARM-NEXT: Size: 0 142;; ARM-NEXT: Binding: Local 143;; ARM-NEXT: Type: None 144;; ARM-NEXT: Other: 145;; ARM-NEXT: Section: [[MIXED_SECT]] 146 147;; ARM: Symbol { 148;; ARM: Name: $d 149;; ARM-NEXT: Value: 0x0 150;; ARM-NEXT: Size: 0 151;; ARM-NEXT: Binding: Local (0x0) 152;; ARM-NEXT: Type: None (0x0) 153;; ARM-NEXT: Other: 0 154;; ARM-NEXT: Section: .ARM.exidx 155;; ARM-NEXT: } 156 157;; ARM-NOT: ${{[atd]}} 158 159;; TMB: Symbol { 160;; TMB: Name: $d.2 161;; TMB-NEXT: Value: 0x{{[0-9A-F]+}} 162;; TMB-NEXT: Size: 0 163;; TMB-NEXT: Binding: Local 164;; TMB-NEXT: Type: None 165;; TMB-NEXT: Other: 166;; TMB-NEXT: Section: [[MIXED_SECT:[^ ]+]] 167 168;; TMB: Symbol { 169;; TMB: Name: $t 170;; TMB-NEXT: Value: 0x0 171;; TMB-NEXT: Size: 0 172;; TMB-NEXT: Binding: Local 173;; TMB-NEXT: Type: None 174;; TMB-NEXT: Other: 175;; TMB-NEXT: Section: [[MIXED_SECT]] 176 177;; TMB: Symbol { 178;; TMB: Name: $t 179;; TMB-NEXT: Value: 0x{{[0-9A-F]+}} 180;; TMB-NEXT: Size: 0 181;; TMB-NEXT: Binding: Local 182;; TMB-NEXT: Type: None 183;; TMB-NEXT: Other: 184;; TMB-NEXT: Section: [[MIXED_SECT]] 185 186 187;; TMB-NOT: ${{[atd]}} 188 189