Lines Matching refs:IRP

609 static bool isAssumedReadOnlyOrReadNone(Attributor &A, const IRPosition &IRP,  in isAssumedReadOnlyOrReadNone()  argument
614 A, &QueryingAA, IRP, DepClassTy::OPTIONAL, IsKnown, in isAssumedReadOnlyOrReadNone()
618 A, &QueryingAA, IRP, DepClassTy::OPTIONAL, IsKnown, in isAssumedReadOnlyOrReadNone()
622 IRPosition::Kind Kind = IRP.getPositionKind(); in isAssumedReadOnlyOrReadNone()
625 A.getAAFor<AAMemoryLocation>(QueryingAA, IRP, DepClassTy::NONE); in isAssumedReadOnlyOrReadNone()
635 A.getAAFor<AAMemoryBehavior>(QueryingAA, IRP, DepClassTy::NONE); in isAssumedReadOnlyOrReadNone()
649 bool AA::isAssumedReadOnly(Attributor &A, const IRPosition &IRP, in isAssumedReadOnly() argument
651 return isAssumedReadOnlyOrReadNone(A, IRP, QueryingAA, in isAssumedReadOnly()
654 bool AA::isAssumedReadNone(Attributor &A, const IRPosition &IRP, in isAssumedReadNone() argument
656 return isAssumedReadOnlyOrReadNone(A, IRP, QueryingAA, in isAssumedReadNone()
1082 bool Attributor::getAttrsFromAssumes(const IRPosition &IRP, in getAttrsFromAssumes() argument
1085 assert(IRP.getPositionKind() != IRPosition::IRP_INVALID && in getAttrsFromAssumes()
1092 Value &AssociatedValue = IRP.getAssociatedValue(); in getAttrsFromAssumes()
1104 auto EIt = Explorer->begin(IRP.getCtxI()), in getAttrsFromAssumes()
1105 EEnd = Explorer->end(IRP.getCtxI()); in getAttrsFromAssumes()
1114 Attributor::updateAttrMap(const IRPosition &IRP, ArrayRef<DescTy> AttrDescs, in updateAttrMap() argument
1120 switch (IRP.getPositionKind()) { in updateAttrMap()
1129 Value *AttrListAnchor = IRP.getAttrListAnchor(); in updateAttrMap()
1132 AL = IRP.getAttrList(); in updateAttrMap()
1136 LLVMContext &Ctx = IRP.getAnchorValue().getContext(); in updateAttrMap()
1137 auto AttrIdx = IRP.getAttrIdx(); in updateAttrMap()
1156 bool Attributor::hasAttr(const IRPosition &IRP, in hasAttr() argument
1170 for (const IRPosition &EquivIRP : SubsumingPositionIterator(IRP)) { in hasAttr()
1185 if (getAttrsFromAssumes(IRP, AK, Attrs)) { in hasAttr()
1193 manifestAttrs(IRP, {Attribute::get(IRP.getAnchorValue().getContext(), in hasAttr()
1198 void Attributor::getAttrs(const IRPosition &IRP, in getAttrs() argument
1209 for (const IRPosition &EquivIRP : SubsumingPositionIterator(IRP)) { in getAttrs()
1218 getAttrsFromAssumes(IRP, AK, Attrs); in getAttrs()
1221 ChangeStatus Attributor::removeAttrs(const IRPosition &IRP, in removeAttrs() argument
1230 return updateAttrMap<Attribute::AttrKind>(IRP, AttrKinds, RemoveAttrCB); in removeAttrs()
1233 ChangeStatus Attributor::removeAttrs(const IRPosition &IRP, in removeAttrs() argument
1243 return updateAttrMap<StringRef>(IRP, Attrs, RemoveAttrCB); in removeAttrs()
1246 ChangeStatus Attributor::manifestAttrs(const IRPosition &IRP, in manifestAttrs() argument
1249 LLVMContext &Ctx = IRP.getAnchorValue().getContext(); in manifestAttrs()
1254 return updateAttrMap<Attribute>(IRP, Attrs, AddAttrCB); in manifestAttrs()
1261 SubsumingPositionIterator::SubsumingPositionIterator(const IRPosition &IRP) { in SubsumingPositionIterator() argument
1262 IRPositions.emplace_back(IRP); in SubsumingPositionIterator()
1271 const auto *CB = dyn_cast<CallBase>(&IRP.getAnchorValue()); in SubsumingPositionIterator()
1272 switch (IRP.getPositionKind()) { in SubsumingPositionIterator()
1279 IRPositions.emplace_back(IRPosition::function(*IRP.getAnchorScope())); in SubsumingPositionIterator()
1317 if (Argument *Arg = IRP.getAssociatedArgument()) in SubsumingPositionIterator()
1322 IRPositions.emplace_back(IRPosition::value(IRP.getAssociatedValue())); in SubsumingPositionIterator()
1397 Attributor::getAssumedConstant(const IRPosition &IRP, in getAssumedConstant() argument
1403 for (auto &CB : SimplificationCallbacks.lookup(IRP)) { in getAssumedConstant()
1404 std::optional<Value *> SimplifiedV = CB(IRP, &AA, UsedAssumedInformation); in getAssumedConstant()
1411 if (auto *C = dyn_cast<Constant>(&IRP.getAssociatedValue())) in getAssumedConstant()
1414 if (getAssumedSimplifiedValues(IRP, &AA, Values, in getAssumedConstant()
1420 AAPotentialValues::getSingleValue(*this, AA, IRP, Values))) in getAssumedConstant()
1427 const IRPosition &IRP, const AbstractAttribute *AA, in getAssumedSimplified() argument
1432 for (auto &CB : SimplificationCallbacks.lookup(IRP)) in getAssumedSimplified()
1433 return CB(IRP, AA, UsedAssumedInformation); in getAssumedSimplified()
1436 if (!getAssumedSimplifiedValues(IRP, AA, Values, S, UsedAssumedInformation)) in getAssumedSimplified()
1437 return &IRP.getAssociatedValue(); in getAssumedSimplified()
1441 if (Value *V = AAPotentialValues::getSingleValue(*this, *AA, IRP, Values)) in getAssumedSimplified()
1443 if (IRP.getPositionKind() == IRPosition::IRP_RETURNED || in getAssumedSimplified()
1444 IRP.getPositionKind() == IRPosition::IRP_CALL_SITE_RETURNED) in getAssumedSimplified()
1446 return &IRP.getAssociatedValue(); in getAssumedSimplified()
1457 const IRPosition &IRP = Worklist.pop_back_val(); in getAssumedSimplifiedValues() local
1463 const auto &SimplificationCBs = SimplificationCallbacks.lookup(IRP); in getAssumedSimplifiedValues()
1465 std::optional<Value *> CBResult = CB(IRP, AA, UsedAssumedInformation); in getAssumedSimplifiedValues()
1472 AA::isValidInScope(*V, IRP.getAnchorScope())) in getAssumedSimplifiedValues()
1481 getOrCreateAAFor<AAPotentialValues>(IRP, AA, DepClassTy::OPTIONAL); in getAssumedSimplifiedValues()
1484 } else if (IRP.getPositionKind() != IRPosition::IRP_RETURNED) { in getAssumedSimplifiedValues()
1485 Values.push_back({IRP.getAssociatedValue(), IRP.getCtxI()}); in getAssumedSimplifiedValues()
1546 const IRPosition &IRP = AA.getIRPosition(); in isAssumedDead() local
1547 if (!Functions.count(IRP.getAnchorScope())) in isAssumedDead()
1549 return isAssumedDead(IRP, &AA, FnLivenessAA, UsedAssumedInformation, in isAssumedDead()
1585 const IRPosition IRP = IRPosition::inst(*SI); in isAssumedDead() local
1587 getOrCreateAAFor<AAIsDead>(IRP, QueryingAA, DepClassTy::NONE); in isAssumedDead()
1638 const IRPosition IRP = IRPosition::inst(I, CBCtx); in isAssumedDead() local
1640 getOrCreateAAFor<AAIsDead>(IRP, QueryingAA, DepClassTy::NONE); in isAssumedDead()
1665 bool Attributor::isAssumedDead(const IRPosition &IRP, in isAssumedDead() argument
1674 if (IRP.getPositionKind() == IRPosition::IRP_FLOAT && in isAssumedDead()
1675 isa<Constant>(IRP.getAssociatedValue())) { in isAssumedDead()
1679 Instruction *CtxI = IRP.getCtxI(); in isAssumedDead()
1691 if (IRP.getPositionKind() == IRPosition::IRP_CALL_SITE) in isAssumedDead()
1693 IRPosition::callsite_returned(cast<CallBase>(IRP.getAssociatedValue())), in isAssumedDead()
1696 IsDeadAA = getOrCreateAAFor<AAIsDead>(IRP, QueryingAA, DepClassTy::NONE); in isAssumedDead()
1768 const IRPosition &IRP = QueryingAA.getIRPosition(); in checkForAllUses() local
1791 const Function *ScopeFn = IRP.getAnchorScope(); in checkForAllUses()
1879 const IRPosition &IRP = QueryingAA.getIRPosition(); in checkForAllCallSites() local
1880 const Function *AssociatedFunction = IRP.getAssociatedFunction(); in checkForAllCallSites()
1882 LLVM_DEBUG(dbgs() << "[Attributor] No function associated with " << IRP in checkForAllCallSites()
1993 bool Attributor::shouldPropagateCallBaseContext(const IRPosition &IRP) { in shouldPropagateCallBaseContext() argument
2005 const IRPosition &IRP = QueryingAA.getIRPosition(); in checkForAllReturnedValues() local
2006 const Function *AssociatedFunction = IRP.getAssociatedFunction(); in checkForAllReturnedValues()
2084 const IRPosition &IRP = QueryingAA.getIRPosition(); in checkForAllInstructions() local
2085 const Function *AssociatedFunction = IRP.getAssociatedFunction(); in checkForAllInstructions()
2346 const IRPosition &IRP = in manifestAttributes() local
2350 IRP.setAttrList(AL); in manifestAttributes()
3337 void Attributor::checkAndQueryIRAttr(const IRPosition &IRP, in checkAndQueryIRAttr() argument
3342 if (!AA::hasAssumedIRAttr<AK>(*this, nullptr, IRP, DepClassTy::NONE, in checkAndQueryIRAttr()
3344 getOrCreateAAFor<AAType>(IRP); in checkAndQueryIRAttr()