• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; Test if we can read alloca instructions.
2
3; RUN: %p2i -i %s --insts | FileCheck %s
4; RUN:   %p2i -i %s --args -notranslate -timing | \
5; RUN:   FileCheck --check-prefix=NOIR %s
6
7; Show examples where size is defined by a constant.
8
9define internal i32 @AllocaA0Size1() {
10entry:
11  %array = alloca i8, i32 1
12  %addr = ptrtoint i8* %array to i32
13  ret i32 %addr
14
15; CHECK:      entry:
16; CHECK-NEXT:   %array = alloca i8, i32 1
17; CHECK-NEXT:   ret i32 %array
18}
19
20define internal i32 @AllocaA0Size2() {
21entry:
22  %array = alloca i8, i32 2
23  %addr = ptrtoint i8* %array to i32
24  ret i32 %addr
25
26; CHECK:      entry:
27; CHECK-NEXT:   %array = alloca i8, i32 2
28; CHECK-NEXT:   ret i32 %array
29}
30
31define internal i32 @AllocaA0Size3() {
32entry:
33  %array = alloca i8, i32 3
34  %addr = ptrtoint i8* %array to i32
35  ret i32 %addr
36
37; CHECK:      entry:
38; CHECK-NEXT:   %array = alloca i8, i32 3
39; CHECK-NEXT:   ret i32 %array
40}
41
42define internal i32 @AllocaA0Size4() {
43entry:
44  %array = alloca i8, i32 4
45  %addr = ptrtoint i8* %array to i32
46  ret i32 %addr
47
48; CHECK:      entry:
49; CHECK-NEXT:   %array = alloca i8, i32 4
50; CHECK-NEXT:   ret i32 %array
51}
52
53define internal i32 @AllocaA1Size4(i32 %n) {
54entry:
55  %array = alloca i8, i32 4, align 1
56  %addr = ptrtoint i8* %array to i32
57  ret i32 %addr
58
59; CHECK:      entry:
60; CHECK-NEXT:   %array = alloca i8, i32 4, align 1
61; CHECK-NEXT:   ret i32 %array
62}
63
64define internal i32 @AllocaA2Size4(i32 %n) {
65entry:
66  %array = alloca i8, i32 4, align 2
67  %addr = ptrtoint i8* %array to i32
68  ret i32 %addr
69
70; CHECK:      entry:
71; CHECK-NEXT:   %array = alloca i8, i32 4, align 2
72; CHECK-NEXT:   ret i32 %array
73}
74
75define internal i32 @AllocaA8Size4(i32 %n) {
76entry:
77  %array = alloca i8, i32 4, align 8
78  %addr = ptrtoint i8* %array to i32
79  ret i32 %addr
80
81; CHECK:      entry:
82; CHECK-NEXT:   %array = alloca i8, i32 4, align 8
83; CHECK-NEXT:   ret i32 %array
84}
85
86define internal i32 @Alloca16Size4(i32 %n) {
87entry:
88  %array = alloca i8, i32 4, align 16
89  %addr = ptrtoint i8* %array to i32
90  ret i32 %addr
91
92; CHECK:      entry:
93; CHECK-NEXT:   %array = alloca i8, i32 4, align 16
94; CHECK-NEXT:   ret i32 %array
95}
96
97; Show examples where size is not known at compile time.
98
99define internal i32 @AllocaVarsizeA0(i32 %n) {
100entry:
101  %array = alloca i8, i32 %n
102  %addr = ptrtoint i8* %array to i32
103  ret i32 %addr
104
105; CHECK:      entry:
106; CHECK-NEXT:   %array = alloca i8, i32 %n
107; CHECK-NEXT:   ret i32 %array
108}
109
110define internal i32 @AllocaVarsizeA1(i32 %n) {
111entry:
112  %array = alloca i8, i32 %n, align 1
113  %addr = ptrtoint i8* %array to i32
114  ret i32 %addr
115
116; CHECK:      entry:
117; CHECK-NEXT:   %array = alloca i8, i32 %n, align 1
118; CHECK-NEXT:   ret i32 %array
119}
120
121define internal i32 @AllocaVarsizeA2(i32 %n) {
122entry:
123  %array = alloca i8, i32 %n, align 2
124  %addr = ptrtoint i8* %array to i32
125  ret i32 %addr
126
127; CHECK:      entry:
128; CHECK-NEXT:   %array = alloca i8, i32 %n, align 2
129; CHECK-NEXT:   ret i32 %array
130}
131
132define internal i32 @AllocaVarsizeA4(i32 %n) {
133entry:
134  %array = alloca i8, i32 %n, align 4
135  %addr = ptrtoint i8* %array to i32
136  ret i32 %addr
137
138; CHECK:      entry:
139; CHECK-NEXT:   %array = alloca i8, i32 %n, align 4
140; CHECK-NEXT:   ret i32 %array
141}
142
143define internal i32 @AllocaVarsizeA8(i32 %n) {
144entry:
145  %array = alloca i8, i32 %n, align 8
146  %addr = ptrtoint i8* %array to i32
147  ret i32 %addr
148
149; CHECK:      entry:
150; CHECK-NEXT:   %array = alloca i8, i32 %n, align 8
151; CHECK-NEXT:   ret i32 %array
152}
153
154define internal i32 @AllocaVarsizeA16(i32 %n) {
155entry:
156  %array = alloca i8, i32 %n, align 16
157  %addr = ptrtoint i8* %array to i32
158  ret i32 %addr
159
160; CHECK:      entry:
161; CHECK-NEXT:   %array = alloca i8, i32 %n, align 16
162; CHECK-NEXT:   ret i32 %array
163}
164
165; NOIR: Total across all functions
166