Home | History | Annotate | Download | only in Analysis

Lines Matching refs:ARCInstKind

1 //===- ARCInstKind.cpp - ObjC ARC Optimization ----------------------------===//
31 const ARCInstKind Class) {
33 case ARCInstKind::Retain:
34 return OS << "ARCInstKind::Retain";
35 case ARCInstKind::RetainRV:
36 return OS << "ARCInstKind::RetainRV";
37 case ARCInstKind::ClaimRV:
38 return OS << "ARCInstKind::ClaimRV";
39 case ARCInstKind::RetainBlock:
40 return OS << "ARCInstKind::RetainBlock";
41 case ARCInstKind::Release:
42 return OS << "ARCInstKind::Release";
43 case ARCInstKind::Autorelease:
44 return OS << "ARCInstKind::Autorelease";
45 case ARCInstKind::AutoreleaseRV:
46 return OS << "ARCInstKind::AutoreleaseRV";
47 case ARCInstKind::AutoreleasepoolPush:
48 return OS << "ARCInstKind::AutoreleasepoolPush";
49 case ARCInstKind::AutoreleasepoolPop:
50 return OS << "ARCInstKind::AutoreleasepoolPop";
51 case ARCInstKind::NoopCast:
52 return OS << "ARCInstKind::NoopCast";
53 case ARCInstKind::FusedRetainAutorelease:
54 return OS << "ARCInstKind::FusedRetainAutorelease";
55 case ARCInstKind::FusedRetainAutoreleaseRV:
56 return OS << "ARCInstKind::FusedRetainAutoreleaseRV";
57 case ARCInstKind::LoadWeakRetained:
58 return OS << "ARCInstKind::LoadWeakRetained";
59 case ARCInstKind::StoreWeak:
60 return OS << "ARCInstKind::StoreWeak";
61 case ARCInstKind::InitWeak:
62 return OS << "ARCInstKind::InitWeak";
63 case ARCInstKind::LoadWeak:
64 return OS << "ARCInstKind::LoadWeak";
65 case ARCInstKind::MoveWeak:
66 return OS << "ARCInstKind::MoveWeak";
67 case ARCInstKind::CopyWeak:
68 return OS << "ARCInstKind::CopyWeak";
69 case ARCInstKind::DestroyWeak:
70 return OS << "ARCInstKind::DestroyWeak";
71 case ARCInstKind::StoreStrong:
72 return OS << "ARCInstKind::StoreStrong";
73 case ARCInstKind::CallOrUser:
74 return OS << "ARCInstKind::CallOrUser";
75 case ARCInstKind::Call:
76 return OS << "ARCInstKind::Call";
77 case ARCInstKind::User:
78 return OS << "ARCInstKind::User";
79 case ARCInstKind::IntrinsicUser:
80 return OS << "ARCInstKind::IntrinsicUser";
81 case ARCInstKind::None:
82 return OS << "ARCInstKind::None";
87 ARCInstKind llvm::objcarc::GetFunctionClass(const Function *F) {
92 return StringSwitch<ARCInstKind>(F->getName())
93 .Case("objc_autoreleasePoolPush", ARCInstKind::AutoreleasepoolPush)
94 .Case("clang.arc.use", ARCInstKind::IntrinsicUser)
95 .Default(ARCInstKind::CallOrUser);
105 return StringSwitch<ARCInstKind>(F->getName())
106 .Case("objc_retain", ARCInstKind::Retain)
107 .Case("objc_retainAutoreleasedReturnValue", ARCInstKind::RetainRV)
109 ARCInstKind::ClaimRV)
110 .Case("objc_retainBlock", ARCInstKind::RetainBlock)
111 .Case("objc_release", ARCInstKind::Release)
112 .Case("objc_autorelease", ARCInstKind::Autorelease)
113 .Case("objc_autoreleaseReturnValue", ARCInstKind::AutoreleaseRV)
114 .Case("objc_autoreleasePoolPop", ARCInstKind::AutoreleasepoolPop)
115 .Case("objc_retainedObject", ARCInstKind::NoopCast)
116 .Case("objc_unretainedObject", ARCInstKind::NoopCast)
117 .Case("objc_unretainedPointer", ARCInstKind::NoopCast)
119 ARCInstKind::FusedRetainAutorelease)
120 .Case("objc_retainAutorelease", ARCInstKind::FusedRetainAutorelease)
122 ARCInstKind::FusedRetainAutoreleaseRV)
123 .Case("objc_sync_enter", ARCInstKind::User)
124 .Case("objc_sync_exit", ARCInstKind::User)
125 .Default(ARCInstKind::CallOrUser);
130 return StringSwitch<ARCInstKind>(F->getName())
131 .Case("objc_loadWeakRetained", ARCInstKind::LoadWeakRetained)
132 .Case("objc_loadWeak", ARCInstKind::LoadWeak)
133 .Case("objc_destroyWeak", ARCInstKind::DestroyWeak)
134 .Default(ARCInstKind::CallOrUser);
147 return StringSwitch<ARCInstKind>(F->getName())
148 .Case("objc_storeWeak", ARCInstKind::StoreWeak)
149 .Case("objc_initWeak", ARCInstKind::InitWeak)
150 .Case("objc_storeStrong", ARCInstKind::StoreStrong)
151 .Default(ARCInstKind::CallOrUser);
155 return StringSwitch<ARCInstKind>(F->getName())
156 .Case("objc_moveWeak", ARCInstKind::MoveWeak)
157 .Case("objc_copyWeak", ARCInstKind::CopyWeak)
163 ARCInstKind::None)
165 ARCInstKind::None)
167 ARCInstKind::None)
169 ARCInstKind::None)
170 .Default(ARCInstKind::CallOrUser);
174 return ARCInstKind::CallOrUser;
232 ARCInstKind llvm::objcarc::GetARCInstKind(const Value *V) {
245 ARCInstKind Class = GetFunctionClass(F);
246 if (Class != ARCInstKind::CallOrUser)
250 return ARCInstKind::None;
252 return ARCInstKind::User;
310 return ARCInstKind::User;
321 return ARCInstKind::User;
326 return ARCInstKind::None;
330 bool llvm::objcarc::IsUser(ARCInstKind Class) {
332 case ARCInstKind::User:
333 case ARCInstKind::CallOrUser:
334 case ARCInstKind::IntrinsicUser:
336 case ARCInstKind::Retain:
337 case ARCInstKind::RetainRV:
338 case ARCInstKind::RetainBlock:
339 case ARCInstKind::Release:
340 case ARCInstKind::Autorelease:
341 case ARCInstKind::AutoreleaseRV:
342 case ARCInstKind::AutoreleasepoolPush:
343 case ARCInstKind::AutoreleasepoolPop:
344 case ARCInstKind::NoopCast:
345 case ARCInstKind::FusedRetainAutorelease:
346 case ARCInstKind::FusedRetainAutoreleaseRV:
347 case ARCInstKind::LoadWeakRetained:
348 case ARCInstKind::StoreWeak:
349 case ARCInstKind::InitWeak:
350 case ARCInstKind::LoadWeak:
351 case ARCInstKind::MoveWeak:
352 case ARCInstKind::CopyWeak:
353 case ARCInstKind::DestroyWeak:
354 case ARCInstKind::StoreStrong:
355 case ARCInstKind::Call:
356 case ARCInstKind::None:
357 case ARCInstKind::ClaimRV:
364 bool llvm::objcarc::IsRetain(ARCInstKind Class) {
366 case ARCInstKind::Retain:
367 case ARCInstKind::RetainRV:
371 case ARCInstKind::RetainBlock:
372 case ARCInstKind::Release:
373 case ARCInstKind::Autorelease:
374 case ARCInstKind::AutoreleaseRV:
375 case ARCInstKind::AutoreleasepoolPush:
376 case ARCInstKind::AutoreleasepoolPop:
377 case ARCInstKind::NoopCast:
378 case ARCInstKind::FusedRetainAutorelease:
379 case ARCInstKind::FusedRetainAutoreleaseRV:
380 case ARCInstKind::LoadWeakRetained:
381 case ARCInstKind::StoreWeak:
382 case ARCInstKind::InitWeak:
383 case ARCInstKind::LoadWeak:
384 case ARCInstKind::MoveWeak:
385 case ARCInstKind::CopyWeak:
386 case ARCInstKind::DestroyWeak:
387 case ARCInstKind::StoreStrong:
388 case ARCInstKind::IntrinsicUser:
389 case ARCInstKind::CallOrUser:
390 case ARCInstKind::Call:
391 case ARCInstKind::User:
392 case ARCInstKind::None:
393 case ARCInstKind::ClaimRV:
400 bool llvm::objcarc::IsAutorelease(ARCInstKind Class) {
402 case ARCInstKind::Autorelease:
403 case ARCInstKind::AutoreleaseRV:
405 case ARCInstKind::Retain:
406 case ARCInstKind::RetainRV:
407 case ARCInstKind::ClaimRV:
408 case ARCInstKind::RetainBlock:
409 case ARCInstKind::Release:
410 case ARCInstKind::AutoreleasepoolPush:
411 case ARCInstKind::AutoreleasepoolPop:
412 case ARCInstKind::NoopCast:
413 case ARCInstKind::FusedRetainAutorelease:
414 case ARCInstKind::FusedRetainAutoreleaseRV:
415 case ARCInstKind::LoadWeakRetained:
416 case ARCInstKind::StoreWeak:
417 case ARCInstKind::InitWeak:
418 case ARCInstKind::LoadWeak:
419 case ARCInstKind::MoveWeak:
420 case ARCInstKind::CopyWeak:
421 case ARCInstKind::DestroyWeak:
422 case ARCInstKind::StoreStrong:
423 case ARCInstKind::IntrinsicUser:
424 case ARCInstKind::CallOrUser:
425 case ARCInstKind::Call:
426 case ARCInstKind::User:
427 case ARCInstKind::None:
435 bool llvm::objcarc::IsForwarding(ARCInstKind Class) {
437 case ARCInstKind::Retain:
438 case ARCInstKind::RetainRV:
439 case ARCInstKind::ClaimRV:
440 ARCInstKind::Autorelease:
441 case ARCInstKind::AutoreleaseRV:
442 case ARCInstKind::NoopCast:
444 case ARCInstKind::RetainBlock:
445 case ARCInstKind::Release:
446 case ARCInstKind::AutoreleasepoolPush:
447 case ARCInstKind::AutoreleasepoolPop:
448 case ARCInstKind::FusedRetainAutorelease:
449 case ARCInstKind::FusedRetainAutoreleaseRV:
450 case ARCInstKind::LoadWeakRetained:
451 case ARCInstKind::StoreWeak:
452 case ARCInstKind::InitWeak:
453 case ARCInstKind::LoadWeak:
454 case ARCInstKind::MoveWeak:
455 case ARCInstKind::CopyWeak:
456 case ARCInstKind::DestroyWeak:
457 case ARCInstKind::StoreStrong:
458 case ARCInstKind::IntrinsicUser:
459 case ARCInstKind::CallOrUser:
460 case ARCInstKind::Call:
461 case ARCInstKind::User:
462 case ARCInstKind::None:
470 bool llvm::objcarc::IsNoopOnNull(ARCInstKind Class) {
472 case ARCInstKind::Retain:
473 case ARCInstKind::RetainRV:
474 case ARCInstKind::ClaimRV:
475 case ARCInstKind::Release:
476 case ARCInstKind::Autorelease:
477 case ARCInstKind::AutoreleaseRV:
478 case ARCInstKind::RetainBlock:
480 case ARCInstKind::AutoreleasepoolPush:
481 case ARCInstKind::AutoreleasepoolPop:
482 case ARCInstKind::FusedRetainAutorelease:
483 case ARCInstKind::FusedRetainAutoreleaseRV:
484 case ARCInstKind::LoadWeakRetained:
485 case ARCInstKind::StoreWeak:
486 case ARCInstKind::InitWeak:
487 case ARCInstKind::LoadWeak:
488 case ARCInstKind::MoveWeak:
489 case ARCInstKind::CopyWeak:
490 case ARCInstKind::DestroyWeak:
491 case ARCInstKind::StoreStrong:
492 case ARCInstKind::IntrinsicUser:
493 case ARCInstKind::CallOrUser:
494 case ARCInstKind::Call:
495 case ARCInstKind::User:
496 case ARCInstKind::None:
497 case ARCInstKind::NoopCast:
505 bool llvm::objcarc::IsAlwaysTail(ARCInstKind Class) {
506 // ARCInstKind::RetainBlock may be given a stack argument.
508 case ARCInstKind::Retain:
509 case ARCInstKind::RetainRV:
510 case ARCInstKind::ClaimRV:
511 case ARCInstKind::AutoreleaseRV:
513 case ARCInstKind::Release:
514 case ARCInstKind::Autorelease:
515 case ARCInstKind::RetainBlock:
516 case ARCInstKind::AutoreleasepoolPush:
517 case ARCInstKind::AutoreleasepoolPop:
518 case ARCInstKind::FusedRetainAutorelease:
519 case ARCInstKind::FusedRetainAutoreleaseRV:
520 case ARCInstKind::LoadWeakRetained:
521 case ARCInstKind::StoreWeak:
522 case ARCInstKind::InitWeak:
523 case ARCInstKind::LoadWeak:
524 case ARCInstKind::MoveWeak:
525 case ARCInstKind::CopyWeak:
526 case ARCInstKind::DestroyWeak:
527 case ARCInstKind::StoreStrong:
528 case ARCInstKind::IntrinsicUser:
529 case ARCInstKind::CallOrUser:
530 case ARCInstKind::Call:
531 case ARCInstKind::User:
532 case ARCInstKind::None:
533 case ARCInstKind::NoopCast:
541 bool llvm::objcarc::IsNeverTail(ARCInstKind Class) {
547 case ARCInstKind::Autorelease:
549 case ARCInstKind::Retain:
550 case ARCInstKind::RetainRV:
551 case ARCInstKind::ClaimRV:
552 case ARCInstKind::AutoreleaseRV:
553 case ARCInstKind::Release:
554 case ARCInstKind::RetainBlock:
555 case ARCInstKind::AutoreleasepoolPush:
556 case ARCInstKind::AutoreleasepoolPop:
557 case ARCInstKind::FusedRetainAutorelease:
558 case ARCInstKind::FusedRetainAutoreleaseRV:
559 case ARCInstKind::LoadWeakRetained:
560 case ARCInstKind::StoreWeak:
561 case ARCInstKind::InitWeak:
562 case ARCInstKind::LoadWeak:
563 case ARCInstKind::MoveWeak:
564 case ARCInstKind::CopyWeak:
565 case ARCInstKind::DestroyWeak:
566 case ARCInstKind::StoreStrong:
567 case ARCInstKind::IntrinsicUser:
568 case ARCInstKind::CallOrUser:
569 case ARCInstKind::Call:
570 case ARCInstKind::User:
571 case ARCInstKind::None:
572 case ARCInstKind::NoopCast:
580 bool llvm::objcarc::IsNoThrow(ARCInstKind Class) {
584 case ARCInstKind::Retain:
585 case ARCInstKind::RetainRV:
586 case ARCInstKind::ClaimRV:
587 case ARCInstKind::Release:
588 case ARCInstKind::Autorelease:
589 case ARCInstKind::AutoreleaseRV:
590 case ARCInstKind::AutoreleasepoolPush:
591 case ARCInstKind::AutoreleasepoolPop:
593 case ARCInstKind::RetainBlock:
594 case ARCInstKind::FusedRetainAutorelease:
595 case ARCInstKind::FusedRetainAutoreleaseRV:
596 case ARCInstKind::LoadWeakRetained:
597 case ARCInstKind::StoreWeak:
598 case ARCInstKind::InitWeak:
599 case ARCInstKind::LoadWeak:
600 case ARCInstKind::MoveWeak:
601 case ARCInstKind::CopyWeak:
602 case ARCInstKind::DestroyWeak:
603 case ARCInstKind::StoreStrong:
604 case ARCInstKind::IntrinsicUser:
605 case ARCInstKind::CallOrUser:
606 case ARCInstKind::Call:
607 case ARCInstKind::User:
608 case ARCInstKind::None:
609 case ARCInstKind::NoopCast:
619 bool llvm::objcarc::CanInterruptRV(ARCInstKind Class) {
621 case ARCInstKind::AutoreleasepoolPop:
622 case ARCInstKind::CallOrUser:
623 case ARCInstKind::Call:
624 case ARCInstKind::Autorelease:
625 case ARCInstKind::AutoreleaseRV:
626 case ARCInstKind::FusedRetainAutorelease:
627 case ARCInstKind::FusedRetainAutoreleaseRV:
629 case ARCInstKind::Retain:
630 case ARCInstKind::RetainRV:
631 case ARCInstKind::ClaimRV:
632 case ARCInstKind::Release:
633 case ARCInstKind::AutoreleasepoolPush:
634 case ARCInstKind::RetainBlock:
635 case ARCInstKind::LoadWeakRetained:
636 case ARCInstKind::StoreWeak:
637 case ARCInstKind::InitWeak:
638 case ARCInstKind::LoadWeak:
639 case ARCInstKind::MoveWeak:
640 case ARCInstKind::CopyWeak:
641 case ARCInstKind::DestroyWeak:
642 case ARCInstKind::StoreStrong:
643 case ARCInstKind::IntrinsicUser:
644 case ARCInstKind::User:
645 case ARCInstKind::None:
646 case ARCInstKind::NoopCast:
652 bool llvm::objcarc::CanDecrementRefCount(ARCInstKind Kind) {
654 case ARCInstKind::Retain:
655 case ARCInstKind::RetainRV:
656 case ARCInstKind::Autorelease:
657 case ARCInstKind::AutoreleaseRV:
658 case ARCInstKind::NoopCast:
659 case ARCInstKind::FusedRetainAutorelease:
660 case ARCInstKind::FusedRetainAutoreleaseRV:
661 case ARCInstKind::IntrinsicUser:
662 case ARCInstKind::User:
663 case ARCInstKind::None:
670 case ARCInstKind::RetainBlock:
671 case ARCInstKind::Release:
672 case ARCInstKind::AutoreleasepoolPush:
673 case ARCInstKind::AutoreleasepoolPop:
674 case ARCInstKind::LoadWeakRetained:
675 case ARCInstKind::StoreWeak:
676 case ARCInstKind::InitWeak:
677 case ARCInstKind::LoadWeak:
678 case ARCInstKind::MoveWeak:
679 case ARCInstKind::CopyWeak:
680 case ARCInstKind::DestroyWeak:
681 case ARCInstKind::StoreStrong:
682 case ARCInstKind::CallOrUser:
683 case ARCInstKind::Call:
684 case ARCInstKind::ClaimRV: