1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -relocation-model=pic -mtriple=i386-linux-gnu -asm-verbose=false \ 2*9880d681SAndroid Build Coastguard Worker; RUN: | FileCheck %s --check-prefix=CHECK-LINUX 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -relocation-model=pic -mark-data-regions -mtriple=i686-apple-darwin -asm-verbose=false \ 4*9880d681SAndroid Build Coastguard Worker; RUN: | FileCheck %s --check-prefix=CHECK-DATA 5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -relocation-model=pic -mtriple=i686-apple-darwin -asm-verbose=false \ 6*9880d681SAndroid Build Coastguard Worker; RUN: | FileCheck %s --check-prefix=CHECK-DATA 7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin | not grep 'lJTI' 8*9880d681SAndroid Build Coastguard Worker; rdar://6971437 9*9880d681SAndroid Build Coastguard Worker; rdar://7738756 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdeclare void @_Z3bari(i32) 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker; CHECK-LINUX: _Z3fooILi1EEvi: 14*9880d681SAndroid Build Coastguard Workerdefine linkonce void @_Z3fooILi1EEvi(i32 %Y) nounwind { 15*9880d681SAndroid Build Coastguard Workerentry: 16*9880d681SAndroid Build Coastguard Worker; CHECK: L0$pb 17*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: leal 18*9880d681SAndroid Build Coastguard Worker; CHECK: Ltmp0 = LJTI0_0-L0$pb 19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: addl Ltmp0(%eax,%ecx,4) 20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jmpl *%eax 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker;; When data-in-code markers are enabled, we should see them around the jump 23*9880d681SAndroid Build Coastguard Worker;; table. 24*9880d681SAndroid Build Coastguard Worker; CHECK-DATA: .data_region jt32 25*9880d681SAndroid Build Coastguard Worker; CHECK-DATA: LJTI0_0 26*9880d681SAndroid Build Coastguard Worker; CHECK-DATA: .end_data_region 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker;; When they're not enabled, make sure we don't see them at all. 29*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: .data_region 30*9880d681SAndroid Build Coastguard Worker; CHECK-LINUX-NOT: .data_region 31*9880d681SAndroid Build Coastguard Worker %Y_addr = alloca i32 ; <i32*> [#uses=2] 32*9880d681SAndroid Build Coastguard Worker %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] 33*9880d681SAndroid Build Coastguard Worker store i32 %Y, i32* %Y_addr 34*9880d681SAndroid Build Coastguard Worker %tmp = load i32, i32* %Y_addr ; <i32> [#uses=1] 35*9880d681SAndroid Build Coastguard Worker switch i32 %tmp, label %bb10 [ 36*9880d681SAndroid Build Coastguard Worker i32 0, label %bb3 37*9880d681SAndroid Build Coastguard Worker i32 1, label %bb 38*9880d681SAndroid Build Coastguard Worker i32 2, label %bb 39*9880d681SAndroid Build Coastguard Worker i32 3, label %bb 40*9880d681SAndroid Build Coastguard Worker i32 4, label %bb 41*9880d681SAndroid Build Coastguard Worker i32 5, label %bb 42*9880d681SAndroid Build Coastguard Worker i32 6, label %bb 43*9880d681SAndroid Build Coastguard Worker i32 7, label %bb 44*9880d681SAndroid Build Coastguard Worker i32 8, label %bb 45*9880d681SAndroid Build Coastguard Worker i32 9, label %bb 46*9880d681SAndroid Build Coastguard Worker i32 10, label %bb 47*9880d681SAndroid Build Coastguard Worker i32 12, label %bb1 48*9880d681SAndroid Build Coastguard Worker i32 13, label %bb5 49*9880d681SAndroid Build Coastguard Worker i32 14, label %bb6 50*9880d681SAndroid Build Coastguard Worker i32 16, label %bb2 51*9880d681SAndroid Build Coastguard Worker i32 17, label %bb4 52*9880d681SAndroid Build Coastguard Worker i32 23, label %bb8 53*9880d681SAndroid Build Coastguard Worker i32 27, label %bb7 54*9880d681SAndroid Build Coastguard Worker i32 34, label %bb9 55*9880d681SAndroid Build Coastguard Worker ] 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Workerbb: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry 58*9880d681SAndroid Build Coastguard Worker call void @_Z3bari( i32 0 ) 59*9880d681SAndroid Build Coastguard Worker br label %bb1 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Workerbb1: ; preds = %bb, %entry 62*9880d681SAndroid Build Coastguard Worker call void @_Z3bari( i32 1 ) 63*9880d681SAndroid Build Coastguard Worker br label %bb2 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Workerbb2: ; preds = %bb1, %entry 66*9880d681SAndroid Build Coastguard Worker call void @_Z3bari( i32 2 ) 67*9880d681SAndroid Build Coastguard Worker br label %bb11 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Workerbb3: ; preds = %entry 70*9880d681SAndroid Build Coastguard Worker br label %bb4 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerbb4: ; preds = %bb3, %entry 73*9880d681SAndroid Build Coastguard Worker br label %bb5 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Workerbb5: ; preds = %bb4, %entry 76*9880d681SAndroid Build Coastguard Worker br label %bb6 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Workerbb6: ; preds = %bb5, %entry 79*9880d681SAndroid Build Coastguard Worker call void @_Z3bari( i32 2 ) 80*9880d681SAndroid Build Coastguard Worker br label %bb11 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Workerbb7: ; preds = %entry 83*9880d681SAndroid Build Coastguard Worker br label %bb8 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Workerbb8: ; preds = %bb7, %entry 86*9880d681SAndroid Build Coastguard Worker br label %bb9 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Workerbb9: ; preds = %bb8, %entry 89*9880d681SAndroid Build Coastguard Worker call void @_Z3bari( i32 3 ) 90*9880d681SAndroid Build Coastguard Worker br label %bb11 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Workerbb10: ; preds = %entry 93*9880d681SAndroid Build Coastguard Worker br label %bb11 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Workerbb11: ; preds = %bb10, %bb9, %bb6, %bb2 96*9880d681SAndroid Build Coastguard Worker br label %return 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %bb11 99*9880d681SAndroid Build Coastguard Worker ret void 100*9880d681SAndroid Build Coastguard Worker} 101