~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/CodeGen/X86/pic_jumptable.ll

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
}