Lines Matching refs:release
9 declare void @llvm.objc.release(i8*)
32 ; Simple retain+release pair deletion, with some intervening control
37 ; CHECK: @llvm.objc.release
57 call void @llvm.objc.release(i8* %c) nounwind
82 call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
86 ; Like test0 but the release isn't always executed when the retain is,
89 ; TODO: Make the llvm.objc.release's argument be %0.
93 ; CHECK: @llvm.objc.release
114 call void @llvm.objc.release(i8* %c) nounwind
123 ; CHECK: @llvm.objc.release
144 call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
159 ; CHECK: tail call void @llvm.objc.release(i8* %x) [[NUW]]
179 tail call void @llvm.objc.release(i8* %x) nounwind
188 ; CHECK: tail call void @llvm.objc.release(i8* %x) [[NUW]], !clang.imprecise_release ![[RELEASE:[…
208 tail call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
218 ; CHECK: @llvm.objc.release
241 call void @llvm.objc.release(i8* %c) nounwind
247 ; CHECK: @llvm.objc.release
270 call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
274 ; Like test0 but the release is in a loop,
281 ; TODO: @llvm.objc.release
291 call void @llvm.objc.release(i8* %c) nounwind
301 ; TODO: @llvm.objc.release
311 call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
327 ; TODO: @llvm.objc.release
341 call void @llvm.objc.release(i8* %c) nounwind
347 ; TODO: @llvm.objc.release
361 call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
371 ; CHECK: @llvm.objc.release
381 call void @llvm.objc.release(i8* %c) nounwind
387 ; CHECK: @llvm.objc.release
397 call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
402 ; retain+release pair deletion, where the release happens on two different
409 ; CHECK: call void @llvm.objc.release
411 ; CHECK: call void @llvm.objc.release
425 call void @llvm.objc.release(i8* %ct) nounwind
432 call void @llvm.objc.release(i8* %cf) nounwind
453 call void @llvm.objc.release(i8* %ct) nounwind, !clang.imprecise_release !0
460 call void @llvm.objc.release(i8* %cf) nounwind, !clang.imprecise_release !0
471 ; CHECK: call void @llvm.objc.release
473 ; CHECK: call void @llvm.objc.release
487 call void @llvm.objc.release(i8* %ct) nounwind
494 call void @llvm.objc.release(i8* %cf) nounwind, !clang.imprecise_release !0
505 ; CHECK: call void @llvm.objc.release
507 ; CHECK: call void @llvm.objc.release
521 call void @llvm.objc.release(i8* %ct) nounwind, !clang.imprecise_release !0
528 call void @llvm.objc.release(i8* %cf) nounwind
536 ; retain+release pair deletion, where the retain happens on two different
547 ; CHECK: call void @llvm.objc.release
569 call void @llvm.objc.release(i8* %c) nounwind
596 call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
608 ; CHECK: call void @llvm.objc.release
630 call void @llvm.objc.release(i8* %c) nounwind
634 ; retain+release pair deletion, where the retain and release both happen on
645 ; CHECK: @llvm.objc.release
647 ; CHECK: @llvm.objc.release
673 call void @llvm.objc.release(i8* %cu) nounwind
678 call void @llvm.objc.release(i8* %cg) nounwind
711 call void @llvm.objc.release(i8* %cu) nounwind, !clang.imprecise_release !0
716 call void @llvm.objc.release(i8* %cg) nounwind, !clang.imprecise_release !0
732 ; CHECK: @llvm.objc.release
760 call void @llvm.objc.release(i8* %cu) nounwind
765 call void @llvm.objc.release(i8* %cg) nounwind, !clang.imprecise_release !0
780 ; CHECK: @llvm.objc.release
782 ; CHECK: @llvm.objc.release
808 call void @llvm.objc.release(i8* %cu) nounwind, !clang.imprecise_release !0
813 call void @llvm.objc.release(i8* %cg) nounwind
820 ; Trivial retain+release pair deletion.
828 call void @llvm.objc.release(i8* %0) nounwind
832 ; Retain+release pair, but on an unknown pointer relationship. Don't delete!
836 ; CHECK: @llvm.objc.release(i8* %s)
842 call void @llvm.objc.release(i8* %s) nounwind
846 ; Trivial retain+release pair with intervening calls - don't delete!
852 ; CHECK: @llvm.objc.release
859 call void @llvm.objc.release(i8* %0) nounwind
907 ; We can not delete this retain, release since we do not have a post-dominating
908 ; use of the release.
914 ; CHECK: @llvm.objc.release
922 call void @llvm.objc.release(i8* %x) nounwind
943 ; Delete the retain+release pair.
951 ; CHECK-NEXT: @llvm.objc.release
960 call void @llvm.objc.release(i8* %x) nounwind
962 call void @llvm.objc.release(i8* %x) nounwind
966 ; Don't delete the retain+release pair because there's an
974 ; CHECK: @llvm.objc.release
983 call void @llvm.objc.release(i8* %x) nounwind
997 ; CHECK-NEXT: @llvm.objc.release
1007 call void @llvm.objc.release(i8* %x) nounwind
1009 call void @llvm.objc.release(i8* %x) nounwind
1013 ; Trivial retain,release pair with intervening call, and it's post-dominated by
1014 ; another release. But it is not known safe in the top down direction. We can
1022 ; CHECK-NEXT: @llvm.objc.release
1023 ; CHECK-NEXT: @llvm.objc.release
1031 call void @llvm.objc.release(i8* %x) nounwind
1032 call void @llvm.objc.release(i8* %x) nounwind
1037 ; by another release. Don't delete anything.
1044 ; CHECK-NEXT: @llvm.objc.release
1052 call void @llvm.objc.release(i8* %x) nounwind
1057 ; by another release. Delete the retain and release.
1063 ; CHECK-NEXT: @llvm.objc.release
1070 call void @llvm.objc.release(i8* %x) nounwind
1083 call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
1087 ; Retain+release pairs in diamonds, all dominated by a retain.
1094 ; CHECK: @llvm.objc.release
1115 call void @llvm.objc.release(i8* %x) nounwind
1119 call void @llvm.objc.release(i8* %x) nounwind
1124 call void @llvm.objc.release(i8* %x) nounwind
1134 ; CHECK-NEXT: @llvm.objc.release
1155 call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
1159 call void @llvm.objc.release(i8* %x) nounwind
1165 call void @llvm.objc.release(i8* %x) nounwind
1174 ; CHECK: @llvm.objc.release
1195 call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
1199 call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
1204 call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
1231 call void @llvm.objc.release(i8* %x) nounwind
1235 call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
1249 call void @llvm.objc.release(i8* null)
1261 call void @llvm.objc.release(i8* undef)
1276 ; CHECK: call void @llvm.objc.release(i8* %2)
1286 call void @llvm.objc.release(i8* %x)
1337 ; CHECK: call void @llvm.objc.release(i8* %1)
1340 ; CHECK-NOT: @llvm.objc.release
1351 call void @llvm.objc.release(i8* %c), !clang.imprecise_release !0
1355 ; Do not move an llvm.objc.release that doesn't have the clang.imprecise_release tag.
1360 ; CHECK: call void @llvm.objc.release(i8* %[[V0]])
1371 call void @llvm.objc.release(i8* %c)
1379 ; CHECK: @llvm.objc.release
1385 call void @llvm.objc.release(i8* %a)
1389 ; Don't move a retain/release pair if the release can be moved
1397 ; CHECK: call void @llvm.objc.release(i8* %p)
1410 call void @llvm.objc.release(i8* %p)
1414 ; Don't move a retain/release pair if the retain can be moved
1415 ; but the release can't be moved to balance it.
1422 ; CHECK: call void @llvm.objc.release(i8* %p)
1435 call void @llvm.objc.release(i8* %p)
1439 ; Don't sink the retain,release into the loop.
1447 ; CHECK: call void @llvm.objc.release
1460 call void @llvm.objc.release(i8* %p)
1472 ; CHECK: call void @llvm.objc.release
1487 call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
1503 ; CHECK: @llvm.objc.release
1517 call void @llvm.objc.release(i8* %p)
1530 ; CHECK: call void @llvm.objc.release(i8* %p) [[NUW]], !clang.imprecise_release
1546 call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
1558 ; CHECK: call void @llvm.objc.release
1560 ; CHECK: call void @llvm.objc.release
1573 call void @llvm.objc.release(i8* %p)
1577 call void @llvm.objc.release(i8* %p)
1582 ; with an extra release.
1591 ; CHECK: call void @llvm.objc.release
1593 ; CHECK: call void @llvm.objc.release
1609 call void @llvm.objc.release(i8* %p)
1613 call void @llvm.objc.release(i8* %p)
1617 ; Basic case with a mergeable release.
1624 ; CHECK: call void @llvm.objc.release
1626 ; CHECK: call void @llvm.objc.release
1636 call void @llvm.objc.release(i8* %p)
1639 call void @llvm.objc.release(i8* %p)
1651 ; CHECK: call void @llvm.objc.release
1666 call void @llvm.objc.release(i8* %g)
1678 ; CHECK: call void @llvm.objc.release
1693 call void @llvm.objc.release(i8* %g)
1697 ; Delete retain,release if there's just a possible dec and we have imprecise
1704 ; CHECK: call void @llvm.objc.release
1718 call void @llvm.objc.release(i8* %g)
1737 call void @llvm.objc.release(i8* %g), !clang.imprecise_release !0
1742 ; Delete retain,release if there's just a use and we do not have a precise
1743 ; release.
1751 ; CHECK: call void @llvm.objc.release
1765 call void @llvm.objc.release(i8* %g)
1785 call void @llvm.objc.release(i8* %g), !clang.imprecise_release !0
1789 ; Delete a retain,release if there's no actual use and we have precise release.
1796 ; CHECK: @llvm.objc.release
1803 call void @llvm.objc.release(i8* %p)
1817 call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
1851 call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
1855 ; Delete retain,release pairs around loops.
1869 call void @llvm.objc.release(i8* %0), !clang.imprecise_release !0
1873 ; Delete retain,release pairs around loops containing uses.
1888 call void @llvm.objc.release(i8* %0), !clang.imprecise_release !0
1892 ; Delete retain,release pairs around loops containing potential decrements.
1907 call void @llvm.objc.release(i8* %0), !clang.imprecise_release !0
1911 ; Delete retain,release pairs around loops even if
1927 call void @llvm.objc.release(i8* %0), !clang.imprecise_release !0
1931 ; Do the known-incremented retain+release elimination even if the pointer
1942 ; CHECK-NEXT: call void @llvm.objc.release(i8* %p)
1952 call void @llvm.objc.release(i8* %p)
1955 call void @llvm.objc.release(i8* %p)
1959 ; Don't the known-incremented retain+release elimination if the pointer is
1970 ; CHECK-NEXT: call void @llvm.objc.release
1981 call void @llvm.objc.release(i8* %p)
1985 ; Do the known-incremented retain+release elimination if the pointer is
1996 ; CHECK-NEXT: call void @llvm.objc.release
2007 call void @llvm.objc.release(i8* %p)
2009 call void @llvm.objc.release(i8* %p)
2013 ; Do retain+release elimination for non-provenance pointers.
2021 call void @llvm.objc.release(i8* %q)
2025 ; Don't delete retain+release with an unknown-provenance
2026 ; may-alias llvm.objc.release between them.
2030 ; CHECK: call void @llvm.objc.release(i8* %q)
2032 ; CHECK: call void @llvm.objc.release(i8* %p)
2038 call void @llvm.objc.release(i8* %q)
2040 call void @llvm.objc.release(i8* %p)
2098 ; Do delete retain+release with intervening stores of the address value if we
2099 ; have imprecise release attached to llvm.objc.release.
2105 ; CHECK-NEXT: call void @llvm.objc.release
2112 call void @llvm.objc.release(i8* %p)
2123 call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
2128 ; Don't delete retain+release with intervening stores through the
2133 ; CHECK: call void @llvm.objc.release(i8* %p)
2140 call void @llvm.objc.release(i8* %p)
2146 ; CHECK: call void @llvm.objc.release(i8* %p)
2153 call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
2157 ; Don't delete retain+release with intervening use of a pointer of
2164 ; CHECK: call void @llvm.objc.release
2173 call void @llvm.objc.release(i8* %p)
2181 ; CHECK: call void @llvm.objc.release
2190 call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
2208 call void @llvm.objc.release(i8* %p)
2212 ; Convert autorelease to release if the value is unused.
2216 ; CHECK-NEXT: call void @llvm.objc.release(i8* %t) [[NUW]], !clang.imprecise_release ![[RELEASE]]
2225 ; Nested retain+release pairs. Delete them both.
2234 call void @llvm.objc.release(i8* %x) nounwind
2235 call void @llvm.objc.release(i8* %x) nounwind
2239 ; Nested retain+release pairs where the inner pair depends
2250 ; CHECK-NEXT: tail call void @llvm.objc.release(i8* %x) [[NUW]], !clang.imprecise_release ![[RELEAS…
2265 tail call void @llvm.objc.release(i8* %2) nounwind, !clang.imprecise_release !0
2269 tail call void @llvm.objc.release(i8* %1) nounwind, !clang.imprecise_release !0
2270 tail call void @llvm.objc.release(i8* %0) nounwind, !clang.imprecise_release !0
2274 ; When there are adjacent retain+release pairs, the first one is known
2286 ; CHECK-NEXT: call void @llvm.objc.release(i8* %x) [[NUW]]
2295 call void @llvm.objc.release(i8* %x) nounwind
2299 call void @llvm.objc.release(i8* %x) nounwind
2303 ; An adjacent retain+release pair is sufficient even if it will be
2319 call void @llvm.objc.release(i8* %x) nounwind
2321 call void @llvm.objc.release(i8* %x) nounwind
2325 ; Don't delete the second retain+release pair in an adjacent set.
2332 ; CHECK-NEXT: call void @llvm.objc.release(i8* %x) [[NUW]]
2338 call void @llvm.objc.release(i8* %x) nounwind
2342 call void @llvm.objc.release(i8* %x) nounwind
2351 ; We have a precise lifetime retain/release here. We can not remove them since
2356 ; CHECK: call void @llvm.objc.release
2364 call void @llvm.objc.release(i8* %s)
2371 ; CHECK-NOT: call i8* @llvm.objc.release
2380 call void @llvm.objc.release(i8* %t)
2393 call void @llvm.objc.release(i8* %t), !clang.imprecise_release !0
2406 call void @llvm.objc.release(i8* %t)
2419 call void @llvm.objc.release(i8* %t), !clang.imprecise_release !0
2434 call void @llvm.objc.release(i8* %t)
2454 call void @llvm.objc.release(i8* %x)
2458 call void @llvm.objc.release(i8* %x)
2462 ; Like test62 but with no release in exit.
2469 ; CHECK: call void @llvm.objc.release(i8* %x)
2481 call void @llvm.objc.release(i8* %x)
2488 ; Like test62 but with no release in loop.more.
2495 ; CHECK: call void @llvm.objc.release(i8* %x)
2510 call void @llvm.objc.release(i8* %x)
2612 ; CHECK: tail call void @llvm.objc.release(i8* %call) [[NUW]]
2614 ; CHECK: tail call void @llvm.objc.release(i8* %cond) [[NUW]]
2626 tail call void @llvm.objc.release(i8* %call) nounwind
2629 tail call void @llvm.objc.release(i8* %cond) nounwind
2635 ; CHECK: tail call void @llvm.objc.release(i8* %call) [[NUW]]
2637 ; CHECK: tail call void @llvm.objc.release(i8* %cond) [[NUW]]
2649 tail call void @llvm.objc.release(i8* %call) nounwind, !clang.imprecise_release !0
2652 tail call void @llvm.objc.release(i8* %cond) nounwind
2658 ; CHECK: tail call void @llvm.objc.release(i8* %call) [[NUW]]
2660 ; CHECK: tail call void @llvm.objc.release(i8* %cond) [[NUW]]
2672 tail call void @llvm.objc.release(i8* %call) nounwind
2675 tail call void @llvm.objc.release(i8* %cond) nounwind
2681 ; CHECK: tail call void @llvm.objc.release(i8* %call) [[NUW]]
2683 ; CHECK: tail call void @llvm.objc.release(i8* %cond) [[NUW]]
2695 tail call void @llvm.objc.release(i8* %call) nounwind, !clang.imprecise_release !0
2698 tail call void @llvm.objc.release(i8* %cond) nounwind, !clang.imprecise_release !0
2745 tail call void @llvm.objc.release(i8* %0) nounwind
2765 tail call void @llvm.objc.release(i8* %0) nounwind
2773 ; A simple loop. Eliminate the retain and release inside of it!
2793 tail call void @llvm.objc.release(i8* %1) nounwind, !clang.imprecise_release !0
2799 tail call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
2803 ; ObjCARCOpt can delete the retain,release on self.
2884 call void @llvm.objc.release(i8* null) nounwind
2886 call void @llvm.objc.release(i8* null) nounwind
2903 call void @llvm.objc.release(i8* null) nounwind
2932 call void @llvm.objc.release(i8* %call137) nounwind
2942 call void @llvm.objc.release(i8* %call6110) nounwind
2968 call void @llvm.objc.release(i8* %tmp22) nounwind
3016 call void @llvm.objc.release(i8* %tmp9) nounwind, !clang.imprecise_release !0
3018 call void @llvm.objc.release(i8* %tmp29) nounwind, !clang.imprecise_release !0
3020 call void @llvm.objc.release(i8* %tmp30) nounwind, !clang.imprecise_release !0
3022 call void @llvm.objc.release(i8* %tmp31) nounwind, !clang.imprecise_release !0
3023 call void @llvm.objc.release(i8* %tmp7) nounwind, !clang.imprecise_release !0
3044 call void @llvm.objc.release(i8* %x), !clang.imprecise_release !0
3058 call void @llvm.objc.release(i8* %b), !clang.imprecise_release !0
3059 call void @llvm.objc.release(i8* %a), !clang.imprecise_release !0