Home | History | Annotate | Download | only in ObjCARC

Lines Matching refs:Value

54 /// as it finds a value with multiple uses.
55 static const Value *FindSingleUseIdentifiedObject(const Value *Arg) {
71 // trivial uses, we can still consider this to be a single-use value.
86 static inline bool AreAnyUnderlyingObjectsAnAlloca(const Value *V,
88 SmallPtrSet<const Value *, 4> Visited;
89 SmallVector<const Value *, 4> Worklist;
92 const Value *P = Worklist.pop_back_val();
108 for (Value *IncValue : PN->incoming_values())
164 STATISTIC(NumRets, "Number of return value forwarding "
191 BlotMapVector<const Value *, TopDownPtrState> PerPtrTopDown;
195 BlotMapVector<const Value *, BottomUpPtrState> PerPtrBottomUp;
254 TopDownPtrState &getPtrTopDownState(const Value *Arg) {
261 BottomUpPtrState &getPtrBottomUpState(const Value *Arg) {
267 bottom_up_ptr_iterator findPtrBottomUpState(const Value *Arg) {
480 DenseSet<const Value *> MultiOwnersSet;
498 BlotMapVector<Value *, RRInfo> &Retains,
502 BlotMapVector<Value *, RRInfo> &Retains);
504 DenseMap<Value *, RRInfo> &Releases,
508 DenseMap<Value *, RRInfo> &Releases);
510 BlotMapVector<Value *, RRInfo> &Retains,
511 DenseMap<Value *, RRInfo> &Releases);
513 void MoveCalls(Value *Arg, RRInfo &RetainsToMove, RRInfo &ReleasesToMove,
514 BlotMapVector<Value *, RRInfo> &Retains,
515 DenseMap<Value *, RRInfo> &Releases,
520 BlotMapVector<Value *, RRInfo> &Retains,
521 DenseMap<Value *, RRInfo> &Releases, Module *M,
526 Value *Arg, bool KnownSafe,
530 BlotMapVector<Value *, RRInfo> &Retains,
531 DenseMap<Value *, RRInfo> &Releases, Module *M);
575 /// not a return value. Or, if it can be paired with an
580 const Value *Arg = GetArgRCIdentityRoot(RetainRV);
629 "objc_retain since the operand is not a return value.\n"
641 /// used as a return value.
645 // Check for a return of the pointer value.
646 const Value *Ptr = GetArgRCIdentityRoot(AutoreleaseRV);
647 SmallVector<const Value *, 2> Users;
664 "value.\n"
723 llvm::Value *NewValue = UndefValue::get(CI->getType());
743 llvm::Value *NewValue = UndefValue::get(CI->getType());
765 const Value *Arg = Call->getArgOperand(0);
821 const Value *Arg = GetArgRCIdentityRoot(Inst);
842 SmallVector<std::pair<Instruction *, const Value *>, 4> Worklist;
845 std::pair<Instruction *, const Value *> Pair = Worklist.pop_back_val();
857 Value *Incoming =
907 // Clone the call into each predecessor that has a non-null value.
911 Value *Incoming =
915 Value *Op = PN->getIncomingValue(i);
1027 const Value *Arg = I->first;
1101 Instruction *Inst, BasicBlock *BB, BlotMapVector<Value *, RRInfo> &Retains,
1105 const Value *Arg = nullptr;
1178 const Value *Ptr = MI->first;
1194 BlotMapVector<Value *, RRInfo> &Retains) {
1252 DenseMap<Value *, RRInfo> &Releases,
1256 const Value *Arg = nullptr;
1307 const Value *Ptr = MI->first;
1323 DenseMap<Value *, RRInfo> &Releases) {
1446 BlotMapVector<Value *, RRInfo> &Retains,
1447 DenseMap<Value *, RRInfo> &Releases) {
1478 void ObjCARCOpt::MoveCalls(Value *Arg, RRInfo &RetainsToMove,
1480 BlotMapVector<Value *, RRInfo> &Retains,
1481 DenseMap<Value *, RRInfo> &Releases,
1491 Value *MyArg = ArgTy == ParamTy ? Arg :
1502 Value *MyArg = ArgTy == ParamTy ? Arg :
1533 BlotMapVector<Value *, RRInfo> &Retains,
1534 DenseMap<Value *, RRInfo> &Releases, Module *M,
1538 RRInfo &ReleasesToMove, Value *Arg, bool KnownSafe,
1739 BlotMapVector<Value *, RRInfo> &Retains,
1740 DenseMap<Value *, RRInfo> &Releases, Module *M) {
1751 for (BlotMapVector<Value *, RRInfo>::const_iterator I = Retains.begin(),
1754 Value *V = I->first;
1761 Value *Arg = GetArgRCIdentityRoot(Retain);
1830 // TODO: For now, just look for an earlier available version of this value
1844 // If this is loading from the same pointer, replace this load's value
1848 Value *Arg = Call->getArgOperand(0);
1849 Value *EarlierArg = EarlierCall->getArgOperand(0);
1874 // replace this load's value with the stored value.
1877 Value *Arg = Call->getArgOperand(0);
1878 Value *EarlierArg = EarlierCall->getArgOperand(0);
1902 // TOOD: Grab the copied value.
1928 Value *Arg = Call->getArgOperand(0);
1951 // No return value.
1968 // analysis. These use Value* as the key instead of Instruction* so that the
1971 DenseMap<Value *, RRInfo> Releases;
1972 BlotMapVector<Value *, RRInfo> Retains;
1996 HasSafePathToPredecessorCall(const Value *Arg, Instruction *Retain,
2007 // Check that the pointer is the return value of the call.
2023 FindPredecessorRetainWithSafePath(const Value *Arg, BasicBlock *BB,
2048 FindPredecessorAutoreleaseWithSafePath(const Value *Arg, BasicBlock *BB,
2094 const Value *Arg = GetRCIdentityRoot(Ret->getOperand(0));
2170 // they are not, because they return their argument value. And objc_release