Lines Matching defs:IRP

608 static bool isAssumedReadOnlyOrReadNone(Attributor &A, const IRPosition &IRP,
613 A, &QueryingAA, IRP, DepClassTy::OPTIONAL, IsKnown,
617 A, &QueryingAA, IRP, DepClassTy::OPTIONAL, IsKnown,
621 IRPosition::Kind Kind = IRP.getPositionKind();
624 A.getAAFor<AAMemoryLocation>(QueryingAA, IRP, DepClassTy::NONE);
634 A.getAAFor<AAMemoryBehavior>(QueryingAA, IRP, DepClassTy::NONE);
648 bool AA::isAssumedReadOnly(Attributor &A, const IRPosition &IRP,
650 return isAssumedReadOnlyOrReadNone(A, IRP, QueryingAA,
653 bool AA::isAssumedReadNone(Attributor &A, const IRPosition &IRP,
655 return isAssumedReadOnlyOrReadNone(A, IRP, QueryingAA,
1081 bool Attributor::getAttrsFromAssumes(const IRPosition &IRP,
1084 assert(IRP.getPositionKind() != IRPosition::IRP_INVALID &&
1091 Value &AssociatedValue = IRP.getAssociatedValue();
1103 auto EIt = Explorer->begin(IRP.getCtxI()),
1104 EEnd = Explorer->end(IRP.getCtxI());
1113 Attributor::updateAttrMap(const IRPosition &IRP, ArrayRef<DescTy> AttrDescs,
1119 switch (IRP.getPositionKind()) {
1128 Value *AttrListAnchor = IRP.getAttrListAnchor();
1131 AL = IRP.getAttrList();
1135 LLVMContext &Ctx = IRP.getAnchorValue().getContext();
1136 auto AttrIdx = IRP.getAttrIdx();
1155 bool Attributor::hasAttr(const IRPosition &IRP,
1169 for (const IRPosition &EquivIRP : SubsumingPositionIterator(IRP)) {
1184 if (getAttrsFromAssumes(IRP, AK, Attrs)) {
1190 // Check if we should manifest the implied attribute kind at the IRP.
1192 manifestAttrs(IRP, {Attribute::get(IRP.getAnchorValue().getContext(),
1197 void Attributor::getAttrs(const IRPosition &IRP,
1208 for (const IRPosition &EquivIRP : SubsumingPositionIterator(IRP)) {
1217 getAttrsFromAssumes(IRP, AK, Attrs);
1220 ChangeStatus Attributor::removeAttrs(const IRPosition &IRP,
1229 return updateAttrMap<Attribute::AttrKind>(IRP, AttrKinds, RemoveAttrCB);
1232 ChangeStatus Attributor::removeAttrs(const IRPosition &IRP,
1242 return updateAttrMap<StringRef>(IRP, Attrs, RemoveAttrCB);
1245 ChangeStatus Attributor::manifestAttrs(const IRPosition &IRP,
1248 LLVMContext &Ctx = IRP.getAnchorValue().getContext();
1253 return updateAttrMap<Attribute>(IRP, Attrs, AddAttrCB);
1260 SubsumingPositionIterator::SubsumingPositionIterator(const IRPosition &IRP) {
1261 IRPositions.emplace_back(IRP);
1270 const auto *CB = dyn_cast<CallBase>(&IRP.getAnchorValue());
1271 switch (IRP.getPositionKind()) {
1278 IRPositions.emplace_back(IRPosition::function(*IRP.getAnchorScope()));
1316 if (Argument *Arg = IRP.getAssociatedArgument())
1321 IRPositions.emplace_back(IRPosition::value(IRP.getAssociatedValue()));
1396 Attributor::getAssumedConstant(const IRPosition &IRP,
1402 for (auto &CB : SimplificationCallbacks.lookup(IRP)) {
1403 std::optional<Value *> SimplifiedV = CB(IRP, &AA, UsedAssumedInformation);
1410 if (auto *C = dyn_cast<Constant>(&IRP.getAssociatedValue()))
1413 if (getAssumedSimplifiedValues(IRP, &AA, Values,
1419 AAPotentialValues::getSingleValue(*this, AA, IRP, Values)))
1426 const IRPosition &IRP, const AbstractAttribute *AA,
1431 for (auto &CB : SimplificationCallbacks.lookup(IRP))
1432 return CB(IRP, AA, UsedAssumedInformation);
1435 if (!getAssumedSimplifiedValues(IRP, AA, Values, S, UsedAssumedInformation))
1436 return &IRP.getAssociatedValue();
1440 if (Value *V = AAPotentialValues::getSingleValue(*this, *AA, IRP, Values))
1442 if (IRP.getPositionKind() == IRPosition::IRP_RETURNED ||
1443 IRP.getPositionKind() == IRPosition::IRP_CALL_SITE_RETURNED)
1445 return &IRP.getAssociatedValue();
1456 const IRPosition &IRP = Worklist.pop_back_val();
1462 const auto &SimplificationCBs = SimplificationCallbacks.lookup(IRP);
1464 std::optional<Value *> CBResult = CB(IRP, AA, UsedAssumedInformation);
1471 AA::isValidInScope(*V, IRP.getAnchorScope()))
1480 getOrCreateAAFor<AAPotentialValues>(IRP, AA, DepClassTy::OPTIONAL);
1483 } else if (IRP.getPositionKind() != IRPosition::IRP_RETURNED) {
1484 Values.push_back({IRP.getAssociatedValue(), IRP.getCtxI()});
1545 const IRPosition &IRP = AA.getIRPosition();
1546 if (!Functions.count(IRP.getAnchorScope()))
1548 return isAssumedDead(IRP, &AA, FnLivenessAA, UsedAssumedInformation,
1584 const IRPosition IRP = IRPosition::inst(*SI);
1586 getOrCreateAAFor<AAIsDead>(IRP, QueryingAA, DepClassTy::NONE);
1637 const IRPosition IRP = IRPosition::inst(I, CBCtx);
1639 getOrCreateAAFor<AAIsDead>(IRP, QueryingAA, DepClassTy::NONE);
1664 bool Attributor::isAssumedDead(const IRPosition &IRP,
1673 if (IRP.getPositionKind() == IRPosition::IRP_FLOAT &&
1674 isa<Constant>(IRP.getAssociatedValue())) {
1678 Instruction *CtxI = IRP.getCtxI();
1688 // If we haven't succeeded we query the specific liveness info for the IRP.
1690 if (IRP.getPositionKind() == IRPosition::IRP_CALL_SITE)
1692 IRPosition::callsite_returned(cast<CallBase>(IRP.getAssociatedValue())),
1695 IsDeadAA = getOrCreateAAFor<AAIsDead>(IRP, QueryingAA, DepClassTy::NONE);
1771 const IRPosition &IRP = QueryingAA.getIRPosition();
1794 const Function *ScopeFn = IRP.getAnchorScope();
1866 const IRPosition &IRP = QueryingAA.getIRPosition();
1867 const Function *AssociatedFunction = IRP.getAssociatedFunction();
1869 LLVM_DEBUG(dbgs() << "[Attributor] No function associated with " << IRP
1980 bool Attributor::shouldPropagateCallBaseContext(const IRPosition &IRP) {
1992 const IRPosition &IRP = QueryingAA.getIRPosition();
1993 const Function *AssociatedFunction = IRP.getAssociatedFunction();
2071 const IRPosition &IRP = QueryingAA.getIRPosition();
2072 const Function *AssociatedFunction = IRP.getAssociatedFunction();
2333 const IRPosition &IRP =
2337 IRP.setAttrList(AL);
3333 void Attributor::checkAndQueryIRAttr(const IRPosition &IRP, AttributeSet Attrs,
3338 if (!AA::hasAssumedIRAttr<AK>(*this, nullptr, IRP, DepClassTy::NONE,
3340 getOrCreateAAFor<AAType>(IRP);