Lines Matching defs:RetainRV
505 bool OptimizeRetainRVCall(Function &F, Instruction *RetainRV);
515 /// Try to optimize an AutoreleaseRV with a RetainRV or UnsafeClaimRV. If the
608 ObjCARCOpt::OptimizeRetainRVCall(Function &F, Instruction *RetainRV) {
610 const Value *Arg = GetArgRCIdentityRoot(RetainRV);
612 if (Call->getParent() == RetainRV->getParent()) {
617 if (&*I == RetainRV)
620 BasicBlock *RetainRVParent = RetainRV->getParent();
625 if (&*I == RetainRV)
631 assert(!BundledInsts->contains(RetainRV) &&
641 << *RetainRV << "\n");
644 cast<CallInst>(RetainRV)->setCalledFunction(NewDecl);
646 LLVM_DEBUG(dbgs() << "New = " << *RetainRV << "\n");
685 if (Class == ARCInstKind::RetainRV) {
686 // AutoreleaseRV and RetainRV cancel out. Delete the RetainRV.
692 // UnsafeClaimRV is a frontend peephole for RetainRV + Release. Since the
693 // AutoreleaseRV and RetainRV cancel out, replace UnsafeClaimRV with Release.
733 if (isa<ReturnInst>(U) || GetBasicARCInstKind(U) == ARCInstKind::RetainRV)
767 // with RetainRV and UnsafeClaimRV.
793 // Given the frontend rules for emitting AutoreleaseRV, RetainRV, and
837 case ARCInstKind::RetainRV:
972 case ARCInstKind::RetainRV:
1123 case ARCInstKind::RetainRV:
1349 case ARCInstKind::RetainRV: {
1353 // Don't do retain+release tracking for ARCInstKind::RetainRV, because
1355 if (Class != ARCInstKind::RetainRV) {
1526 case ARCInstKind::RetainRV: {
2368 GetBasicARCInstKind(Retain) == ARCInstKind::RetainRV &&
2467 (1 << unsigned(ARCInstKind::RetainRV)) |