xref: /aosp_15_r20/external/llvm/test/MC/ARM/data-in-code.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker;; RUN: llc -verify-machineinstrs \
2*9880d681SAndroid Build Coastguard Worker;; RUN:   -mtriple=armv7-linux-gnueabi -filetype=obj %s -o - | \
3*9880d681SAndroid Build Coastguard Worker;; RUN:   llvm-readobj -t | FileCheck -check-prefix=ARM %s
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker;; RUN: llc -verify-machineinstrs \
6*9880d681SAndroid Build Coastguard Worker;; RUN:   -mtriple=thumbv7-linux-gnueabi -filetype=obj %s -o - | \
7*9880d681SAndroid Build Coastguard Worker;; RUN:   llvm-readobj -t | FileCheck -check-prefix=TMB %s
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker;; Ensure that if a jump table is generated that it has Mapping Symbols
10*9880d681SAndroid Build Coastguard Worker;; marking the data-in-code region.
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerdefine void @foo(i32* %ptr) nounwind ssp {
13*9880d681SAndroid Build Coastguard Worker  %tmp = load i32, i32* %ptr, align 4
14*9880d681SAndroid Build Coastguard Worker  switch i32 %tmp, label %exit [
15*9880d681SAndroid Build Coastguard Worker    i32 0, label %bb0
16*9880d681SAndroid Build Coastguard Worker    i32 1, label %bb1
17*9880d681SAndroid Build Coastguard Worker    i32 2, label %bb2
18*9880d681SAndroid Build Coastguard Worker    i32 3, label %bb3
19*9880d681SAndroid Build Coastguard Worker  ]
20*9880d681SAndroid Build Coastguard Workerbb0:
21*9880d681SAndroid Build Coastguard Worker  store i32 0, i32* %ptr, align 4
22*9880d681SAndroid Build Coastguard Worker  br label %exit
23*9880d681SAndroid Build Coastguard Workerbb1:
24*9880d681SAndroid Build Coastguard Worker  store i32 1, i32* %ptr, align 4
25*9880d681SAndroid Build Coastguard Worker  br label %exit
26*9880d681SAndroid Build Coastguard Workerbb2:
27*9880d681SAndroid Build Coastguard Worker  store i32 2, i32* %ptr, align 4
28*9880d681SAndroid Build Coastguard Worker  br label %exit
29*9880d681SAndroid Build Coastguard Workerbb3:
30*9880d681SAndroid Build Coastguard Worker  store i32 3, i32* %ptr, align 4
31*9880d681SAndroid Build Coastguard Worker  br label %exit
32*9880d681SAndroid Build Coastguard Workerexit:
33*9880d681SAndroid Build Coastguard Worker  ret void
34*9880d681SAndroid Build Coastguard Worker}
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker;; ARM:        Symbol {
37*9880d681SAndroid Build Coastguard Worker;; ARM:          Name: $a
38*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Value: 0x0
39*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Size: 0
40*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Binding: Local
41*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Type: None
42*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Other:
43*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Section: [[MIXED_SECT:[^ ]+]]
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker;; ARM:        Symbol {
46*9880d681SAndroid Build Coastguard Worker;; ARM:          Name: $a
47*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Value: 0x{{[0-9A-F]+}}
48*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Size: 0
49*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Binding: Local
50*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Type: None
51*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Other:
52*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Section: [[MIXED_SECT]]
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Worker;; ARM:        Symbol {
55*9880d681SAndroid Build Coastguard Worker;; ARM:          Name: $d
56*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Value: 0x{{[0-9A-F]+}}
57*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Size: 0
58*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Binding: Local
59*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Type: None
60*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Other:
61*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Section: [[MIXED_SECT]]
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Worker;; ARM:        Symbol {
64*9880d681SAndroid Build Coastguard Worker;; ARM:          Name: $d
65*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Value: 0x0
66*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Size: 0
67*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Binding: Local (0x0)
68*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Type: None (0x0)
69*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Other: 0
70*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Section: .ARM.exidx
71*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:   }
72*9880d681SAndroid Build Coastguard Worker
73*9880d681SAndroid Build Coastguard Worker;; ARM:        Symbol {
74*9880d681SAndroid Build Coastguard Worker;; ARM:          Name: $d
75*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Value: 0
76*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Size: 0
77*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Binding: Local
78*9880d681SAndroid Build Coastguard Worker;; ARM-NEXT:     Type: None
79*9880d681SAndroid Build Coastguard Worker
80*9880d681SAndroid Build Coastguard Worker;; ARM-NOT:     ${{[atd]}}
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Worker;; TMB:        Symbol {
83*9880d681SAndroid Build Coastguard Worker;; TMB:          Name: $d.1
84*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Value: 0x{{[0-9A-F]+}}
85*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Size: 0
86*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Binding: Local
87*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Type: None
88*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Other:
89*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Section: [[MIXED_SECT:[^ ]+]]
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Worker;; TMB:        Symbol {
92*9880d681SAndroid Build Coastguard Worker;; TMB:          Name: $t
93*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Value: 0x0
94*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Size: 0
95*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Binding: Local
96*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Type: None
97*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Other:
98*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Section: [[MIXED_SECT]]
99*9880d681SAndroid Build Coastguard Worker
100*9880d681SAndroid Build Coastguard Worker;; TMB:        Symbol {
101*9880d681SAndroid Build Coastguard Worker;; TMB:          Name: $t
102*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Value: 0x{{[0-9A-F]+}}
103*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Size: 0
104*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Binding: Local
105*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Type: None
106*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Other:
107*9880d681SAndroid Build Coastguard Worker;; TMB-NEXT:     Section: [[MIXED_SECT]]
108*9880d681SAndroid Build Coastguard Worker
109*9880d681SAndroid Build Coastguard Worker
110*9880d681SAndroid Build Coastguard Worker;; TMB-NOT:     ${{[atd]}}
111*9880d681SAndroid Build Coastguard Worker
112