Lines Matching defs:IRP
416 AAReturnedFromReturnedValues(const IRPosition &IRP, Attributor &A)
417 : BaseType(IRP, A) {}
537 AAArgumentFromCallSiteArguments(const IRPosition &IRP, Attributor &A)
538 : BaseType(IRP, A) {}
567 AACalleeToCallSite(const IRPosition &IRP, Attributor &A) : BaseType(IRP, A) {}
1026 AAPointerInfoImpl(const IRPosition &IRP, Attributor &A) : BaseTy(IRP) {}
1432 void trackPointerInfoStatistics(const IRPosition &IRP) const {}
1461 AAPointerInfoFloating(const IRPosition &IRP, Attributor &A)
1462 : AAPointerInfoImpl(IRP, A) {}
1978 AAPointerInfoReturned(const IRPosition &IRP, Attributor &A)
1979 : AAPointerInfoImpl(IRP, A) {}
1993 AAPointerInfoArgument(const IRPosition &IRP, Attributor &A)
1994 : AAPointerInfoFloating(IRP, A) {}
2003 AAPointerInfoCallSiteArgument(const IRPosition &IRP, Attributor &A)
2004 : AAPointerInfoFloating(IRP, A) {}
2075 AAPointerInfoCallSiteReturned(const IRPosition &IRP, Attributor &A)
2076 : AAPointerInfoFloating(IRP, A) {}
2089 AANoUnwindImpl(const IRPosition &IRP, Attributor &A) : AANoUnwind(IRP, A) {}
2133 AANoUnwindFunction(const IRPosition &IRP, Attributor &A)
2134 : AANoUnwindImpl(IRP, A) {}
2143 AANoUnwindCallSite(const IRPosition &IRP, Attributor &A)
2144 : AACalleeToCallSite<AANoUnwind, AANoUnwindImpl>(IRP, A) {}
2214 AANoSyncImpl(const IRPosition &IRP, Attributor &A) : AANoSync(IRP, A) {}
2266 AANoSyncFunction(const IRPosition &IRP, Attributor &A)
2267 : AANoSyncImpl(IRP, A) {}
2275 AANoSyncCallSite(const IRPosition &IRP, Attributor &A)
2276 : AACalleeToCallSite<AANoSync, AANoSyncImpl>(IRP, A) {}
2287 AANoFreeImpl(const IRPosition &IRP, Attributor &A) : AANoFree(IRP, A) {}
2320 AANoFreeFunction(const IRPosition &IRP, Attributor &A)
2321 : AANoFreeImpl(IRP, A) {}
2329 AANoFreeCallSite(const IRPosition &IRP, Attributor &A)
2330 : AACalleeToCallSite<AANoFree, AANoFreeImpl>(IRP, A) {}
2338 AANoFreeFloating(const IRPosition &IRP, Attributor &A)
2339 : AANoFreeImpl(IRP, A) {}
2346 const IRPosition &IRP = getIRPosition();
2350 IRPosition::function_scope(IRP),
2393 AANoFreeArgument(const IRPosition &IRP, Attributor &A)
2394 : AANoFreeFloating(IRP, A) {}
2402 AANoFreeCallSiteArgument(const IRPosition &IRP, Attributor &A)
2403 : AANoFreeFloating(IRP, A) {}
2428 AANoFreeReturned(const IRPosition &IRP, Attributor &A)
2429 : AANoFreeFloating(IRP, A) {
2449 AANoFreeCallSiteReturned(const IRPosition &IRP, Attributor &A)
2450 : AANoFreeFloating(IRP, A) {}
2462 bool AANonNull::isImpliedByIR(Attributor &A, const IRPosition &IRP,
2467 if (!NullPointerIsDefined(IRP.getAnchorScope(),
2468 IRP.getAssociatedType()->getPointerAddressSpace()))
2470 if (A.hasAttr(IRP, AttrKinds, IgnoreSubsumingPositions, Attribute::NonNull))
2476 if (const Function *Fn = IRP.getAnchorScope()) {
2484 if (IRP.getPositionKind() != IRP_RETURNED) {
2485 Worklist.push_back({IRP.getAssociatedValue(), IRP.getCtxI()});
2493 IRP.getAssociatedFunction(), nullptr, {Instruction::Ret},
2505 A.manifestAttrs(IRP, {Attribute::get(IRP.getAnchorValue().getContext(),
2555 IRPosition IRP = IRPosition::callsite_argument(*CB, ArgNo);
2559 AA::hasAssumedIRAttr<Attribute::NonNull>(A, &QueryingAA, IRP,
2563 A.getAAFor<AADereferenceable>(QueryingAA, IRP, DepClassTy::NONE);
2594 AANonNullImpl(const IRPosition &IRP, Attributor &A) : AANonNull(IRP, A) {}
2627 AANonNullFloating(const IRPosition &IRP, Attributor &A)
2628 : AANonNullImpl(IRP, A) {}
2632 auto CheckIRP = [&](const IRPosition &IRP) {
2635 A, *this, IRP, DepClassTy::OPTIONAL, IsKnownNonNull);
2668 // different AA, but only if the IRP changes. Effectively when we
2692 AANonNullReturned(const IRPosition &IRP, Attributor &A)
2694 false, Attribute::NonNull, false>(IRP, A) {
2709 AANonNullArgument(const IRPosition &IRP, Attributor &A)
2710 : AAArgumentFromCallSiteArguments<AANonNull, AANonNullImpl>(IRP, A) {}
2717 AANonNullCallSiteArgument(const IRPosition &IRP, Attributor &A)
2718 : AANonNullFloating(IRP, A) {}
2727 AANonNullCallSiteReturned(const IRPosition &IRP, Attributor &A)
2728 : AACalleeToCallSite<AANonNull, AANonNullImpl>(IRP, A) {}
2738 AAMustProgressImpl(const IRPosition &IRP, Attributor &A)
2739 : AAMustProgress(IRP, A) {}
2756 AAMustProgressFunction(const IRPosition &IRP, Attributor &A)
2757 : AAMustProgressImpl(IRP, A) {}
2794 AAMustProgressCallSite(const IRPosition &IRP, Attributor &A)
2795 : AAMustProgressImpl(IRP, A) {}
2822 AANoRecurseImpl(const IRPosition &IRP, Attributor &A) : AANoRecurse(IRP, A) {}
2839 AANoRecurseFunction(const IRPosition &IRP, Attributor &A)
2840 : AANoRecurseImpl(IRP, A) {}
2882 AANoRecurseCallSite(const IRPosition &IRP, Attributor &A)
2883 : AACalleeToCallSite<AANoRecurse, AANoRecurseImpl>(IRP, A) {}
2894 AANonConvergentImpl(const IRPosition &IRP, Attributor &A)
2895 : AANonConvergent(IRP, A) {}
2904 AANonConvergentFunction(const IRPosition &IRP, Attributor &A)
2905 : AANonConvergentImpl(IRP, A) {}
2950 AAUndefinedBehaviorImpl(const IRPosition &IRP, Attributor &A)
2951 : AAUndefinedBehavior(IRP, A) {}
3269 AAUndefinedBehaviorFunction(const IRPosition &IRP, Attributor &A)
3270 : AAUndefinedBehaviorImpl(IRP, A) {}
3316 AAWillReturnImpl(const IRPosition &IRP, Attributor &A)
3317 : AAWillReturn(IRP, A) {}
3373 AAWillReturnFunction(const IRPosition &IRP, Attributor &A)
3374 : AAWillReturnImpl(IRP, A) {}
3393 AAWillReturnCallSite(const IRPosition &IRP, Attributor &A)
3394 : AACalleeToCallSite<AAWillReturn, AAWillReturnImpl>(IRP, A) {}
3509 CachedReachabilityAA(const IRPosition &IRP, Attributor &A) : BaseTy(IRP, A) {}
3612 AAIntraFnReachabilityFunction(const IRPosition &IRP, Attributor &A)
3613 : Base(IRP, A) {
3615 *IRP.getAssociatedFunction());
3765 bool AANoAlias::isImpliedByIR(Attributor &A, const IRPosition &IRP,
3770 Value *Val = &IRP.getAssociatedValue();
3771 if (IRP.getPositionKind() != IRP_CALL_SITE_ARGUMENT) {
3782 !NullPointerIsDefined(IRP.getAnchorScope(),
3786 if (A.hasAttr(IRP, {Attribute::ByVal, Attribute::NoAlias},
3795 AANoAliasImpl(const IRPosition &IRP, Attributor &A) : AANoAlias(IRP, A) {
3807 AANoAliasFloating(const IRPosition &IRP, Attributor &A)
3808 : AANoAliasImpl(IRP, A) {}
3826 AANoAliasArgument(const IRPosition &IRP, Attributor &A) : Base(IRP, A) {}
3869 AANoAliasCallSiteArgument(const IRPosition &IRP, Attributor &A)
3870 : AANoAliasImpl(IRP, A) {}
3877 // We do not need to worry about aliasing with the underlying IRP.
4051 AANoAliasReturned(const IRPosition &IRP, Attributor &A)
4052 : AANoAliasImpl(IRP, A) {}
4095 AANoAliasCallSiteReturned(const IRPosition &IRP, Attributor &A)
4096 : AACalleeToCallSite<AANoAlias, AANoAliasImpl>(IRP, A) {}
4107 AAIsDeadValueImpl(const IRPosition &IRP, Attributor &A) : AAIsDead(IRP, A) {}
4186 AAIsDeadFloating(const IRPosition &IRP, Attributor &A)
4187 : AAIsDeadValueImpl(IRP, A) {}
4343 AAIsDeadArgument(const IRPosition &IRP, Attributor &A)
4344 : AAIsDeadFloating(IRP, A) {}
4364 AAIsDeadCallSiteArgument(const IRPosition &IRP, Attributor &A)
4365 : AAIsDeadValueImpl(IRP, A) {}
4407 AAIsDeadCallSiteReturned(const IRPosition &IRP, Attributor &A)
4408 : AAIsDeadFloating(IRP, A) {}
4459 AAIsDeadReturned(const IRPosition &IRP, Attributor &A)
4460 : AAIsDeadValueImpl(IRP, A) {}
4504 AAIsDeadFunction(const IRPosition &IRP, Attributor &A) : AAIsDead(IRP, A) {}
4916 AAIsDeadCallSite(const IRPosition &IRP, Attributor &A)
4917 : AAIsDeadFunction(IRP, A) {}
4943 AADereferenceableImpl(const IRPosition &IRP, Attributor &A)
4944 : AADereferenceable(IRP, A) {}
5057 AADereferenceableFloating(const IRPosition &IRP, Attributor &A)
5058 : AADereferenceableImpl(IRP, A) {}
5148 AADereferenceableReturned(const IRPosition &IRP, Attributor &A)
5149 : Base(IRP, A) {}
5163 AADereferenceableArgument(const IRPosition &IRP, Attributor &A)
5164 : Base(IRP, A) {}
5174 AADereferenceableCallSiteArgument(const IRPosition &IRP, Attributor &A)
5175 : AADereferenceableFloating(IRP, A) {}
5187 AADereferenceableCallSiteReturned(const IRPosition &IRP, Attributor &A)
5188 : Base(IRP, A) {}
5222 IRPosition IRP = IRPosition::callsite_argument(*CB, ArgNo);
5225 auto *AlignAA = A.getAAFor<AAAlign>(QueryingAA, IRP, DepClassTy::NONE);
5267 AAAlignImpl(const IRPosition &IRP, Attributor &A) : AAAlign(IRP, A) {}
5351 AAAlignFloating(const IRPosition &IRP, Attributor &A) : AAAlignImpl(IRP, A) {}
5421 AAAlignReturned(const IRPosition &IRP, Attributor &A) : Base(IRP, A) {}
5431 AAAlignArgument(const IRPosition &IRP, Attributor &A) : Base(IRP, A) {}
5448 AAAlignCallSiteArgument(const IRPosition &IRP, Attributor &A)
5449 : AAAlignFloating(IRP, A) {}
5489 AAAlignCallSiteReturned(const IRPosition &IRP, Attributor &A)
5490 : Base(IRP, A) {}
5500 AANoReturnImpl(const IRPosition &IRP, Attributor &A) : AANoReturn(IRP, A) {}
5528 AANoReturnFunction(const IRPosition &IRP, Attributor &A)
5529 : AANoReturnImpl(IRP, A) {}
5538 AANoReturnCallSite(const IRPosition &IRP, Attributor &A)
5539 : AACalleeToCallSite<AANoReturn, AANoReturnImpl>(IRP, A) {}
5551 AAInstanceInfoImpl(const IRPosition &IRP, Attributor &A)
5552 : AAInstanceInfo(IRP, A) {}
5668 AAInstanceInfoFloating(const IRPosition &IRP, Attributor &A)
5669 : AAInstanceInfoImpl(IRP, A) {}
5674 AAInstanceInfoArgument(const IRPosition &IRP, Attributor &A)
5675 : AAInstanceInfoFloating(IRP, A) {}
5680 AAInstanceInfoCallSiteArgument(const IRPosition &IRP, Attributor &A)
5681 : AAInstanceInfoImpl(IRP, A) {}
5703 AAInstanceInfoReturned(const IRPosition &IRP, Attributor &A)
5704 : AAInstanceInfoImpl(IRP, A) {
5721 AAInstanceInfoCallSiteReturned(const IRPosition &IRP, Attributor &A)
5722 : AAInstanceInfoFloating(IRP, A) {}
5727 bool AANoCapture::isImpliedByIR(Attributor &A, const IRPosition &IRP,
5732 Value &V = IRP.getAssociatedValue();
5733 if (!IRP.isArgumentPosition())
5746 A.getAttrs(IRP, {Attribute::Captures}, Attrs,
5752 if (IRP.getPositionKind() == IRP_CALL_SITE_ARGUMENT)
5753 if (Argument *Arg = IRP.getAssociatedArgument()) {
5763 A.manifestAttrs(IRP, Attribute::getWithCaptureInfo(
5769 if (const Function *F = IRP.getAssociatedFunction()) {
5772 determineFunctionCaptureCapabilities(IRP, *F, State);
5774 A.manifestAttrs(IRP, Attribute::getWithCaptureInfo(V.getContext(),
5784 /// depending on the ability of the function associated with \p IRP to capture
5786 void AANoCapture::determineFunctionCaptureCapabilities(const IRPosition &IRP,
5813 int ArgNo = IRP.getCalleeArgNo();
5833 AANoCaptureImpl(const IRPosition &IRP, Attributor &A) : AANoCapture(IRP, A) {}
5951 const IRPosition &IRP = getIRPosition();
5952 Value *V = isArgumentPosition() ? IRP.getAssociatedArgument()
5953 : &IRP.getAssociatedValue();
5958 isArgumentPosition() ? IRP.getAssociatedFunction() : IRP.getAnchorScope();
6048 AANoCaptureArgument(const IRPosition &IRP, Attributor &A)
6049 : AANoCaptureImpl(IRP, A) {}
6057 AANoCaptureCallSiteArgument(const IRPosition &IRP, Attributor &A)
6058 : AANoCaptureImpl(IRP, A) {}
6087 AANoCaptureFloating(const IRPosition &IRP, Attributor &A)
6088 : AANoCaptureImpl(IRP, A) {}
6098 AANoCaptureReturned(const IRPosition &IRP, Attributor &A)
6099 : AANoCaptureImpl(IRP, A) {
6119 AANoCaptureCallSiteReturned(const IRPosition &IRP, Attributor &A)
6120 : AANoCaptureImpl(IRP, A) {}
6157 AAValueSimplifyImpl(const IRPosition &IRP, Attributor &A)
6158 : AAValueSimplify(IRP, A) {}
6285 /// \param IRP The value position we are trying to unify with SimplifiedValue
6287 const IRPosition &IRP, bool Simplify = true) {
6289 std::optional<Value *> QueryingValueSimplified = &IRP.getAssociatedValue();
6292 IRP, QueryingAA, UsedAssumedInformation, AA::Interprocedural);
6358 AAValueSimplifyArgument(const IRPosition &IRP, Attributor &A)
6359 : AAValueSimplifyImpl(IRP, A) {}
6436 AAValueSimplifyReturned(const IRPosition &IRP, Attributor &A)
6437 : AAValueSimplifyImpl(IRP, A) {}
6482 AAValueSimplifyFloating(const IRPosition &IRP, Attributor &A)
6483 : AAValueSimplifyImpl(IRP, A) {}
6513 AAValueSimplifyFunction(const IRPosition &IRP, Attributor &A)
6514 : AAValueSimplifyImpl(IRP, A) {}
6533 AAValueSimplifyCallSite(const IRPosition &IRP, Attributor &A)
6534 : AAValueSimplifyFunction(IRP, A) {}
6542 AAValueSimplifyCallSiteReturned(const IRPosition &IRP, Attributor &A)
6543 : AAValueSimplifyImpl(IRP, A) {}
6551 auto IRP = IRPosition::callsite_argument(*cast<CallBase>(getCtxI()),
6553 if (IRP.getPositionKind() == IRPosition::IRP_CALL_SITE_ARGUMENT &&
6554 checkAndUpdate(A, *this, IRP))
6574 AAValueSimplifyCallSiteArgument(const IRPosition &IRP, Attributor &A)
6575 : AAValueSimplifyFloating(IRP, A) {}
6646 AAHeapToStackFunction(const IRPosition &IRP, Attributor &A)
6647 : AAHeapToStack(IRP, A) {}
7204 AAPrivatizablePtrImpl(const IRPosition &IRP, Attributor &A)
7205 : AAPrivatizablePtr(IRP, A), PrivatizableType(std::nullopt) {}
7246 AAPrivatizablePtrArgument(const IRPosition &IRP, Attributor &A)
7247 : AAPrivatizablePtrImpl(IRP, A) {}
7671 AAPrivatizablePtrFloating(const IRPosition &IRP, Attributor &A)
7672 : AAPrivatizablePtrImpl(IRP, A) {}
7718 AAPrivatizablePtrCallSiteArgument(const IRPosition &IRP, Attributor &A)
7719 : AAPrivatizablePtrFloating(IRP, A) {}
7735 const IRPosition &IRP = getIRPosition();
7738 A, this, IRP, DepClassTy::REQUIRED, IsKnownNoCapture);
7746 A, this, IRP, DepClassTy::REQUIRED, IsKnownNoAlias)) {
7752 if (!AA::isAssumedReadOnly(A, IRP, *this, IsKnown)) {
7768 AAPrivatizablePtrCallSiteReturned(const IRPosition &IRP, Attributor &A)
7769 : AAPrivatizablePtrFloating(IRP, A) {}
7784 AAPrivatizablePtrReturned(const IRPosition &IRP, Attributor &A)
7785 : AAPrivatizablePtrFloating(IRP, A) {}
7805 AAMemoryBehaviorImpl(const IRPosition &IRP, Attributor &A)
7806 : AAMemoryBehavior(IRP, A) {}
7815 /// Return the memory behavior information encoded in the IR for \p IRP.
7816 static void getKnownStateFromValue(Attributor &A, const IRPosition &IRP,
7820 A.getAttrs(IRP, AttrKinds, Attrs, IgnoreSubsumingPositions);
7837 if (auto *I = dyn_cast<Instruction>(&IRP.getAnchorValue())) {
7860 const IRPosition &IRP = getIRPosition();
7862 if (A.hasAttr(IRP, Attribute::ReadNone,
7868 getDeducedAttributes(A, IRP.getAnchorValue().getContext(), DeducedAttrs);
7870 return A.hasAttr(IRP, Attr.getKindAsEnum(),
7876 A.removeAttrs(IRP, AttrKinds);
7879 A.removeAttrs(IRP, Attribute::Writable);
7905 AAMemoryBehaviorFloating(const IRPosition &IRP, Attributor &A)
7906 : AAMemoryBehaviorImpl(IRP, A) {}
7933 AAMemoryBehaviorArgument(const IRPosition &IRP, Attributor &A)
7934 : AAMemoryBehaviorFloating(IRP, A) {}
7939 const IRPosition &IRP = getIRPosition();
7943 bool HasByVal = A.hasAttr(IRP, {Attribute::ByVal},
7945 getKnownStateFromValue(A, IRP, getState(),
7977 AAMemoryBehaviorCallSiteArgument(const IRPosition &IRP, Attributor &A)
7978 : AAMemoryBehaviorArgument(IRP, A) {}
8027 AAMemoryBehaviorCallSiteReturned(const IRPosition &IRP, Attributor &A)
8028 : AAMemoryBehaviorFloating(IRP, A) {}
8046 AAMemoryBehaviorFunction(const IRPosition &IRP, Attributor &A)
8047 : AAMemoryBehaviorImpl(IRP, A) {}
8089 AAMemoryBehaviorCallSite(const IRPosition &IRP, Attributor &A)
8090 : AACalleeToCallSite<AAMemoryBehavior, AAMemoryBehaviorImpl>(IRP, A) {}
8162 const IRPosition &IRP = getIRPosition();
8163 const IRPosition &FnPos = IRPosition::function_scope(IRP);
8169 Argument *Arg = IRP.getAssociatedArgument();
8193 A, this, IRP, DepClassTy::OPTIONAL, IsKnownNoCapture, false,
8365 AAMemoryLocationImpl(const IRPosition &IRP, Attributor &A)
8366 : AAMemoryLocation(IRP, A), Allocator(A.Allocator) {
8385 /// Return the memory behavior information encoded in the IR for \p IRP.
8386 static void getKnownStateFromValue(Attributor &A, const IRPosition &IRP,
8398 Function *AnchorFn = IRP.getAnchorScope();
8403 A.getAttrs(IRP, {Attribute::Memory}, Attrs, IgnoreSubsumingPositions);
8421 A.manifestAttrs(IRP,
8423 IRP.getAnchorValue().getContext(), ME),
8435 A.manifestAttrs(IRP,
8437 IRP.getAnchorValue().getContext(), ME),
8471 const IRPosition &IRP = getIRPosition();
8474 getDeducedAttributes(A, IRP.getAnchorValue().getContext(), DeducedAttrs);
8479 return A.manifestAttrs(IRP, Attribute::getWithMemoryEffects(
8480 IRP.getAnchorValue().getContext(), ME));
8810 AAMemoryLocationFunction(const IRPosition &IRP, Attributor &A)
8811 : AAMemoryLocationImpl(IRP, A) {}
8865 AAMemoryLocationCallSite(const IRPosition &IRP, Attributor &A)
8866 : AAMemoryLocationImpl(IRP, A) {}
8904 AADenormalFPMathImpl(const IRPosition &IRP, Attributor &A)
8905 : AADenormalFPMath(IRP, A) {}
8925 AADenormalFPMathFunction(const IRPosition &IRP, Attributor &A)
8926 : AADenormalFPMathImpl(IRP, A) {}
8989 auto &IRP = getIRPosition();
8992 return A.removeAttrs(IRP, AttrToRemove) |
8993 A.manifestAttrs(IRP, AttrToAdd, /*ForceReplace=*/true);
9007 AAValueConstantRangeImpl(const IRPosition &IRP, Attributor &A)
9008 : AAValueConstantRange(IRP, A) {}
9238 AAValueConstantRangeArgument(const IRPosition &IRP, Attributor &A)
9239 : Base(IRP, A) {}
9257 AAValueConstantRangeReturned(const IRPosition &IRP, Attributor &A)
9258 : Base(IRP, A) {}
9273 AAValueConstantRangeFloating(const IRPosition &IRP, Attributor &A)
9274 : AAValueConstantRangeImpl(IRP, A) {}
9587 AAValueConstantRangeFunction(const IRPosition &IRP, Attributor &A)
9588 : AAValueConstantRangeImpl(IRP, A) {}
9601 AAValueConstantRangeCallSite(const IRPosition &IRP, Attributor &A)
9602 : AAValueConstantRangeFunction(IRP, A) {}
9612 AAValueConstantRangeCallSiteReturned(const IRPosition &IRP, Attributor &A)
9615 /* IntroduceCallBaseContext */ true>(IRP, A) {}
9633 AAValueConstantRangeCallSiteArgument(const IRPosition &IRP, Attributor &A)
9634 : AAValueConstantRangeFloating(IRP, A) {}
9654 AAPotentialConstantValuesImpl(const IRPosition &IRP, Attributor &A)
9655 : AAPotentialConstantValues(IRP, A) {}
9665 bool fillSetWithConstantValues(Attributor &A, const IRPosition &IRP, SetTy &S,
9669 if (!A.getAssumedSimplifiedValues(IRP, *this, Values, AA::Interprocedural,
9672 // IRP itself.
9675 if (!IRP.getAssociatedType()->isIntegerTy())
9678 *this, IRP, DepClassTy::REQUIRED);
9726 AAPotentialConstantValuesArgument(const IRPosition &IRP, Attributor &A)
9727 : Base(IRP, A) {}
9740 AAPotentialConstantValuesReturned(const IRPosition &IRP, Attributor &A)
9741 : Base(IRP, A) {}
9756 AAPotentialConstantValuesFloating(const IRPosition &IRP, Attributor &A)
9757 : AAPotentialConstantValuesImpl(IRP, A) {}
10107 AAPotentialConstantValuesFunction(const IRPosition &IRP, Attributor &A)
10108 : AAPotentialConstantValuesImpl(IRP, A) {}
10124 AAPotentialConstantValuesCallSite(const IRPosition &IRP, Attributor &A)
10125 : AAPotentialConstantValuesFunction(IRP, A) {}
10136 AAPotentialConstantValuesCallSiteReturned(const IRPosition &IRP,
10139 AAPotentialConstantValuesImpl>(IRP, A) {}
10149 AAPotentialConstantValuesCallSiteArgument(const IRPosition &IRP,
10151 : AAPotentialConstantValuesFloating(IRP, A) {}
10196 bool AANoUndef::isImpliedByIR(Attributor &A, const IRPosition &IRP,
10201 if (A.hasAttr(IRP, {Attribute::NoUndef}, IgnoreSubsumingPositions,
10205 Value &Val = IRP.getAssociatedValue();
10206 if (IRP.getPositionKind() != IRPosition::IRP_RETURNED &&
10209 A.manifestAttrs(IRP, Attribute::get(Ctx, Attribute::NoUndef));
10218 AANoUndefImpl(const IRPosition &IRP, Attributor &A) : AANoUndef(IRP, A) {}
10273 AANoUndefFloating(const IRPosition &IRP, Attributor &A)
10274 : AANoUndefImpl(IRP, A) {}
10287 auto VisitValueCB = [&](const IRPosition &IRP) -> bool {
10290 A, this, IRP, DepClassTy::REQUIRED, IsKnownNoUndef);
10306 // different AA, but only if the IRP changes. Effectively when we
10328 AANoUndefReturned(const IRPosition &IRP, Attributor &A)
10329 : AAReturnedFromReturnedValues<AANoUndef, AANoUndefImpl>(IRP, A) {}
10337 AANoUndefArgument(const IRPosition &IRP, Attributor &A)
10338 : AAArgumentFromCallSiteArguments<AANoUndef, AANoUndefImpl>(IRP, A) {}
10345 AANoUndefCallSiteArgument(const IRPosition &IRP, Attributor &A)
10346 : AANoUndefFloating(IRP, A) {}
10354 AANoUndefCallSiteReturned(const IRPosition &IRP, Attributor &A)
10355 : AACalleeToCallSite<AANoUndef, AANoUndefImpl>(IRP, A) {}
10364 AANoFPClassImpl(const IRPosition &IRP, Attributor &A) : AANoFPClass(IRP, A) {}
10367 const IRPosition &IRP = getIRPosition();
10369 Value &V = IRP.getAssociatedValue();
10403 IRPosition IRP = IRPosition::callsite_argument(*CB, ArgNo);
10404 if (auto *NoFPAA = A.getAAFor<AANoFPClass>(*this, IRP, DepClassTy::NONE))
10423 AANoFPClassFloating(const IRPosition &IRP, Attributor &A)
10424 : AANoFPClassImpl(IRP, A) {}
10466 AANoFPClassReturned(const IRPosition &IRP, Attributor &A)
10469 Attribute::None, false>(IRP, A) {}
10479 AANoFPClassArgument(const IRPosition &IRP, Attributor &A)
10480 : AAArgumentFromCallSiteArguments<AANoFPClass, AANoFPClassImpl>(IRP, A) {}
10487 AANoFPClassCallSiteArgument(const IRPosition &IRP, Attributor &A)
10488 : AANoFPClassFloating(IRP, A) {}
10498 AANoFPClassCallSiteReturned(const IRPosition &IRP, Attributor &A)
10499 : AACalleeToCallSite<AANoFPClass, AANoFPClassImpl>(IRP, A) {}
10508 AACallEdgesImpl(const IRPosition &IRP, Attributor &A) : AACallEdges(IRP, A) {}
10557 AACallEdgesCallSite(const IRPosition &IRP, Attributor &A)
10558 : AACallEdgesImpl(IRP, A) {}
10625 AACallEdgesFunction(const IRPosition &IRP, Attributor &A)
10626 : AACallEdgesImpl(IRP, A) {}
10669 AAInterFnReachabilityFunction(const IRPosition &IRP, Attributor &A)
10670 : Base(IRP, A) {}
10767 const IRPosition &IRP, Type &Ty) {
10772 const auto *AA = A.getAAFor<AAType>(QueryingAA, IRP, DepClassTy::NONE);
10790 Attributor &A, const AbstractAttribute &AA, const IRPosition &IRP,
10792 Type &Ty = *IRP.getAssociatedType();
10808 AAPotentialValuesImpl(const IRPosition &IRP, Attributor &A)
10809 : AAPotentialValues(IRP, A) {}
10838 const IRPosition &IRP, Type &Ty) {
10839 if (isa<Constant>(IRP.getAssociatedValue()))
10840 return &IRP.getAssociatedValue();
10841 std::optional<Constant *> C = askForAssumedConstant<AAType>(A, AA, IRP, Ty);
10911 bool recurseForValue(Attributor &A, const IRPosition &IRP, AA::ValueScope S) {
10919 if (!A.getAssumedSimplifiedValues(IRP, this, Values, CS,
11005 AAPotentialValuesFloating(const IRPosition &IRP, Attributor &A)
11006 : AAPotentialValuesImpl(IRP, A) {}
11445 AAPotentialValuesArgument(const IRPosition &IRP, Attributor &A)
11446 : Base(IRP, A) {}
11518 AAPotentialValuesReturned(const IRPosition &IRP, Attributor &A)
11519 : Base(IRP, A) {}
11654 AAPotentialValuesFunction(const IRPosition &IRP, Attributor &A)
11655 : AAPotentialValuesImpl(IRP, A) {}
11670 AAPotentialValuesCallSite(const IRPosition &IRP, Attributor &A)
11671 : AAPotentialValuesFunction(IRP, A) {}
11680 AAPotentialValuesCallSiteReturned(const IRPosition &IRP, Attributor &A)
11681 : AAPotentialValuesImpl(IRP, A) {}
11746 AAPotentialValuesCallSiteArgument(const IRPosition &IRP, Attributor &A)
11747 : AAPotentialValuesFloating(IRP, A) {}
11759 AAAssumptionInfoImpl(const IRPosition &IRP, Attributor &A,
11761 : AAAssumptionInfo(IRP, A, Known) {}
11769 const IRPosition &IRP = getIRPosition();
11773 return A.manifestAttrs(IRP,
11774 Attribute::get(IRP.getAnchorValue().getContext(),
11814 AAAssumptionInfoFunction(const IRPosition &IRP, Attributor &A)
11815 : AAAssumptionInfoImpl(IRP, A,
11816 getAssumptions(*IRP.getAssociatedFunction())) {}
11851 AAAssumptionInfoCallSite(const IRPosition &IRP, Attributor &A)
11852 : AAAssumptionInfoImpl(IRP, A, getInitialAssumptions(IRP)) {}
11877 DenseSet<StringRef> getInitialAssumptions(const IRPosition &IRP) {
11878 const CallBase &CB = cast<CallBase>(IRP.getAssociatedValue());
11882 if (Function *F = IRP.getAssociatedFunction())
11902 AAUnderlyingObjectsImpl(const IRPosition &IRP, Attributor &A) : BaseTy(IRP) {}
12047 AAUnderlyingObjectsFloating(const IRPosition &IRP, Attributor &A)
12048 : AAUnderlyingObjectsImpl(IRP, A) {}
12052 AAUnderlyingObjectsArgument(const IRPosition &IRP, Attributor &A)
12053 : AAUnderlyingObjectsImpl(IRP, A) {}
12057 AAUnderlyingObjectsCallSite(const IRPosition &IRP, Attributor &A)
12058 : AAUnderlyingObjectsImpl(IRP, A) {}
12062 AAUnderlyingObjectsCallSiteArgument(const IRPosition &IRP, Attributor &A)
12063 : AAUnderlyingObjectsImpl(IRP, A) {}
12067 AAUnderlyingObjectsReturned(const IRPosition &IRP, Attributor &A)
12068 : AAUnderlyingObjectsImpl(IRP, A) {}
12072 AAUnderlyingObjectsCallSiteReturned(const IRPosition &IRP, Attributor &A)
12073 : AAUnderlyingObjectsImpl(IRP, A) {}
12077 AAUnderlyingObjectsFunction(const IRPosition &IRP, Attributor &A)
12078 : AAUnderlyingObjectsImpl(IRP, A) {}
12085 AAGlobalValueInfoFloating(const IRPosition &IRP, Attributor &A)
12086 : AAGlobalValueInfo(IRP, A) {}
12213 AAIndirectCallInfoCallSite(const IRPosition &IRP, Attributor &A)
12214 : AAIndirectCallInfo(IRP, A) {}
12565 AAAddressSpaceImpl(const IRPosition &IRP, Attributor &A)
12566 : AAAddressSpace(IRP, A) {}
12723 AAAddressSpaceFloating(const IRPosition &IRP, Attributor &A)
12724 : AAAddressSpaceImpl(IRP, A) {}
12732 AAAddressSpaceReturned(const IRPosition &IRP, Attributor &A)
12733 : AAAddressSpaceImpl(IRP, A) {}
12748 AAAddressSpaceCallSiteReturned(const IRPosition &IRP, Attributor &A)
12749 : AAAddressSpaceImpl(IRP, A) {}
12757 AAAddressSpaceArgument(const IRPosition &IRP, Attributor &A)
12758 : AAAddressSpaceImpl(IRP, A) {}
12764 AAAddressSpaceCallSiteArgument(const IRPosition &IRP, Attributor &A)
12765 : AAAddressSpaceImpl(IRP, A) {}
12783 AAAllocationInfoImpl(const IRPosition &IRP, Attributor &A)
12784 : AAAllocationInfo(IRP, A) {}
12807 const IRPosition &IRP = getIRPosition();
12808 Instruction *I = IRP.getCtxI();
12816 A, this, IRP, DepClassTy::OPTIONAL, IsKnownNoCapture))
12820 A.getOrCreateAAFor<AAPointerInfo>(IRP, *this, DepClassTy::REQUIRED);
12942 AAAllocationInfoFloating(const IRPosition &IRP, Attributor &A)
12943 : AAAllocationInfoImpl(IRP, A) {}
12951 AAAllocationInfoReturned(const IRPosition &IRP, Attributor &A)
12952 : AAAllocationInfoImpl(IRP, A) {}
12967 AAAllocationInfoCallSiteReturned(const IRPosition &IRP, Attributor &A)
12968 : AAAllocationInfoImpl(IRP, A) {}
12976 AAAllocationInfoArgument(const IRPosition &IRP, Attributor &A)
12977 : AAAllocationInfoImpl(IRP, A) {}
12985 AAAllocationInfoCallSiteArgument(const IRPosition &IRP, Attributor &A)
12986 : AAAllocationInfoImpl(IRP, A) {}
13045 #define SWITCH_PK_CREATE(CLASS, IRP, PK, SUFFIX) \
13047 AA = new (A.Allocator) CLASS##SUFFIX(IRP, A); \
13052 CLASS &CLASS::createForPosition(const IRPosition &IRP, Attributor &A) { \
13054 switch (IRP.getPositionKind()) { \
13061 SWITCH_PK_CREATE(CLASS, IRP, IRP_FUNCTION, Function) \
13062 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE, CallSite) \
13068 CLASS &CLASS::createForPosition(const IRPosition &IRP, Attributor &A) { \
13070 switch (IRP.getPositionKind()) { \
13074 SWITCH_PK_CREATE(CLASS, IRP, IRP_FLOAT, Floating) \
13075 SWITCH_PK_CREATE(CLASS, IRP, IRP_ARGUMENT, Argument) \
13076 SWITCH_PK_CREATE(CLASS, IRP, IRP_RETURNED, Returned) \
13077 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE_RETURNED, CallSiteReturned) \
13078 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE_ARGUMENT, CallSiteArgument) \
13084 CLASS &CLASS::createForPosition(const IRPosition &IRP, Attributor &A) { \
13086 switch (IRP.getPositionKind()) { \
13087 SWITCH_PK_CREATE(CLASS, IRP, POS, SUFFIX) \
13096 CLASS &CLASS::createForPosition(const IRPosition &IRP, Attributor &A) { \
13098 switch (IRP.getPositionKind()) { \
13100 SWITCH_PK_CREATE(CLASS, IRP, IRP_FUNCTION, Function) \
13101 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE, CallSite) \
13102 SWITCH_PK_CREATE(CLASS, IRP, IRP_FLOAT, Floating) \
13103 SWITCH_PK_CREATE(CLASS, IRP, IRP_ARGUMENT, Argument) \
13104 SWITCH_PK_CREATE(CLASS, IRP, IRP_RETURNED, Returned) \
13105 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE_RETURNED, CallSiteReturned) \
13106 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE_ARGUMENT, CallSiteArgument) \
13112 CLASS &CLASS::createForPosition(const IRPosition &IRP, Attributor &A) { \
13114 switch (IRP.getPositionKind()) { \
13122 SWITCH_PK_CREATE(CLASS, IRP, IRP_FUNCTION, Function) \
13128 CLASS &CLASS::createForPosition(const IRPosition &IRP, Attributor &A) { \
13130 switch (IRP.getPositionKind()) { \
13133 SWITCH_PK_CREATE(CLASS, IRP, IRP_FUNCTION, Function) \
13134 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE, CallSite) \
13135 SWITCH_PK_CREATE(CLASS, IRP, IRP_FLOAT, Floating) \
13136 SWITCH_PK_CREATE(CLASS, IRP, IRP_ARGUMENT, Argument) \
13137 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE_RETURNED, CallSiteReturned) \
13138 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE_ARGUMENT, CallSiteArgument) \