diff options
author | shadchin <shadchin@yandex-team.ru> | 2022-02-10 16:44:39 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:39 +0300 |
commit | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (patch) | |
tree | 64175d5cadab313b3e7039ebaa06c5bc3295e274 /contrib/libs/llvm12/lib/Transforms/ObjCARC/DependencyAnalysis.cpp | |
parent | 2598ef1d0aee359b4b6d5fdd1758916d5907d04f (diff) | |
download | ydb-e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0.tar.gz |
Restoring authorship annotation for <shadchin@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/llvm12/lib/Transforms/ObjCARC/DependencyAnalysis.cpp')
-rw-r--r-- | contrib/libs/llvm12/lib/Transforms/ObjCARC/DependencyAnalysis.cpp | 72 |
1 files changed, 36 insertions, 36 deletions
diff --git a/contrib/libs/llvm12/lib/Transforms/ObjCARC/DependencyAnalysis.cpp b/contrib/libs/llvm12/lib/Transforms/ObjCARC/DependencyAnalysis.cpp index d6f06c7c8d..7f7f2dc89b 100644 --- a/contrib/libs/llvm12/lib/Transforms/ObjCARC/DependencyAnalysis.cpp +++ b/contrib/libs/llvm12/lib/Transforms/ObjCARC/DependencyAnalysis.cpp @@ -22,7 +22,7 @@ #include "DependencyAnalysis.h" #include "ObjCARC.h" #include "ProvenanceAnalysis.h" -#include "llvm/Analysis/AliasAnalysis.h" +#include "llvm/Analysis/AliasAnalysis.h" #include "llvm/IR/CFG.h" using namespace llvm; @@ -53,7 +53,7 @@ bool llvm::objcarc::CanAlterRefCount(const Instruction *Inst, const Value *Ptr, return false; if (AliasAnalysis::onlyAccessesArgPointees(MRB)) { for (const Value *Op : Call->args()) { - if (IsPotentialRetainableObjPtr(Op, *PA.getAA()) && PA.related(Ptr, Op)) + if (IsPotentialRetainableObjPtr(Op, *PA.getAA()) && PA.related(Ptr, Op)) return true; } return false; @@ -96,24 +96,24 @@ bool llvm::objcarc::CanUse(const Instruction *Inst, const Value *Ptr, // For calls, just check the arguments (and not the callee operand). for (auto OI = CS->arg_begin(), OE = CS->arg_end(); OI != OE; ++OI) { const Value *Op = *OI; - if (IsPotentialRetainableObjPtr(Op, *PA.getAA()) && PA.related(Ptr, Op)) + if (IsPotentialRetainableObjPtr(Op, *PA.getAA()) && PA.related(Ptr, Op)) return true; } return false; } else if (const StoreInst *SI = dyn_cast<StoreInst>(Inst)) { // Special-case stores, because we don't care about the stored value, just // the store address. - const Value *Op = GetUnderlyingObjCPtr(SI->getPointerOperand()); + const Value *Op = GetUnderlyingObjCPtr(SI->getPointerOperand()); // If we can't tell what the underlying object was, assume there is a // dependence. - return IsPotentialRetainableObjPtr(Op, *PA.getAA()) && PA.related(Op, Ptr); + return IsPotentialRetainableObjPtr(Op, *PA.getAA()) && PA.related(Op, Ptr); } // Check each operand for a match. for (User::const_op_iterator OI = Inst->op_begin(), OE = Inst->op_end(); OI != OE; ++OI) { const Value *Op = *OI; - if (IsPotentialRetainableObjPtr(Op, *PA.getAA()) && PA.related(Ptr, Op)) + if (IsPotentialRetainableObjPtr(Op, *PA.getAA()) && PA.related(Ptr, Op)) return true; } return false; @@ -209,13 +209,13 @@ llvm::objcarc::Depends(DependenceKind Flavor, Instruction *Inst, /// non-local dependencies on Arg. /// /// TODO: Cache results? -static bool findDependencies(DependenceKind Flavor, const Value *Arg, - BasicBlock *StartBB, Instruction *StartInst, - SmallPtrSetImpl<Instruction *> &DependingInsts, - ProvenanceAnalysis &PA) { +static bool findDependencies(DependenceKind Flavor, const Value *Arg, + BasicBlock *StartBB, Instruction *StartInst, + SmallPtrSetImpl<Instruction *> &DependingInsts, + ProvenanceAnalysis &PA) { BasicBlock::iterator StartPos = StartInst->getIterator(); - SmallPtrSet<const BasicBlock *, 4> Visited; + SmallPtrSet<const BasicBlock *, 4> Visited; SmallVector<std::pair<BasicBlock *, BasicBlock::iterator>, 4> Worklist; Worklist.push_back(std::make_pair(StartBB, StartPos)); do { @@ -228,14 +228,14 @@ static bool findDependencies(DependenceKind Flavor, const Value *Arg, if (LocalStartPos == StartBBBegin) { pred_iterator PI(LocalStartBB), PE(LocalStartBB, false); if (PI == PE) - // Return if we've reached the function entry. - return false; - // Add the predecessors to the worklist. - do { - BasicBlock *PredBB = *PI; - if (Visited.insert(PredBB).second) - Worklist.push_back(std::make_pair(PredBB, PredBB->end())); - } while (++PI != PE); + // Return if we've reached the function entry. + return false; + // Add the predecessors to the worklist. + do { + BasicBlock *PredBB = *PI; + if (Visited.insert(PredBB).second) + Worklist.push_back(std::make_pair(PredBB, PredBB->end())); + } while (++PI != PE); break; } @@ -254,22 +254,22 @@ static bool findDependencies(DependenceKind Flavor, const Value *Arg, if (BB == StartBB) continue; for (const BasicBlock *Succ : successors(BB)) - if (Succ != StartBB && !Visited.count(Succ)) - return false; + if (Succ != StartBB && !Visited.count(Succ)) + return false; } - - return true; + + return true; +} + +llvm::Instruction *llvm::objcarc::findSingleDependency(DependenceKind Flavor, + const Value *Arg, + BasicBlock *StartBB, + Instruction *StartInst, + ProvenanceAnalysis &PA) { + SmallPtrSet<Instruction *, 4> DependingInsts; + + if (!findDependencies(Flavor, Arg, StartBB, StartInst, DependingInsts, PA) || + DependingInsts.size() != 1) + return nullptr; + return *DependingInsts.begin(); } - -llvm::Instruction *llvm::objcarc::findSingleDependency(DependenceKind Flavor, - const Value *Arg, - BasicBlock *StartBB, - Instruction *StartInst, - ProvenanceAnalysis &PA) { - SmallPtrSet<Instruction *, 4> DependingInsts; - - if (!findDependencies(Flavor, Arg, StartBB, StartInst, DependingInsts, PA) || - DependingInsts.size() != 1) - return nullptr; - return *DependingInsts.begin(); -} |