Lines Matching defs:IRP

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