blob: c2feec5303c32a6264997d3a7d934c0c93a169e6 [file] [log] [blame]
;; RUN: llc -O0 -mtriple=armv7-linux-gnueabi -filetype=obj %s -o - | \
;; RUN: elf-dump | FileCheck -check-prefix=ARM %s
;; RUN: llc -O0 -mtriple=thumbv7-linux-gnueabi -filetype=obj %s -o - | \
;; RUN: elf-dump --dump-section-data | FileCheck -check-prefix=TMB %s
;; Ensure that if a jump table is generated that it has Mapping Symbols
;; marking the data-in-code region.
define void @foo(i32* %ptr) nounwind ssp {
%tmp = load i32* %ptr, align 4
switch i32 %tmp, label %default [
i32 11, label %bb0
i32 10, label %bb1
i32 8, label %bb2
i32 4, label %bb3
i32 2, label %bb4
i32 6, label %bb5
i32 9, label %bb6
i32 15, label %bb7
i32 1, label %bb8
i32 3, label %bb9
i32 5, label %bb10
i32 30, label %bb11
i32 31, label %bb12
i32 13, label %bb13
i32 14, label %bb14
i32 20, label %bb15
i32 19, label %bb16
i32 17, label %bb17
i32 18, label %bb18
i32 21, label %bb19
i32 22, label %bb20
i32 16, label %bb21
i32 24, label %bb22
i32 25, label %bb23
i32 26, label %bb24
i32 27, label %bb25
i32 28, label %bb26
i32 23, label %bb27
i32 12, label %bb28
]
default:
br label %exit
bb0:
br label %exit
bb1:
br label %exit
bb2:
br label %exit
bb3:
br label %exit
bb4:
br label %exit
bb5:
br label %exit
bb6:
br label %exit
bb7:
br label %exit
bb8:
br label %exit
bb9:
br label %exit
bb10:
br label %exit
bb11:
br label %exit
bb12:
br label %exit
bb13:
br label %exit
bb14:
br label %exit
bb15:
br label %exit
bb16:
br label %exit
bb17:
br label %exit
bb18:
br label %exit
bb19:
br label %exit
bb20:
br label %exit
bb21:
br label %exit
bb22:
br label %exit
bb23:
br label %exit
bb24:
br label %exit
bb25:
br label %exit
bb26:
br label %exit
bb27:
br label %exit
bb28:
br label %exit
exit:
ret void
}
;; ARM: # Symbol 2
;; ARM-NEXT: $a
;; ARM-NEXT: 'st_value', 0x00000000
;; ARM-NEXT: 'st_size', 0x00000000
;; ARM-NEXT: 'st_bind', 0x0
;; ARM-NEXT: 'st_type', 0x0
;; ARM-NEXT: 'st_other'
;; ARM-NEXT: 'st_shndx', [[MIXED_SECT:0x[0-9a-f]+]]
;; ARM: # Symbol 3
;; ARM-NEXT: $a
;; ARM-NEXT: 'st_value', 0x000000ac
;; ARM-NEXT: 'st_size', 0x00000000
;; ARM-NEXT: 'st_bind', 0x0
;; ARM-NEXT: 'st_type', 0x0
;; ARM-NEXT: 'st_other'
;; ARM-NEXT: 'st_shndx', [[MIXED_SECT]]
;; ARM: # Symbol 4
;; ARM-NEXT: $d
;; ARM-NEXT: 'st_value', 0x00000000
;; ARM-NEXT: 'st_size', 0x00000000
;; ARM-NEXT: 'st_bind', 0x0
;; ARM-NEXT: 'st_type', 0x0
;; ARM: # Symbol 5
;; ARM-NEXT: $d
;; ARM-NEXT: 'st_value', 0x00000030
;; ARM-NEXT: 'st_size', 0x00000000
;; ARM-NEXT: 'st_bind', 0x0
;; ARM-NEXT: 'st_type', 0x0
;; ARM-NEXT: 'st_other'
;; ARM-NEXT: 'st_shndx', [[MIXED_SECT]]
;; ARM-NOT: ${{[atd]}}
;; TMB: # Symbol 3
;; TMB-NEXT: $d
;; TMB-NEXT: 'st_value', 0x00000016
;; TMB-NEXT: 'st_size', 0x00000000
;; TMB-NEXT: 'st_bind', 0x0
;; TMB-NEXT: 'st_type', 0x0
;; TMB-NEXT: 'st_other'
;; TMB-NEXT: 'st_shndx', [[MIXED_SECT:0x[0-9a-f]+]]
;; TMB: # Symbol 4
;; TMB-NEXT: $t
;; TMB-NEXT: 'st_value', 0x00000000
;; TMB-NEXT: 'st_size', 0x00000000
;; TMB-NEXT: 'st_bind', 0x0
;; TMB-NEXT: 'st_type', 0x0
;; TMB-NEXT: 'st_other'
;; TMB-NEXT: 'st_shndx', [[MIXED_SECT]]
;; TMB: # Symbol 5
;; TMB-NEXT: $t
;; TMB-NEXT: 'st_value', 0x00000036
;; TMB-NEXT: 'st_size', 0x00000000
;; TMB-NEXT: 'st_bind', 0x0
;; TMB-NEXT: 'st_type', 0x0
;; TMB-NEXT: 'st_other'
;; TMB-NEXT: 'st_shndx', [[MIXED_SECT]]
;; TMB-NOT: ${{[atd]}}