Lines Matching defs:Retain
83 bool optimizeRetainCall(Function &F, Instruction *Retain);
113 bool ObjCARCContract::optimizeRetainCall(Function &F, Instruction *Retain) {
114 ImmutableCallSite CS(GetArgRCIdentityRoot(Retain));
118 if (Call->getParent() != Retain->getParent())
125 if (&*I != Retain)
134 "return value.\nOld: "<< *Retain << "\n");
139 cast<CallInst>(Retain)->setCalledFunction(Decl);
141 DEBUG(dbgs() << "New: " << *Retain << "\n");
154 CallInst *Retain = nullptr;
170 Retain = dyn_cast_or_null<CallInst>(*DependingInstructions.begin());
173 if (!Retain || GetBasicARCInstKind(Retain) != ARCInstKind::Retain ||
174 GetArgRCIdentityRoot(Retain) != Arg)
182 " Retain: " << *Retain << "\n");
187 Retain->setCalledFunction(Decl);
189 DEBUG(dbgs() << " New RetainAutorelease: " << *Retain << "\n");
288 while (I != Begin && GetBasicARCInstKind(&*I) != ARCInstKind::Retain) {
298 Instruction *Retain = &*I;
299 if (GetBasicARCInstKind(Retain) != ARCInstKind::Retain)
301 if (GetArgRCIdentityRoot(Retain) != New)
303 return Retain;
358 Instruction *Retain =
362 if (!Retain)
373 << " Retain: " << *Retain << "\n"
400 EraseInstruction(Retain);
420 case ARCInstKind::Retain: