647 lines · plain
1; RUN: llvm-as < %s | llvm-dis | FileCheck %s2; RUN: verify-uselistorder < %s3; PR126964 5define void @f1(i8 zeroext %0)6; CHECK: define void @f1(i8 zeroext %0)7{8 ret void;9}10 11define void @f2(i8 signext %0)12; CHECK: define void @f2(i8 signext %0)13{14 ret void;15}16 17define void @f3() noreturn18; CHECK: define void @f3() #019{20 ret void;21}22 23define void @f4(i8 inreg %0)24; CHECK: define void @f4(i8 inreg %0)25{26 ret void;27}28 29define void @f5(ptr sret(i8) %0)30; CHECK: define void @f5(ptr sret(i8) %0)31{32 ret void;33}34 35define void @f6() nounwind36; CHECK: define void @f6() #137{38 ret void;39}40 41define void @f7(ptr noalias %0)42; CHECK: define void @f7(ptr noalias %0)43{44 ret void;45}46 47define void @f8(ptr byval(i8) %0)48; CHECK: define void @f8(ptr byval(i8) %0)49{50 ret void;51}52 53define void @f9(ptr nest %0)54; CHECK: define void @f9(ptr nest %0)55{56 ret void;57}58 59define void @f10() readnone60; CHECK: define void @f10() #261{62 ret void;63}64 65define void @f11() readonly66; CHECK: define void @f11() #367{68 ret void;69}70 71define void @f12() noinline72; CHECK: define void @f12() #473{74 ret void;75}76 77define void @f13() alwaysinline78; CHECK: define void @f13() #579{80 ret void;81}82 83define void @f14() optsize84; CHECK: define void @f14() #685{86 ret void;87}88 89define void @f15() ssp90; CHECK: define void @f15() #791{92 ret void;93}94 95define void @f16() sspreq96; CHECK: define void @f16() #897{98 ret void;99}100 101define void @f17(ptr align 4 %0)102; CHECK: define void @f17(ptr align 4 %0)103{104 ret void;105}106 107define void @f18(ptr nocapture %0)108; CHECK: define void @f18(ptr captures(none) %0)109{110 ret void;111}112 113define void @f19() noredzone114; CHECK: define void @f19() #9115{116 ret void;117}118 119define void @f20() noimplicitfloat120; CHECK: define void @f20() #10121{122 ret void;123}124 125define void @f21() naked126; CHECK: define void @f21() #11127{128 ret void;129}130 131define void @f22() inlinehint132; CHECK: define void @f22() #12133{134 ret void;135}136 137define void @f23() alignstack(4)138; CHECK: define void @f23() #13139{140 ret void;141}142 143define void @f24() returns_twice144; CHECK: define void @f24() #14145{146 ret void;147}148 149define void @f25() uwtable150; CHECK: define void @f25() #15151{152 ret void;153}154 155define void @f26() nonlazybind156; CHECK: define void @f26() #16157{158 ret void;159}160 161define void @f27() sanitize_address162; CHECK: define void @f27() #17163{164 ret void;165}166define void @f28() sanitize_thread167; CHECK: define void @f28() #18168{169 ret void;170}171define void @f29() sanitize_memory172; CHECK: define void @f29() #19173{174 ret void;175}176 177define void @f30() "cpu"="cortex-a8"178; CHECK: define void @f30() #20179{180 ret void;181}182 183define i8 @f31(i8 returned %A)184; CHECK: define i8 @f31(i8 returned %A)185{186 ret i8 %A;187}188 189define void @f32() sspstrong190; CHECK: define void @f32() #21191{192 ret void;193}194 195define void @f33() minsize196; CHECK: define void @f33() #22197{198 ret void;199}200 201declare void @nobuiltin()202 203define void @f34()204; CHECK: define void @f34()205{206 call void @nobuiltin() nobuiltin207; CHECK: call void @nobuiltin() #[[NOBUILTIN:[0-9]+]]208 ret void;209}210 211define void @f35() optnone noinline212; CHECK: define void @f35() #23213{214 ret void;215}216 217define void @f36(ptr inalloca(i8) %0) {218; CHECK: define void @f36(ptr inalloca(i8) %0) {219 ret void220}221 222define nonnull ptr @f37(ptr nonnull %a) {223; CHECK: define nonnull ptr @f37(ptr nonnull %a) {224 ret ptr %a225}226 227define void @f38() unnamed_addr jumptable {228; CHECK: define void @f38() unnamed_addr #24229 call void @f36()230 unreachable231}232 233define dereferenceable(2) ptr @f39(ptr dereferenceable(1) %a) {234; CHECK: define dereferenceable(2) ptr @f39(ptr dereferenceable(1) %a) {235 ret ptr %a236}237 238define dereferenceable(18446744073709551606) ptr @f40(ptr dereferenceable(18446744073709551615) %a) {239; CHECK: define dereferenceable(18446744073709551606) ptr @f40(ptr dereferenceable(18446744073709551615) %a) {240 ret ptr %a241}242 243define void @f41(ptr align 32 %0, ptr align 64 %1) {244; CHECK: define void @f41(ptr align 32 %0, ptr align 64 %1) {245 ret void246}247 248; CHECK: define dereferenceable_or_null(8) ptr @f42(ptr dereferenceable_or_null(8) %foo)249define dereferenceable_or_null(8) ptr @f42(ptr dereferenceable_or_null(8) %foo) {250 entry:251 ret ptr %foo252}253 254; CHECK: define void @f43() #25255define void @f43() convergent {256 ret void257}258 259define void @f44() argmemonly260; CHECK: define void @f44() #26261{262 ret void;263}264 265; CHECK: define "string_attribute" void @f45(i32 "string_attribute" %0)266define "string_attribute" void @f45(i32 "string_attribute" %0) {267 ret void268}269 270; CHECK: define "string_attribute_with_value"="value" void @f46(i32 "string_attribute_with_value"="value" %0)271define "string_attribute_with_value"="value" void @f46(i32 "string_attribute_with_value"="value" %0) {272 ret void273}274 275; CHECK: define void @f47() #27276define void @f47() norecurse {277 ret void278}279 280; CHECK: define void @f48() #28281define void @f48() inaccessiblememonly {282 ret void283}284 285; CHECK: define void @f49() #29286define void @f49() inaccessiblemem_or_argmemonly {287 ret void288}289; CHECK: define void @f50(ptr swiftself %0)290define void @f50(ptr swiftself %0)291{292 ret void;293}294 295; CHECK: define i32 @f51(ptr swifterror %0)296define i32 @f51(ptr swifterror %0)297{298 ret i32 0299}300 301; CHECK: define i32 @f52(i32 %0, ptr swifterror %1)302define i32 @f52(i32 %0, ptr swifterror %1)303{304 ret i32 0305}306 307%swift_error = type {i64, i8}308declare float @foo(ptr swifterror %error_ptr_ref)309 310; CHECK: define float @f53311; CHECK: alloca swifterror312define float @f53(ptr %error_ref) {313entry:314 %error_ptr_ref = alloca swifterror ptr315 store ptr null, ptr %error_ptr_ref316 %call = call float @foo(ptr swifterror %error_ptr_ref)317 ret float 1.0318}319 320; CHECK: define ptr @f54(i32 %0) #30321define ptr @f54(i32 %0) allocsize(0) {322 ret ptr null323}324 325; CHECK: define ptr @f55(i32 %0, i32 %1) #31326define ptr @f55(i32 %0, i32 %1) allocsize(0, 1) {327 ret ptr null328}329 330; CHECK: define void @f56() #32331define void @f56() writeonly332{333 ret void334}335 336; CHECK: define void @f57() #33337define void @f57() speculatable {338 ret void339}340 341; CHECK: define void @f58() #34342define void @f58() sanitize_hwaddress343{344 ret void;345}346 347; CHECK: define void @f59() #35348define void @f59() shadowcallstack349{350 ret void351}352 353; CHECK: define void @f60() #36354define void @f60() willreturn355{356 ret void357}358 359; CHECK: define void @f61() #37360define void @f61() nofree {361 ret void362}363 364; CHECK: define void @f62() #38365define void @f62() nosync366{367 ret void368}369 370; CHECK: define void @f63() #39371define void @f63() sanitize_memtag372{373 ret void374}375 376; CHECK: define void @f64(ptr preallocated(i32) %a)377define void @f64(ptr preallocated(i32) %a)378{379 ret void380}381 382; CHECK: define void @f65() #40383define void @f65() null_pointer_is_valid384{385 ret void;386}387 388; CHECK: define noundef i32 @f66(i32 noundef %a)389define noundef i32 @f66(i32 noundef %a)390{391 ret i32 %a392}393 394; CHECK: define void @f67(ptr byref(i32) %a)395define void @f67(ptr byref(i32) %a)396{397 ret void398}399 400; CHECK: define void @f68() #41401define void @f68() mustprogress402{403 ret void404}405 406; CHECK: define void @f69() #42407define void @f69() nocallback408{409 ret void410}411 412; CHECK: define void @f70() #43413define void @f70() cold414{415 ret void416}417 418; CHECK: define void @f71() #44419define void @f71() hot420{421 ret void422}423 424; CHECK: define void @f72() #45425define void @f72() vscale_range(8)426{427 ret void428}429 430; CHECK: define void @f73() #46431define void @f73() vscale_range(1,8)432{433 ret void434}435 436; CHECK: define void @f74() #47437define void @f74() vscale_range(1,0)438{439 ret void440}441 442; CHECK: define void @f76(ptr swiftasync %0)443define void @f76(ptr swiftasync %0)444{445 ret void;446}447 448; CHECK: define void @f77() #48449define void @f77() nosanitize_coverage450{451 ret void;452}453 454; CHECK: define void @f78() #49455define void @f78() noprofile456{457 ret void;458}459 460declare void @llvm.some.intrinsic(ptr)461define void @f79() {462; CHECK: call void @llvm.some.intrinsic(ptr elementtype(i32) null)463 call void @llvm.some.intrinsic(ptr elementtype(i32) null)464 ret void465}466 467; CHECK: define void @f80() #50468define void @f80() disable_sanitizer_instrumentation469{470 ret void;471}472 473define void @f81(ptr sret(ptr) %0)474; CHECK: define void @f81(ptr sret(ptr) %0)475{476 ret void;477}478 479define void @f82(ptr %0)480; CHECK: define void @f82(ptr %0)481{482; CHECK: call void @llvm.some.intrinsic(ptr sret(i32) %0)483 call void @llvm.some.intrinsic(ptr sret(i32) %0)484 ret void;485}486 487; CHECK: define void @f83(<4 x ptr> align 32 %0, <vscale x 1 x ptr> align 64 %1)488define void @f83(<4 x ptr> align 32 %0, <vscale x 1 x ptr> align 64 %1) {489 ret void490}491 492; CHECK: define void @f84() #51493define void @f84() uwtable(sync) {494 ret void;495}496 497; CHECK: define void @f85() #15498define void @f85() uwtable(async) {499 ret void;500}501 502; CHECK: define void @f86() #52503define void @f86() nosanitize_bounds504{505 ret void;506}507 508; CHECK: define void @f92() #53509define void @f92() sanitize_realtime510{511 ret void;512}513 514; CHECK: define void @f93() #54515define void @f93() sanitize_realtime_blocking {516 ret void;517}518 519; CHECK: define void @f_sanitize_alloc_token() #55520define void @f_sanitize_alloc_token() sanitize_alloc_token {521 ret void;522}523 524; CHECK: define void @f_no_create_undef_or_poison() #56525define void @f_no_create_undef_or_poison() nocreateundeforpoison {526 ret void;527}528 529; CHECK: define void @f87() [[FNRETTHUNKEXTERN:#[0-9]+]]530define void @f87() fn_ret_thunk_extern { ret void }531 532; CHECK: define void @f88() [[SKIPPROFILE:#[0-9]+]]533define void @f88() skipprofile { ret void }534 535; CHECK: define void @f89() [[OPTDEBUG:#[0-9]+]]536define void @f89() optdebug {537 ret void;538}539 540; CHECK: define void @f90(ptr writable %p)541define void @f90(ptr writable %p) {542 ret void543}544 545; CHECK: define void @f91(ptr dead_on_unwind %p)546define void @f91(ptr dead_on_unwind %p) {547 ret void548}549 550; CHECK: define void @f94() [[NODIVERGENCESOURCE:#[0-9]+]]551define void @f94() nodivergencesource {552 ret void;553}554 555; CHECK: define range(i32 -1, 42) i32 @range_attribute(<4 x i32> range(i32 -1, 42) %a)556define range(i32 -1, 42) i32 @range_attribute(<4 x i32> range(i32 -1, 42) %a) {557 ret i32 0558}559 560; CHECK: define range(i32 0, 0) i32 @range_attribute_same_range_other_bitwidth(i8 range(i8 0, 42) %a)561define range(i32 0, 0) i32 @range_attribute_same_range_other_bitwidth(i8 range(i8 0, 42) %a) {562 ret i32 0563}564 565; CHECK: define void @wide_range_attribute(i128 range(i128 618970019642690137449562111, 618970019642690137449562114) %a)566define void @wide_range_attribute(i128 range(i128 618970019642690137449562111, 618970019642690137449562114) %a) {567 ret void568}569 570; CHECK: define void @initializes(ptr initializes((-4, 0), (4, 8)) %a)571define void @initializes(ptr initializes((-4, 0), (4, 8)) %a) {572 ret void573}574 575; CHECK: define void @captures(ptr captures(address) %p)576define void @captures(ptr captures(address) %p) {577 ret void578}579 580; CHECK: define void @dead_on_return(ptr dead_on_return %p)581define void @dead_on_return(ptr dead_on_return %p) {582 ret void583}584 585; CHECK: attributes #0 = { noreturn }586; CHECK: attributes #1 = { nounwind }587; CHECK: attributes #2 = { memory(none) }588; CHECK: attributes #3 = { memory(read) }589; CHECK: attributes #4 = { noinline }590; CHECK: attributes #5 = { alwaysinline }591; CHECK: attributes #6 = { optsize }592; CHECK: attributes #7 = { ssp }593; CHECK: attributes #8 = { sspreq }594; CHECK: attributes #9 = { noredzone }595; CHECK: attributes #10 = { noimplicitfloat }596; CHECK: attributes #11 = { naked }597; CHECK: attributes #12 = { inlinehint }598; CHECK: attributes #13 = { alignstack=4 }599; CHECK: attributes #14 = { returns_twice }600; CHECK: attributes #15 = { uwtable }601; CHECK: attributes #16 = { nonlazybind }602; CHECK: attributes #17 = { sanitize_address }603; CHECK: attributes #18 = { sanitize_thread }604; CHECK: attributes #19 = { sanitize_memory }605; CHECK: attributes #20 = { "cpu"="cortex-a8" }606; CHECK: attributes #21 = { sspstrong }607; CHECK: attributes #22 = { minsize }608; CHECK: attributes #23 = { noinline optnone }609; CHECK: attributes #24 = { jumptable }610; CHECK: attributes #25 = { convergent }611; CHECK: attributes #26 = { memory(argmem: readwrite) }612; CHECK: attributes #27 = { norecurse }613; CHECK: attributes #28 = { memory(inaccessiblemem: readwrite) }614; CHECK: attributes #29 = { memory(argmem: readwrite, inaccessiblemem: readwrite) }615; CHECK: attributes #30 = { allocsize(0) }616; CHECK: attributes #31 = { allocsize(0,1) }617; CHECK: attributes #32 = { memory(write) }618; CHECK: attributes #33 = { speculatable }619; CHECK: attributes #34 = { sanitize_hwaddress }620; CHECK: attributes #35 = { shadowcallstack }621; CHECK: attributes #36 = { willreturn }622; CHECK: attributes #37 = { nofree }623; CHECK: attributes #38 = { nosync }624; CHECK: attributes #39 = { sanitize_memtag }625; CHECK: attributes #40 = { null_pointer_is_valid }626; CHECK: attributes #41 = { mustprogress }627; CHECK: attributes #42 = { nocallback }628; CHECK: attributes #43 = { cold }629; CHECK: attributes #44 = { hot }630; CHECK: attributes #45 = { vscale_range(8,8) }631; CHECK: attributes #46 = { vscale_range(1,8) }632; CHECK: attributes #47 = { vscale_range(1,0) }633; CHECK: attributes #48 = { nosanitize_coverage }634; CHECK: attributes #49 = { noprofile }635; CHECK: attributes #50 = { disable_sanitizer_instrumentation }636; CHECK: attributes #51 = { uwtable(sync) }637; CHECK: attributes #52 = { nosanitize_bounds }638; CHECK: attributes #53 = { sanitize_realtime }639; CHECK: attributes #54 = { sanitize_realtime_blocking }640; CHECK: attributes #55 = { sanitize_alloc_token }641; CHECK: attributes #56 = { nocreateundeforpoison }642; CHECK: attributes [[FNRETTHUNKEXTERN]] = { fn_ret_thunk_extern }643; CHECK: attributes [[SKIPPROFILE]] = { skipprofile }644; CHECK: attributes [[OPTDEBUG]] = { optdebug }645; CHECK: attributes [[NODIVERGENCESOURCE]] = { nodivergencesource }646; CHECK: attributes #[[NOBUILTIN]] = { nobuiltin }647