~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/CodeGen/X86/switch-jump-table.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 -mtriple=i686-pc-gnu-linux < %s | FileCheck %s
 
2
 
 
3
 
 
4
; An unreachable default destination is replaced with the most popular case label.
 
5
 
 
6
define void @sum2(i32 %x, i32* %to) {
 
7
; CHECK-LABEL: sum2:
 
8
; CHECK: movl 4(%esp), [[REG:%e[a-z]{2}]]
 
9
; CHECK: cmpl $3, [[REG]]
 
10
; CHECK: jbe .LBB0_1
 
11
; CHECK: movl $4
 
12
; CHECK: retl
 
13
; CHECK-LABEL: .LBB0_1:
 
14
; CHECK-NEXT: jmpl *.LJTI0_0(,[[REG]],4)
 
15
 
 
16
entry:
 
17
  switch i32 %x, label %default [
 
18
    i32 0, label %bb0
 
19
    i32 1, label %bb1
 
20
    i32 2, label %bb2
 
21
    i32 3, label %bb3
 
22
    i32 4, label %bb4
 
23
    i32 5, label %bb4
 
24
  ]
 
25
bb0:
 
26
  store i32 0, i32* %to
 
27
  br label %exit
 
28
bb1:
 
29
  store i32 1, i32* %to
 
30
  br label %exit
 
31
bb2:
 
32
  store i32 2, i32* %to
 
33
  br label %exit
 
34
bb3:
 
35
  store i32 3, i32* %to
 
36
  br label %exit
 
37
bb4:
 
38
  store i32 4, i32* %to
 
39
  br label %exit
 
40
exit:
 
41
  ret void
 
42
default:
 
43
  unreachable
 
44
 
 
45
; The jump table has four entries.
 
46
; CHECK-LABEL: .LJTI0_0:
 
47
; CHECK-NEXT: .long  .LBB0_2
 
48
; CHECK-NEXT: .long  .LBB0_3
 
49
; CHECK-NEXT: .long  .LBB0_4
 
50
; CHECK-NEXT: .long  .LBB0_5
 
51
; CHECK-NOT: .long
 
52
}