Lines Matching refs:objc
1 ; RUN: opt -basic-aa -objc-arc -S < %s | FileCheck %s
2 ; RUN: opt -aa-pipeline=basic-aa -passes=objc-arc -S < %s | FileCheck %s
6 declare i8* @llvm.objc.retain(i8*)
7 declare i8* @llvm.objc.retainAutoreleasedReturnValue(i8*)
8 declare i8* @llvm.objc.unsafeClaimAutoreleasedReturnValue(i8*)
9 declare void @llvm.objc.release(i8*)
10 declare i8* @llvm.objc.autorelease(i8*)
11 declare i8* @llvm.objc.autoreleaseReturnValue(i8*)
12 declare void @llvm.objc.autoreleasePoolPop(i8*)
13 declare i8* @llvm.objc.autoreleasePoolPush()
14 declare i8* @llvm.objc.retainBlock(i8*)
16 declare i8* @llvm.objc.retainedObject(i8*)
17 declare i8* @llvm.objc.unretainedObject(i8*)
18 declare i8* @llvm.objc.unretainedPointer(i8*)
36 ; CHECK: @llvm.objc.retain
37 ; CHECK: @llvm.objc.release
42 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
57 call void @llvm.objc.release(i8* %c) nounwind
62 ; CHECK-NOT: @llvm.objc.
67 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
82 call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
89 ; TODO: Make the llvm.objc.release's argument be %0.
92 ; CHECK: @llvm.objc.retain(i8* %a)
93 ; CHECK: @llvm.objc.release
98 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
114 call void @llvm.objc.release(i8* %c) nounwind
122 ; CHECK: @llvm.objc.retain(i8* %a)
123 ; CHECK: @llvm.objc.release
128 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
144 call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
156 ; CHECK: tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
157 ; CHECK-NOT: @llvm.objc.
159 ; CHECK: tail call void @llvm.objc.release(i8* %x) [[NUW]]
160 ; CHECK-NOT: @llvm.objc.
164 tail call i8* @llvm.objc.retain(i8* %x) nounwind
179 tail call void @llvm.objc.release(i8* %x) nounwind
185 ; CHECK: tail call i8* @llvm.objc.retain(i8* %x) [[NUW:#[0-9]+]]
186 ; CHECK-NOT: @llvm.objc.
188 ; CHECK: tail call void @llvm.objc.release(i8* %x) [[NUW]], !clang.imprecise_release ![[RELEASE:[…
189 ; CHECK-NOT: @llvm.objc.
193 tail call i8* @llvm.objc.retain(i8* %x) nounwind
208 tail call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
217 ; CHECK: @llvm.objc.retain(i8* %a)
218 ; CHECK: @llvm.objc.release
223 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
241 call void @llvm.objc.release(i8* %c) nounwind
246 ; CHECK: @llvm.objc.retain(i8* %a)
247 ; CHECK: @llvm.objc.release
252 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
270 call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
280 ; TODO: @llvm.objc.retain(i8* %a)
281 ; TODO: @llvm.objc.release
286 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
291 call void @llvm.objc.release(i8* %c) nounwind
300 ; TODO: @llvm.objc.retain(i8* %a)
301 ; TODO: @llvm.objc.release
306 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
311 call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
326 ; TODO: @llvm.objc.retain(i8* %a)
327 ; TODO: @llvm.objc.release
335 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
341 call void @llvm.objc.release(i8* %c) nounwind
346 ; TODO: @llvm.objc.retain(i8* %a)
347 ; TODO: @llvm.objc.release
355 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
361 call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
370 ; CHECK: @llvm.objc.retain(i8*
371 ; CHECK: @llvm.objc.release
376 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
381 call void @llvm.objc.release(i8* %c) nounwind
386 ; CHECK: @llvm.objc.retain(i8*
387 ; CHECK: @llvm.objc.release
392 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
397 call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
407 ; CHECK: tail call i8* @llvm.objc.retain
409 ; CHECK: call void @llvm.objc.release
411 ; CHECK: call void @llvm.objc.release
417 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
425 call void @llvm.objc.release(i8* %ct) nounwind
432 call void @llvm.objc.release(i8* %cf) nounwind
440 ; CHECK-NOT: @llvm.objc.
445 %0 = call i8* @llvm.objc.retain(i8* %a) 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
469 ; CHECK: tail call i8* @llvm.objc.retain
471 ; CHECK: call void @llvm.objc.release
473 ; CHECK: call void @llvm.objc.release
479 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
487 call void @llvm.objc.release(i8* %ct) nounwind
494 call void @llvm.objc.release(i8* %cf) nounwind, !clang.imprecise_release !0
503 ; CHECK: tail call i8* @llvm.objc.retain
505 ; CHECK: call void @llvm.objc.release
507 ; CHECK: call void @llvm.objc.release
513 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
521 call void @llvm.objc.release(i8* %ct) nounwind, !clang.imprecise_release !0
528 call void @llvm.objc.release(i8* %cf) nounwind
541 ; CHECK-NOT: llvm.objc.
543 ; CHECK: call i8* @llvm.objc.retain
545 ; CHECK: call i8* @llvm.objc.retain
547 ; CHECK: call void @llvm.objc.release
555 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
562 %1 = call i8* @llvm.objc.retain(i8* %a) nounwind
569 call void @llvm.objc.release(i8* %c) nounwind
574 ; CHECK-NOT: @llvm.objc.
582 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
589 %1 = call i8* @llvm.objc.retain(i8* %a) nounwind
596 call void @llvm.objc.release(i8* %c) nounwind, !clang.imprecise_release !0
604 ; CHECK: call i8* @llvm.objc.retainBlock
606 ; CHECK: call i8* @llvm.objc.retain
608 ; CHECK: call void @llvm.objc.release
616 %0 = call i8* @llvm.objc.retainBlock(i8* %a) nounwind
623 %1 = call i8* @llvm.objc.retain(i8* %a) nounwind
630 call void @llvm.objc.release(i8* %c) nounwind
640 ; CHECK: @llvm.objc.retain
642 ; CHECK: @llvm.objc.retain
645 ; CHECK: @llvm.objc.release
647 ; CHECK: @llvm.objc.release
656 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
663 %1 = call i8* @llvm.objc.retain(i8* %a) nounwind
673 call void @llvm.objc.release(i8* %cu) nounwind
678 call void @llvm.objc.release(i8* %cg) nounwind
686 ; CHECK-NOT: @llvm.objc.
694 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
701 %1 = call i8* @llvm.objc.retain(i8* %a) 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
726 ; CHECK-NOT: @llvm.objc.
728 ; CHECK-NOT: @llvm.objc.
731 ; CHECK: @llvm.objc.retain
732 ; CHECK: @llvm.objc.release
734 ; CHECK-NOT: @llvm.objc.
743 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
750 %1 = call i8* @llvm.objc.retain(i8* %a) nounwind
760 call void @llvm.objc.release(i8* %cu) nounwind
765 call void @llvm.objc.release(i8* %cg) nounwind, !clang.imprecise_release !0
775 ; CHECK: @llvm.objc.retain
777 ; CHECK: @llvm.objc.retain
780 ; CHECK: @llvm.objc.release
782 ; CHECK: @llvm.objc.release
791 %0 = call i8* @llvm.objc.retain(i8* %a) nounwind
798 %1 = call i8* @llvm.objc.retain(i8* %a) nounwind
808 call void @llvm.objc.release(i8* %cu) nounwind, !clang.imprecise_release !0
813 call void @llvm.objc.release(i8* %cg) nounwind
823 ; CHECK-NOT: @llvm.objc.
827 %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
828 call void @llvm.objc.release(i8* %0) nounwind
835 ; CHECK: @llvm.objc.retain(i8* %x)
836 ; CHECK: @llvm.objc.release(i8* %s)
840 %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
842 call void @llvm.objc.release(i8* %s) nounwind
849 ; CHECK: @llvm.objc.retain(i8* %x)
852 ; CHECK: @llvm.objc.release
856 %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
859 call void @llvm.objc.release(i8* %0) nounwind
864 ; Also, add a tail keyword, since llvm.objc.retain can never be passed
868 ; CHECK: tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
869 ; CHECK: call i8* @llvm.objc.autorelease(i8* %0) [[NUW]]
873 %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
874 call i8* @llvm.objc.autorelease(i8* %0) nounwind
887 %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
888 call i8* @llvm.objc.autorelease(i8* %0) nounwind
897 ; CHECK: tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
898 ; CHECK: call i8* @llvm.objc.autorelease(i8* %0) [[NUW]]
902 %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
903 call i8* @llvm.objc.autorelease(i8* %0) nounwind
912 ; CHECK-NEXT: @llvm.objc.retain(i8* %x)
913 ; CHECK-NEXT: @llvm.objc.retain
914 ; CHECK: @llvm.objc.release
918 call i8* @llvm.objc.retain(i8* %x) nounwind
919 call i8* @llvm.objc.retain(i8* %x) nounwind
922 call void @llvm.objc.release(i8* %x) nounwind
929 ; CHECK: tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
930 ; CHECK: tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
932 ; CHECK: call i8* @llvm.objc.autorelease(i8* %x) [[NUW]]
936 call i8* @llvm.objc.retain(i8* %x) nounwind
937 call i8* @llvm.objc.retain(i8* %x) nounwind
939 call i8* @llvm.objc.autorelease(i8* %x) nounwind
947 ; CHECK-NEXT: @llvm.objc.retain(i8* %x)
951 ; CHECK-NEXT: @llvm.objc.release
956 call i8* @llvm.objc.retain(i8* %x) nounwind
957 call i8* @llvm.objc.retain(i8* %x) nounwind
960 call void @llvm.objc.release(i8* %x) nounwind
962 call void @llvm.objc.release(i8* %x) nounwind
970 ; CHECK: @llvm.objc.retain(i8* %x)
971 ; CHECK: @llvm.objc.autoreleasePoolPop
972 ; CHECK: @llvm.objc.retain(i8* %x)
974 ; CHECK: @llvm.objc.release
978 call i8* @llvm.objc.retain(i8* %x) nounwind
979 call void @llvm.objc.autoreleasePoolPop(i8* undef)
980 call i8* @llvm.objc.retain(i8* %x) nounwind
983 call void @llvm.objc.release(i8* %x) nounwind
992 ; CHECK-NEXT: @llvm.objc.retain(i8* %x)
993 ; CHECK-NEXT: @llvm.objc.autoreleasePoolPush
997 ; CHECK-NEXT: @llvm.objc.release
1002 call i8* @llvm.objc.retain(i8* %x) nounwind
1003 call i8* @llvm.objc.autoreleasePoolPush()
1004 call i8* @llvm.objc.retain(i8* %x) nounwind
1007 call void @llvm.objc.release(i8* %x) nounwind
1009 call void @llvm.objc.release(i8* %x) nounwind
1019 ; CHECK-NEXT: @llvm.objc.retain
1022 ; CHECK-NEXT: @llvm.objc.release
1023 ; CHECK-NEXT: @llvm.objc.release
1028 call i8* @llvm.objc.retain(i8* %x) nounwind
1031 call void @llvm.objc.release(i8* %x) nounwind
1032 call void @llvm.objc.release(i8* %x) nounwind
1041 ; CHECK-NEXT: @llvm.objc.retain(i8* %x)
1043 ; CHECK-NEXT: @llvm.objc.autorelease(i8* %x)
1044 ; CHECK-NEXT: @llvm.objc.release
1049 call i8* @llvm.objc.retain(i8* %x) nounwind
1051 call i8* @llvm.objc.autorelease(i8* %x) nounwind
1052 call void @llvm.objc.release(i8* %x) nounwind
1061 ; CHECK-NEXT: @llvm.objc.retain
1062 ; CHECK-NEXT: @llvm.objc.autorelease
1063 ; CHECK-NEXT: @llvm.objc.release
1068 call i8* @llvm.objc.retain(i8* %x) nounwind
1069 call i8* @llvm.objc.autorelease(i8* %x) nounwind
1070 call void @llvm.objc.release(i8* %x) nounwind
1076 ; CHECK-NEXT: @llvm.objc.autorelease
1081 call i8* @llvm.objc.retain(i8* %x) nounwind
1082 call i8* @llvm.objc.autorelease(i8* %x) nounwind
1083 call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
1090 ; CHECK: @llvm.objc.retain(i8* %x)
1091 ; CHECK-NOT: @objc
1094 ; CHECK: @llvm.objc.release
1098 call i8* @llvm.objc.retain(i8* %x) nounwind
1102 call i8* @llvm.objc.retain(i8* %x) nounwind
1106 call i8* @llvm.objc.retain(i8* %x) nounwind
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
1129 ; CHECK: @llvm.objc.retain(i8* %x)
1130 ; CHECK-NOT: @objc
1134 ; CHECK-NEXT: @llvm.objc.release
1138 call i8* @llvm.objc.retain(i8* %x) nounwind
1142 call i8* @llvm.objc.retain(i8* %x) nounwind
1146 call i8* @llvm.objc.retain(i8* %x) nounwind
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
1170 ; CHECK: @llvm.objc.retain(i8* %x)
1171 ; CHECK-NOT: @objc
1174 ; CHECK: @llvm.objc.release
1178 call i8* @llvm.objc.retain(i8* %x) nounwind
1182 call i8* @llvm.objc.retain(i8* %x) nounwind
1186 call i8* @llvm.objc.retain(i8* %x) nounwind
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
1209 ; CHECK: @llvm.objc.retain(i8* %x)
1210 ; CHECK: @llvm.objc
1214 call i8* @llvm.objc.retain(i8* %x) nounwind
1218 call i8* @llvm.objc.retain(i8* %x) nounwind
1222 call i8* @llvm.objc.retain(i8* %x) nounwind
1231 call void @llvm.objc.release(i8* %x) nounwind
1235 call void @llvm.objc.release(i8* %x) nounwind, !clang.imprecise_release !0
1245 ; CHECK-NOT: @llvm.objc.
1248 call i8* @llvm.objc.retain(i8* null)
1249 call void @llvm.objc.release(i8* null)
1250 call i8* @llvm.objc.autorelease(i8* null)
1257 ; CHECK-NOT: @llvm.objc.
1260 call i8* @llvm.objc.retain(i8* undef)
1261 call void @llvm.objc.release(i8* undef)
1262 call i8* @llvm.objc.autorelease(i8* undef)
1272 ; CHECK: %1 = tail call i8* @llvm.objc.retain(i8* %0)
1276 ; CHECK: call void @llvm.objc.release(i8* %2)
1282 %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
1286 call void @llvm.objc.release(i8* %x)
1293 ; CHECK: %tmp1 = tail call i8* @llvm.objc.retain(i8* %tmp) [[NUW]]
1299 %tmp1 = call i8* @llvm.objc.retain(i8* %tmp) nounwind
1327 %0 = call i8* @llvm.objc.retain(i8* %call) nounwind
1328 %1 = call i8* @llvm.objc.autorelease(i8* %0) nounwind
1332 ; Move an objc call up through a phi that has null operands.
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)
1378 ; CHECK: @llvm.objc.retain(i8* %a)
1379 ; CHECK: @llvm.objc.release
1382 call i8* @llvm.objc.retain(i8* %a)
1385 call void @llvm.objc.release(i8* %a)
1394 ; CHECK: call i8* @llvm.objc.retain(i8* %p)
1397 ; CHECK: call void @llvm.objc.release(i8* %p)
1401 %f0 = call i8* @llvm.objc.retain(i8* %p)
1410 call void @llvm.objc.release(i8* %p)
1419 ; CHECK: call i8* @llvm.objc.retain(i8* %p)
1422 ; CHECK: call void @llvm.objc.release(i8* %p)
1426 %f0 = call i8* @llvm.objc.retain(i8* %p)
1435 call void @llvm.objc.release(i8* %p)
1443 ; CHECK: call i8* @llvm.objc.retain(i8* %p)
1445 ; CHECK-NOT: @llvm.objc.
1447 ; CHECK: call void @llvm.objc.release
1451 %f0 = call i8* @llvm.objc.retain(i8* %p)
1460 call void @llvm.objc.release(i8* %p)
1467 ; CHECK-NOT: @llvm.objc.
1469 ; CHECK: call i8* @llvm.objc.retain
1472 ; CHECK: call void @llvm.objc.release
1474 ; CHECK-NOT: @llvm.objc.
1478 %f0 = call i8* @llvm.objc.retain(i8* %p)
1487 call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
1495 ; CHECK: call i8* @llvm.objc.retain
1497 ; CHECK-NOT: @llvm.objc.
1499 ; CHECK-NOT: @llvm.objc.
1501 ; CHECK-NOT: @llvm.objc.
1503 ; CHECK: @llvm.objc.release
1507 %f0 = call i8* @llvm.objc.retain(i8* %p)
1517 call void @llvm.objc.release(i8* %p)
1525 ; CHECK-NOT: @llvm.objc.
1527 ; CHECK: call i8* @llvm.objc.retain
1530 ; CHECK: call void @llvm.objc.release(i8* %p) [[NUW]], !clang.imprecise_release
1532 ; CHECK-NOT: @llvm.objc.
1536 %f0 = call i8* @llvm.objc.retain(i8* %p)
1546 call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
1553 ; CHECK: call i8* @llvm.objc.retain
1558 ; CHECK: call void @llvm.objc.release
1560 ; CHECK: call void @llvm.objc.release
1564 %f0 = call i8* @llvm.objc.retain(i8* %p)
1573 call void @llvm.objc.release(i8* %p)
1577 call void @llvm.objc.release(i8* %p)
1585 ; CHECK: call i8* @llvm.objc.retain
1591 ; CHECK: call void @llvm.objc.release
1593 ; CHECK: call void @llvm.objc.release
1597 %f0 = call i8* @llvm.objc.retain(i8* %p)
1609 call void @llvm.objc.release(i8* %p)
1613 call void @llvm.objc.release(i8* %p)
1620 ; CHECK: call i8* @llvm.objc.retain(i8* %p)
1624 ; CHECK: call void @llvm.objc.release
1626 ; CHECK: call void @llvm.objc.release
1631 %f0 = call i8* @llvm.objc.retain(i8* %p)
1636 call void @llvm.objc.release(i8* %p)
1639 call void @llvm.objc.release(i8* %p)
1646 ; CHECK: call i8* @llvm.objc.retain
1651 ; CHECK: call void @llvm.objc.release
1655 %f0 = call i8* @llvm.objc.retain(i8* %p)
1666 call void @llvm.objc.release(i8* %g)
1673 ; CHECK: call i8* @llvm.objc.retain
1678 ; CHECK: call void @llvm.objc.release
1682 %f0 = call i8* @llvm.objc.retain(i8* %p)
1693 call void @llvm.objc.release(i8* %g)
1701 ; CHECK: call i8* @llvm.objc.retain
1704 ; CHECK: call void @llvm.objc.release
1708 %f0 = call i8* @llvm.objc.retain(i8* %p)
1718 call void @llvm.objc.release(i8* %g)
1723 ; CHECK-NOT: @llvm.objc.
1727 %f0 = call i8* @llvm.objc.retain(i8* %p)
1737 call void @llvm.objc.release(i8* %g), !clang.imprecise_release !0
1748 ; CHECK: call i8* @llvm.objc.retain
1751 ; CHECK: call void @llvm.objc.release
1755 %f0 = call i8* @llvm.objc.retain(i8* %p)
1765 call void @llvm.objc.release(i8* %g)
1771 ; CHECK-NOT: @llvm.objc.
1775 %f0 = call i8* @llvm.objc.retain(i8* %p)
1785 call void @llvm.objc.release(i8* %g), !clang.imprecise_release !0
1792 ; CHECK: @llvm.objc.retain
1794 ; CHECK-NOT: @llvm.objc.
1796 ; CHECK: @llvm.objc.release
1800 call i8* @llvm.objc.retain(i8* %p)
1803 call void @llvm.objc.release(i8* %p)
1810 ; CHECK-NOT: @llvm.objc.
1814 call i8* @llvm.objc.retain(i8* %p)
1817 call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
1824 ; CHECK-NOT: @llvm.objc.
1828 call i8* @llvm.objc.retain(i8* %p)
1851 call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
1858 ; CHECK-NOT: @llvm.objc.
1862 %0 = call i8* @llvm.objc.retain(i8* %p)
1869 call void @llvm.objc.release(i8* %0), !clang.imprecise_release !0
1876 ; CHECK-NOT: @llvm.objc.
1880 %0 = call i8* @llvm.objc.retain(i8* %p)
1888 call void @llvm.objc.release(i8* %0), !clang.imprecise_release !0
1895 ; CHECK-NOT: @llvm.objc.
1899 %0 = call i8* @llvm.objc.retain(i8* %p)
1907 call void @llvm.objc.release(i8* %0), !clang.imprecise_release !0
1915 ; CHECK-NOT: @llvm.objc.
1919 %0 = call i8* @llvm.objc.retain(i8* %p)
1927 call void @llvm.objc.release(i8* %0), !clang.imprecise_release !0
1936 ; CHECK-NEXT: call i8* @llvm.objc.retain(i8* %p)
1937 ; CHECK-NEXT: call i8* @llvm.objc.autorelease(i8* %p)
1942 ; CHECK-NEXT: call void @llvm.objc.release(i8* %p)
1947 call i8* @llvm.objc.retain(i8* %p)
1948 call i8* @llvm.objc.autorelease(i8* %p)
1949 call i8* @llvm.objc.retain(i8* %p)
1952 call void @llvm.objc.release(i8* %p)
1955 call void @llvm.objc.release(i8* %p)
1964 ; CHECK-NEXT: call i8* @llvm.objc.retain(i8* %p)
1965 ; CHECK-NEXT: call i8* @llvm.objc.autorelease(i8* %p)
1966 ; CHECK-NEXT: call i8* @llvm.objc.retain
1969 ; CHECK-NEXT: call void @llvm.objc.autoreleasePoolPop(i8* undef)
1970 ; CHECK-NEXT: call void @llvm.objc.release
1975 call i8* @llvm.objc.retain(i8* %p)
1976 call i8* @llvm.objc.autorelease(i8* %p)
1977 call i8* @llvm.objc.retain(i8* %p)
1980 call void @llvm.objc.autoreleasePoolPop(i8* undef)
1981 call void @llvm.objc.release(i8* %p)
1990 ; CHECK-NEXT: call i8* @llvm.objc.retain(i8* %p)
1991 ; CHECK-NEXT: call i8* @llvm.objc.autorelease(i8* %p)
1994 ; CHECK-NEXT: call i8* @llvm.objc.autoreleasePoolPush()
1996 ; CHECK-NEXT: call void @llvm.objc.release
2001 call i8* @llvm.objc.retain(i8* %p)
2002 call i8* @llvm.objc.autorelease(i8* %p)
2003 call i8* @llvm.objc.retain(i8* %p)
2006 call i8* @llvm.objc.autoreleasePoolPush()
2007 call void @llvm.objc.release(i8* %p)
2009 call void @llvm.objc.release(i8* %p)
2016 ; CHECK-NOT: llvm.objc.
2020 %q = call i8* @llvm.objc.retain(i8* %p)
2021 call void @llvm.objc.release(i8* %q)
2026 ; may-alias llvm.objc.release between them.
2029 ; CHECK: call i8* @llvm.objc.retain(i8* %p)
2030 ; CHECK: call void @llvm.objc.release(i8* %q)
2032 ; CHECK: call void @llvm.objc.release(i8* %p)
2037 call i8* @llvm.objc.retain(i8* %p)
2038 call void @llvm.objc.release(i8* %q)
2040 call void @llvm.objc.release(i8* %p)
2047 ; CHECK: tail call i8* @llvm.objc.retain(i8* %p) [[NUW]]
2049 ; CHECK: call i8* @llvm.objc.autorelease(i8* %p) [[NUW]]
2053 call i8* @llvm.objc.retain(i8* %p)
2057 call i8* @llvm.objc.autorelease(i8* %p)
2072 %x = call i8* @llvm.objc.retainedObject(i8* %p)
2083 %x = call i8* @llvm.objc.unretainedObject(i8* %p)
2094 %x = call i8* @llvm.objc.unretainedPointer(i8* %p)
2099 ; have imprecise release attached to llvm.objc.release.
2102 ; CHECK-NEXT: call i8* @llvm.objc.retain
2105 ; CHECK-NEXT: call void @llvm.objc.release
2109 call i8* @llvm.objc.retain(i8* %p)
2112 call void @llvm.objc.release(i8* %p)
2117 ; CHECK-NOT: @llvm.objc.
2120 call i8* @llvm.objc.retain(i8* %p)
2123 call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
2132 ; CHECK: call i8* @llvm.objc.retain(i8* %p)
2133 ; CHECK: call void @llvm.objc.release(i8* %p)
2137 call i8* @llvm.objc.retain(i8* %p)
2140 call void @llvm.objc.release(i8* %p)
2145 ; CHECK: call i8* @llvm.objc.retain(i8* %p)
2146 ; CHECK: call void @llvm.objc.release(i8* %p)
2150 call i8* @llvm.objc.retain(i8* %p)
2153 call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
2161 ; CHECK: call i8* @llvm.objc.retain
2164 ; CHECK: call void @llvm.objc.release
2169 %1 = call i8* @llvm.objc.retain(i8* %p)
2173 call void @llvm.objc.release(i8* %p)
2178 ; CHECK: call i8* @llvm.objc.retain
2181 ; CHECK: call void @llvm.objc.release
2186 %1 = call i8* @llvm.objc.retain(i8* %p)
2190 call void @llvm.objc.release(i8* %p), !clang.imprecise_release !0
2200 ; CHECK: @llvm.objc.
2204 %1 = call i8* @llvm.objc.retain(i8* %p)
2208 call void @llvm.objc.release(i8* %p)
2216 ; CHECK-NEXT: call void @llvm.objc.release(i8* %t) [[NUW]], !clang.imprecise_release ![[RELEASE]]
2221 call i8* @llvm.objc.autorelease(i8* %t)
2228 ; CHECK-NOT: @objc
2232 %0 = call i8* @llvm.objc.retain(i8* %x) nounwind
2233 %1 = call i8* @llvm.objc.retain(i8* %x) nounwind
2234 call void @llvm.objc.release(i8* %x) nounwind
2235 call void @llvm.objc.release(i8* %x) nounwind
2245 ; CHECK-NOT: @objc
2247 ; CHECK-NEXT: %0 = tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
2250 ; CHECK-NEXT: tail call void @llvm.objc.release(i8* %x) [[NUW]], !clang.imprecise_release ![[RELEAS…
2252 ; CHECK-NOT: @objc
2256 %0 = tail call i8* @llvm.objc.retain(i8* %x) nounwind
2257 %1 = tail call i8* @llvm.objc.retain(i8* %0) nounwind
2262 %2 = tail call i8* @llvm.objc.retain(i8* %1) nounwind
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
2280 ; CHECK-NEXT: tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
2283 ; CHECK-NEXT: tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
2286 ; CHECK-NEXT: call void @llvm.objc.release(i8* %x) [[NUW]]
2291 call i8* @llvm.objc.retain(i8* %x) nounwind
2292 call i8* @llvm.objc.retain(i8* %x) nounwind
2295 call void @llvm.objc.release(i8* %x) nounwind
2296 call i8* @llvm.objc.retain(i8* %x) nounwind
2299 call void @llvm.objc.release(i8* %x) nounwind
2308 ; CHECK-NEXT: @llvm.objc.retain
2315 call i8* @llvm.objc.retain(i8* %x) nounwind
2316 call i8* @llvm.objc.retain(i8* %x) nounwind
2319 call void @llvm.objc.release(i8* %x) nounwind
2320 call i8* @llvm.objc.retain(i8* %x) nounwind
2321 call void @llvm.objc.release(i8* %x) nounwind
2329 ; CHECK-NEXT: %0 = tail call i8* @llvm.objc.retain(i8* %x) [[NUW]]
2332 ; CHECK-NEXT: call void @llvm.objc.release(i8* %x) [[NUW]]
2337 %a = call i8* @llvm.objc.retain(i8* %x) nounwind
2338 call void @llvm.objc.release(i8* %x) nounwind
2339 %b = call i8* @llvm.objc.retain(i8* %x) nounwind
2342 call void @llvm.objc.release(i8* %x) nounwind
2355 ; CHECK: call i8* @llvm.objc.retain
2356 ; CHECK: call void @llvm.objc.release
2361 call i8* @llvm.objc.retain(i8* %s)
2364 call void @llvm.objc.release(i8* %s)
2369 ; CHECK: call i8* @llvm.objc.retain
2370 ; CHECK-NOT: call i8* @llvm.objc.retain
2371 ; CHECK-NOT: call i8* @llvm.objc.release
2376 call i8* @llvm.objc.retain(i8* %t)
2377 call i8* @llvm.objc.retain(i8* %t)
2380 call void @llvm.objc.release(i8* %t)
2385 ; CHECK-NOT: @llvm.objc.
2390 call i8* @llvm.objc.retain(i8* %t)
2393 call void @llvm.objc.release(i8* %t), !clang.imprecise_release !0
2398 ; CHECK-NOT: @llvm.objc.
2403 call i8* @llvm.objc.retain(i8* %t)
2406 call void @llvm.objc.release(i8* %t)
2411 ; CHECK-NOT: @llvm.objc.
2416 call i8* @llvm.objc.retain(i8* %t)
2419 call void @llvm.objc.release(i8* %t), !clang.imprecise_release !0
2427 ; CHECK-NOT: @llvm.objc.
2431 call i8* @llvm.objc.retain(i8* %t)
2434 call void @llvm.objc.release(i8* %t)
2442 ; CHECK-NOT: @llvm.objc.
2449 call i8* @llvm.objc.retain(i8* %x)
2454 call void @llvm.objc.release(i8* %x)
2458 call void @llvm.objc.release(i8* %x)
2467 ; CHECK: tail call i8* @llvm.objc.retain(i8* %x)
2469 ; CHECK: call void @llvm.objc.release(i8* %x)
2476 call i8* @llvm.objc.retain(i8* %x)
2481 call void @llvm.objc.release(i8* %x)
2493 ; CHECK: tail call i8* @llvm.objc.retain(i8* %x)
2495 ; CHECK: call void @llvm.objc.release(i8* %x)
2502 call i8* @llvm.objc.retain(i8* %x)
2510 call void @llvm.objc.release(i8* %x)
2518 ; CHECK: call i8* @llvm.objc.autorelease(
2520 ; CHECK-NOT: @llvm.objc.autorelease
2528 %s = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %c) nounwind
2533 %q = call i8* @llvm.objc.autorelease(i8* %retval) nounwind
2541 ; CHECK-NOT: @llvm.objc.autorelease
2543 ; CHECK: call i8* @llvm.objc.autorelease(
2547 %t = call i8* @llvm.objc.autoreleasePoolPush()
2552 %s = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %c) nounwind
2557 call void @llvm.objc.autoreleasePoolPop(i8* %t)
2558 %q = call i8* @llvm.objc.autorelease(i8* %retval) nounwind
2567 ; CHECK-NOT: @llvm.objc.autorelease
2569 ; CHECK: call i8* @llvm.objc.autoreleaseReturnValue(
2577 %s = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %c) nounwind
2582 %q = call i8* @llvm.objc.autoreleaseReturnValue(i8* %retval) nounwind
2588 ; CHECK-NOT: @llvm.objc.autorelease
2590 ; CHECK: call i8* @llvm.objc.autoreleaseReturnValue(
2598 %s = call i8* @llvm.objc.unsafeClaimAutoreleasedReturnValue(i8* %c) nounwind
2603 %q = call i8* @llvm.objc.autoreleaseReturnValue(i8* %retval) nounwind
2607 ; An llvm.objc.retain can serve as a may-use for a different pointer.
2611 ; CHECK: tail call i8* @llvm.objc.retain(i8* %cond) [[NUW]]
2612 ; CHECK: tail call void @llvm.objc.release(i8* %call) [[NUW]]
2613 ; CHECK: tail call i8* @llvm.objc.retain(i8* %tmp8) [[NUW]]
2614 ; CHECK: tail call void @llvm.objc.release(i8* %cond) [[NUW]]
2625 %tmp7 = tail call i8* @llvm.objc.retain(i8* %cond) nounwind
2626 tail call void @llvm.objc.release(i8* %call) nounwind
2628 %tmp9 = tail call i8* @llvm.objc.retain(i8* %tmp8) nounwind
2629 tail call void @llvm.objc.release(i8* %cond) nounwind
2634 ; CHECK: tail call i8* @llvm.objc.retain(i8* %cond) [[NUW]]
2635 ; CHECK: tail call void @llvm.objc.release(i8* %call) [[NUW]]
2636 ; CHECK: tail call i8* @llvm.objc.retain(i8* %tmp8) [[NUW]]
2637 ; CHECK: tail call void @llvm.objc.release(i8* %cond) [[NUW]]
2648 %tmp7 = tail call i8* @llvm.objc.retain(i8* %cond) nounwind
2649 tail call void @llvm.objc.release(i8* %call) nounwind, !clang.imprecise_release !0
2651 %tmp9 = tail call i8* @llvm.objc.retain(i8* %tmp8) nounwind
2652 tail call void @llvm.objc.release(i8* %cond) nounwind
2657 ; CHECK: tail call i8* @llvm.objc.retain(i8* %cond) [[NUW]]
2658 ; CHECK: tail call void @llvm.objc.release(i8* %call) [[NUW]]
2659 ; CHECK: tail call i8* @llvm.objc.retain(i8* %tmp8) [[NUW]]
2660 ; CHECK: tail call void @llvm.objc.release(i8* %cond) [[NUW]]
2671 %tmp7 = tail call i8* @llvm.objc.retain(i8* %cond) nounwind
2672 tail call void @llvm.objc.release(i8* %call) nounwind
2674 %tmp9 = tail call i8* @llvm.objc.retain(i8* %tmp8) nounwind, !clang.imprecise_release !0
2675 tail call void @llvm.objc.release(i8* %cond) nounwind
2680 ; CHECK: tail call i8* @llvm.objc.retain(i8* %cond) [[NUW]]
2681 ; CHECK: tail call void @llvm.objc.release(i8* %call) [[NUW]]
2682 ; CHECK: tail call i8* @llvm.objc.retain(i8* %tmp8) [[NUW]]
2683 ; CHECK: tail call void @llvm.objc.release(i8* %cond) [[NUW]]
2694 %tmp7 = tail call i8* @llvm.objc.retain(i8* %cond) nounwind
2695 tail call void @llvm.objc.release(i8* %call) nounwind, !clang.imprecise_release !0
2697 %tmp9 = tail call i8* @llvm.objc.retain(i8* %tmp8) nounwind
2698 tail call void @llvm.objc.release(i8* %cond) nounwind, !clang.imprecise_release !0
2711 ; CHECK-NOT: @llvm.objc.
2717 %1 = tail call i8* @llvm.objc.retain(i8* %0) nounwind
2745 tail call void @llvm.objc.release(i8* %0) nounwind
2757 ; CHECK-NOT: @llvm.objc.
2763 %1 = tail call i8* @llvm.objc.retain(i8* %0) nounwind
2765 tail call void @llvm.objc.release(i8* %0) nounwind
2777 ; CHECK-NOT: @llvm.objc.
2779 ; CHECK-NOT: @llvm.objc.
2784 %0 = tail call i8* @llvm.objc.retain(i8* %x) nounwind
2790 %1 = tail call i8* @llvm.objc.retain(i8* %x) nounwind
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
2806 ; CHECK-NOT: call i8* @llvm.objc.retain(i8* %tmp7)
2865 %tmp8 = call i8* @llvm.objc.retain(i8* %tmp7) nounwind
2875 %tmp9 = call i8* @llvm.objc.retain(i8* %call76) nounwind
2883 %tmp10 = call i8* @llvm.objc.retain(i8* %call137) nounwind
2884 call void @llvm.objc.release(i8* null) nounwind
2885 %tmp12 = call i8* @llvm.objc.retain(i8* %call137) nounwind
2886 call void @llvm.objc.release(i8* null) nounwind
2902 %tmp14 = call i8* @llvm.objc.retain(i8* %call2822) nounwind
2903 call void @llvm.objc.release(i8* null) nounwind
2931 %tmp15 = call i8* @llvm.objc.retain(i8* %call6110) nounwind
2932 call void @llvm.objc.release(i8* %call137) nounwind
2941 %tmp16 = call i8* @llvm.objc.retain(i8* %call7220) nounwind
2942 call void @llvm.objc.release(i8* %call6110) nounwind
2966 %tmp21 = call i8* @llvm.objc.retain(i8* %call9218) nounwind
2968 call void @llvm.objc.release(i8* %tmp22) nounwind
2996 %tmp23 = call i8* @llvm.objc.retain(i8* %call12414) nounwind
2997 %tmp25 = call i8* @llvm.objc.autorelease(i8* %tmp23) 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
3029 declare i32 @llvm.objc.sync.enter(i8*)
3030 declare i32 @llvm.objc.sync.exit(i8*)
3036 ; CHECK-NEXT: call i32 @llvm.objc.sync.enter(i8* %x)
3037 ; CHECK-NEXT: call i32 @llvm.objc.sync.exit(i8* %x)
3041 call i8* @llvm.objc.retain(i8* %x)
3042 call i32 @llvm.objc.sync.enter(i8* %x)
3043 call i32 @llvm.objc.sync.exit(i8* %x)
3044 call void @llvm.objc.release(i8* %x), !clang.imprecise_release !0
3055 call i8* @llvm.objc.retain(i8* %a)
3056 call i8* @llvm.objc.retain(i8* %b)
3058 call void @llvm.objc.release(i8* %b), !clang.imprecise_release !0
3059 call void @llvm.objc.release(i8* %a), !clang.imprecise_release !0