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