attributes.ll 5.4 KB

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