Add a dereferenceable attribute
[oota-llvm.git] / test / Bitcode / attributes.ll
1 ; RUN: llvm-as < %s | llvm-dis | FileCheck %s
2 ; PR12696
3
4 define void @f1(i8 zeroext)
5 ; CHECK: define void @f1(i8 zeroext)
6 {
7         ret void;
8 }
9
10 define void @f2(i8 signext)
11 ; CHECK: define void @f2(i8 signext)
12 {
13         ret void;
14 }
15
16 define void @f3() noreturn
17 ; CHECK: define void @f3() #0
18 {
19         ret void;
20 }
21
22 define void @f4(i8 inreg)
23 ; CHECK: define void @f4(i8 inreg)
24 {
25         ret void;
26 }
27
28 define void @f5(i8* sret)
29 ; CHECK: define void @f5(i8* sret)
30 {
31         ret void;
32 }
33
34 define void @f6() nounwind
35 ; CHECK: define void @f6() #1
36 {
37         ret void;
38 }
39
40 define void @f7(i8* noalias)
41 ; CHECK: define void @f7(i8* noalias)
42 {
43         ret void;
44 }
45
46 define void @f8(i8* byval)
47 ; CHECK: define void @f8(i8* byval)
48 {
49         ret void;
50 }
51
52 define void @f9(i8* nest)
53 ; CHECK: define void @f9(i8* nest)
54 {
55         ret void;
56 }
57
58 define void @f10() readnone
59 ; CHECK: define void @f10() #2
60 {
61         ret void;
62 }
63
64 define void @f11() readonly
65 ; CHECK: define void @f11() #3
66 {
67         ret void;
68 }
69
70 define void @f12() noinline
71 ; CHECK: define void @f12() #4
72 {
73         ret void;
74 }
75
76 define void @f13() alwaysinline
77 ; CHECK: define void @f13() #5
78 {
79         ret void;
80 }
81
82 define void @f14() optsize
83 ; CHECK: define void @f14() #6
84 {
85         ret void;
86 }
87
88 define void @f15() ssp
89 ; CHECK: define void @f15() #7
90 {
91         ret void;
92 }
93
94 define void @f16() sspreq
95 ; CHECK: define void @f16() #8
96 {
97         ret void;
98 }
99
100 define void @f17(i8 align 4)
101 ; CHECK: define void @f17(i8 align 4)
102 {
103         ret void;
104 }
105
106 define void @f18(i8* nocapture)
107 ; CHECK: define void @f18(i8* nocapture)
108 {
109         ret void;
110 }
111
112 define void @f19() noredzone
113 ; CHECK: define void @f19() #9
114 {
115         ret void;
116 }
117
118 define void @f20() noimplicitfloat
119 ; CHECK: define void @f20() #10
120 {
121         ret void;
122 }
123
124 define void @f21() naked
125 ; CHECK: define void @f21() #11
126 {
127         ret void;
128 }
129
130 define void @f22() inlinehint
131 ; CHECK: define void @f22() #12
132 {
133         ret void;
134 }
135
136 define void @f23() alignstack(4)
137 ; CHECK: define void @f23() #13
138 {
139         ret void;
140 }
141
142 define void @f24() returns_twice
143 ; CHECK: define void @f24() #14
144 {
145         ret void;
146 }
147
148 define void @f25() uwtable
149 ; CHECK: define void @f25() #15
150 {
151         ret void;
152 }
153
154 define void @f26() nonlazybind
155 ; CHECK: define void @f26() #16
156 {
157         ret void;
158 }
159
160 define void @f27() sanitize_address
161 ; CHECK: define void @f27() #17
162 {
163         ret void;
164 }
165 define void @f28() sanitize_thread
166 ; CHECK: define void @f28() #18
167 {
168         ret void;
169 }
170 define void @f29() sanitize_memory
171 ; CHECK: define void @f29() #19
172 {
173         ret void;
174 }
175
176 define void @f30() "cpu"="cortex-a8"
177 ; CHECK: define void @f30() #20
178 {
179         ret void;
180 }
181
182 define i8 @f31(i8 returned %A)
183 ; CHECK: define i8 @f31(i8 returned %A)
184 {
185         ret i8 %A;
186 }
187
188 define void @f32() sspstrong
189 ; CHECK: define void @f32() #21
190 {
191         ret void;
192 }
193
194 define void @f33() minsize
195 ; CHECK: define void @f33() #22
196 {
197         ret void;
198 }
199
200 declare void @nobuiltin()
201
202 define void @f34()
203 ; CHECK: define void @f34()
204 {
205         call void @nobuiltin() nobuiltin
206 ; CHECK: call void @nobuiltin() #25
207         ret void;
208 }
209
210 define void @f35() optnone noinline
211 ; CHECK: define void @f35() #23
212 {
213         ret void;
214 }
215
216 define void @f36(i8* inalloca) {
217 ; CHECK: define void @f36(i8* inalloca) {
218         ret void
219 }
220
221 define nonnull i8* @f37(i8* nonnull %a) {
222 ; CHECK: define nonnull i8* @f37(i8* nonnull %a) {
223         ret i8* %a
224 }
225
226 define void @f38() unnamed_addr jumptable {
227 ; CHECK: define void @f38() unnamed_addr #24
228     call void bitcast (void (i8*)* @f36 to void ()*)()
229     unreachable
230 }
231
232 define dereferenceable(2) i8* @f39(i8* dereferenceable(1) %a) {
233 ; CHECK: define dereferenceable(2) i8* @f39(i8* dereferenceable(1) %a) {
234         ret i8* %a
235 }
236
237 define dereferenceable(18446744073709551606) i8* @f40(i8* dereferenceable(18446744073709551615) %a) {
238 ; CHECK: define dereferenceable(18446744073709551606) i8* @f40(i8* dereferenceable(18446744073709551615) %a) {
239         ret i8* %a
240 }
241
242 ; CHECK: attributes #0 = { noreturn }
243 ; CHECK: attributes #1 = { nounwind }
244 ; CHECK: attributes #2 = { readnone }
245 ; CHECK: attributes #3 = { readonly }
246 ; CHECK: attributes #4 = { noinline }
247 ; CHECK: attributes #5 = { alwaysinline }
248 ; CHECK: attributes #6 = { optsize }
249 ; CHECK: attributes #7 = { ssp }
250 ; CHECK: attributes #8 = { sspreq }
251 ; CHECK: attributes #9 = { noredzone }
252 ; CHECK: attributes #10 = { noimplicitfloat }
253 ; CHECK: attributes #11 = { naked }
254 ; CHECK: attributes #12 = { inlinehint }
255 ; CHECK: attributes #13 = { alignstack=4 }
256 ; CHECK: attributes #14 = { returns_twice }
257 ; CHECK: attributes #15 = { uwtable }
258 ; CHECK: attributes #16 = { nonlazybind }
259 ; CHECK: attributes #17 = { sanitize_address }
260 ; CHECK: attributes #18 = { sanitize_thread }
261 ; CHECK: attributes #19 = { sanitize_memory }
262 ; CHECK: attributes #20 = { "cpu"="cortex-a8" }
263 ; CHECK: attributes #21 = { sspstrong }
264 ; CHECK: attributes #22 = { minsize }
265 ; CHECK: attributes #23 = { noinline optnone }
266 ; CHECK: attributes #24 = { jumptable }
267 ; CHECK: attributes #25 = { nobuiltin }