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) {}
1066 AAPointerInfoImpl(const IRPosition &IRP, Attributor &A) : BaseTy(IRP) {}
1430 void trackPointerInfoStatistics(const IRPosition &IRP) const {}
1459 AAPointerInfoFloating(const IRPosition &IRP, Attributor &A)
1460 : AAPointerInfoImpl(IRP, A) {}
1938 AAPointerInfoReturned(const IRPosition &IRP, Attributor &A)
1939 : AAPointerInfoImpl(IRP, A) {}
1953 AAPointerInfoArgument(const IRPosition &IRP, Attributor &A)
1954 : AAPointerInfoFloating(IRP, A) {}
1963 AAPointerInfoCallSiteArgument(const IRPosition &IRP, Attributor &A)
1964 : AAPointerInfoFloating(IRP, A) {}
2035 AAPointerInfoCallSiteReturned(const IRPosition &IRP, Attributor &A)
2036 : AAPointerInfoFloating(IRP, A) {}
2049 AANoUnwindImpl(const IRPosition &IRP, Attributor &A) : AANoUnwind(IRP, A) {}
2093 AANoUnwindFunction(const IRPosition &IRP, Attributor &A)
2094 : AANoUnwindImpl(IRP, A) {}
2103 AANoUnwindCallSite(const IRPosition &IRP, Attributor &A)
2104 : AACalleeToCallSite<AANoUnwind, AANoUnwindImpl>(IRP, A) {}
2174 AANoSyncImpl(const IRPosition &IRP, Attributor &A) : AANoSync(IRP, A) {}
2226 AANoSyncFunction(const IRPosition &IRP, Attributor &A)
2227 : AANoSyncImpl(IRP, A) {}
2235 AANoSyncCallSite(const IRPosition &IRP, Attributor &A)
2236 : AACalleeToCallSite<AANoSync, AANoSyncImpl>(IRP, A) {}
2247 AANoFreeImpl(const IRPosition &IRP, Attributor &A) : AANoFree(IRP, A) {}
2280 AANoFreeFunction(const IRPosition &IRP, Attributor &A)
2281 : AANoFreeImpl(IRP, A) {}
2289 AANoFreeCallSite(const IRPosition &IRP, Attributor &A)
2290 : AACalleeToCallSite<AANoFree, AANoFreeImpl>(IRP, A) {}
2298 AANoFreeFloating(const IRPosition &IRP, Attributor &A)
2299 : AANoFreeImpl(IRP, A) {}
2306 const IRPosition &IRP = getIRPosition();
2310 IRPosition::function_scope(IRP),
2351 AANoFreeArgument(const IRPosition &IRP, Attributor &A)
2352 : AANoFreeFloating(IRP, A) {}
2360 AANoFreeCallSiteArgument(const IRPosition &IRP, Attributor &A)
2361 : AANoFreeFloating(IRP, A) {}
2386 AANoFreeReturned(const IRPosition &IRP, Attributor &A)
2387 : AANoFreeFloating(IRP, A) {
2407 AANoFreeCallSiteReturned(const IRPosition &IRP, Attributor &A)
2408 : AANoFreeFloating(IRP, A) {}
2420 bool AANonNull::isImpliedByIR(Attributor &A, const IRPosition &IRP,
2425 if (!NullPointerIsDefined(IRP.getAnchorScope(),
2426 IRP.getAssociatedType()->getPointerAddressSpace()))
2428 if (A.hasAttr(IRP, AttrKinds, IgnoreSubsumingPositions, Attribute::NonNull))
2434 if (const Function *Fn = IRP.getAnchorScope()) {
2442 if (IRP.getPositionKind() != IRP_RETURNED) {
2443 Worklist.push_back({IRP.getAssociatedValue(), IRP.getCtxI()});
2451 IRP.getAssociatedFunction(), nullptr, {Instruction::Ret},
2463 A.manifestAttrs(IRP, {Attribute::get(IRP.getAnchorValue().getContext(),
2513 IRPosition IRP = IRPosition::callsite_argument(*CB, ArgNo);
2517 AA::hasAssumedIRAttr<Attribute::NonNull>(A, &QueryingAA, IRP,
2521 A.getAAFor<AADereferenceable>(QueryingAA, IRP, DepClassTy::NONE);
2552 AANonNullImpl(const IRPosition &IRP, Attributor &A) : AANonNull(IRP, A) {}
2585 AANonNullFloating(const IRPosition &IRP, Attributor &A)
2586 : AANonNullImpl(IRP, A) {}
2590 auto CheckIRP = [&](const IRPosition &IRP) {
2593 A, *this, IRP, DepClassTy::OPTIONAL, IsKnownNonNull);
2626 // different AA, but only if the IRP changes. Effectively when we
2650 AANonNullReturned(const IRPosition &IRP, Attributor &A)
2652 false, Attribute::NonNull, false>(IRP, A) {
2667 AANonNullArgument(const IRPosition &IRP, Attributor &A)
2668 : AAArgumentFromCallSiteArguments<AANonNull, AANonNullImpl>(IRP, A) {}
2675 AANonNullCallSiteArgument(const IRPosition &IRP, Attributor &A)
2676 : AANonNullFloating(IRP, A) {}
2685 AANonNullCallSiteReturned(const IRPosition &IRP, Attributor &A)
2686 : AACalleeToCallSite<AANonNull, AANonNullImpl>(IRP, A) {}
2696 AAMustProgressImpl(const IRPosition &IRP, Attributor &A)
2697 : AAMustProgress(IRP, A) {}
2714 AAMustProgressFunction(const IRPosition &IRP, Attributor &A)
2715 : AAMustProgressImpl(IRP, A) {}
2752 AAMustProgressCallSite(const IRPosition &IRP, Attributor &A)
2753 : AAMustProgressImpl(IRP, A) {}
2780 AANoRecurseImpl(const IRPosition &IRP, Attributor &A) : AANoRecurse(IRP, A) {}
2797 AANoRecurseFunction(const IRPosition &IRP, Attributor &A)
2798 : AANoRecurseImpl(IRP, A) {}
2840 AANoRecurseCallSite(const IRPosition &IRP, Attributor &A)
2841 : AACalleeToCallSite<AANoRecurse, AANoRecurseImpl>(IRP, A) {}
2852 AANonConvergentImpl(const IRPosition &IRP, Attributor &A)
2853 : AANonConvergent(IRP, A) {}
2862 AANonConvergentFunction(const IRPosition &IRP, Attributor &A)
2863 : AANonConvergentImpl(IRP, A) {}
2908 AAUndefinedBehaviorImpl(const IRPosition &IRP, Attributor &A)
2909 : AAUndefinedBehavior(IRP, A) {}
3227 AAUndefinedBehaviorFunction(const IRPosition &IRP, Attributor &A)
3228 : AAUndefinedBehaviorImpl(IRP, A) {}
3274 AAWillReturnImpl(const IRPosition &IRP, Attributor &A)
3275 : AAWillReturn(IRP, A) {}
3331 AAWillReturnFunction(const IRPosition &IRP, Attributor &A)
3332 : AAWillReturnImpl(IRP, A) {}
3351 AAWillReturnCallSite(const IRPosition &IRP, Attributor &A)
3352 : AACalleeToCallSite<AAWillReturn, AAWillReturnImpl>(IRP, A) {}
3467 CachedReachabilityAA(const IRPosition &IRP, Attributor &A) : BaseTy(IRP, A) {}
3570 AAIntraFnReachabilityFunction(const IRPosition &IRP, Attributor &A)
3571 : Base(IRP, A) {
3573 *IRP.getAssociatedFunction());
3723 bool AANoAlias::isImpliedByIR(Attributor &A, const IRPosition &IRP,
3728 Value *Val = &IRP.getAssociatedValue();
3729 if (IRP.getPositionKind() != IRP_CALL_SITE_ARGUMENT) {
3740 !NullPointerIsDefined(IRP.getAnchorScope(),
3744 if (A.hasAttr(IRP, {Attribute::ByVal, Attribute::NoAlias},
3753 AANoAliasImpl(const IRPosition &IRP, Attributor &A) : AANoAlias(IRP, A) {
3765 AANoAliasFloating(const IRPosition &IRP, Attributor &A)
3766 : AANoAliasImpl(IRP, A) {}
3784 AANoAliasArgument(const IRPosition &IRP, Attributor &A) : Base(IRP, A) {}
3827 AANoAliasCallSiteArgument(const IRPosition &IRP, Attributor &A)
3828 : AANoAliasImpl(IRP, A) {}
3835 // We do not need to worry about aliasing with the underlying IRP.
4009 AANoAliasReturned(const IRPosition &IRP, Attributor &A)
4010 : AANoAliasImpl(IRP, A) {}
4053 AANoAliasCallSiteReturned(const IRPosition &IRP, Attributor &A)
4054 : AACalleeToCallSite<AANoAlias, AANoAliasImpl>(IRP, A) {}
4065 AAIsDeadValueImpl(const IRPosition &IRP, Attributor &A) : AAIsDead(IRP, A) {}
4144 AAIsDeadFloating(const IRPosition &IRP, Attributor &A)
4145 : AAIsDeadValueImpl(IRP, A) {}
4301 AAIsDeadArgument(const IRPosition &IRP, Attributor &A)
4302 : AAIsDeadFloating(IRP, A) {}
4322 AAIsDeadCallSiteArgument(const IRPosition &IRP, Attributor &A)
4323 : AAIsDeadValueImpl(IRP, A) {}
4365 AAIsDeadCallSiteReturned(const IRPosition &IRP, Attributor &A)
4366 : AAIsDeadFloating(IRP, A) {}
4417 AAIsDeadReturned(const IRPosition &IRP, Attributor &A)
4418 : AAIsDeadValueImpl(IRP, A) {}
4462 AAIsDeadFunction(const IRPosition &IRP, Attributor &A) : AAIsDead(IRP, A) {}
4874 AAIsDeadCallSite(const IRPosition &IRP, Attributor &A)
4875 : AAIsDeadFunction(IRP, A) {}
4901 AADereferenceableImpl(const IRPosition &IRP, Attributor &A)
4902 : AADereferenceable(IRP, A) {}
5015 AADereferenceableFloating(const IRPosition &IRP, Attributor &A)
5016 : AADereferenceableImpl(IRP, A) {}
5106 AADereferenceableReturned(const IRPosition &IRP, Attributor &A)
5107 : Base(IRP, A) {}
5121 AADereferenceableArgument(const IRPosition &IRP, Attributor &A)
5122 : Base(IRP, A) {}
5132 AADereferenceableCallSiteArgument(const IRPosition &IRP, Attributor &A)
5133 : AADereferenceableFloating(IRP, A) {}
5145 AADereferenceableCallSiteReturned(const IRPosition &IRP, Attributor &A)
5146 : Base(IRP, A) {}
5180 IRPosition IRP = IRPosition::callsite_argument(*CB, ArgNo);
5183 auto *AlignAA = A.getAAFor<AAAlign>(QueryingAA, IRP, DepClassTy::NONE);
5225 AAAlignImpl(const IRPosition &IRP, Attributor &A) : AAAlign(IRP, A) {}
5309 AAAlignFloating(const IRPosition &IRP, Attributor &A) : AAAlignImpl(IRP, A) {}
5379 AAAlignReturned(const IRPosition &IRP, Attributor &A) : Base(IRP, A) {}
5389 AAAlignArgument(const IRPosition &IRP, Attributor &A) : Base(IRP, A) {}
5406 AAAlignCallSiteArgument(const IRPosition &IRP, Attributor &A)
5407 : AAAlignFloating(IRP, A) {}
5447 AAAlignCallSiteReturned(const IRPosition &IRP, Attributor &A)
5448 : Base(IRP, A) {}
5458 AANoReturnImpl(const IRPosition &IRP, Attributor &A) : AANoReturn(IRP, A) {}
5486 AANoReturnFunction(const IRPosition &IRP, Attributor &A)
5487 : AANoReturnImpl(IRP, A) {}
5496 AANoReturnCallSite(const IRPosition &IRP, Attributor &A)
5497 : AACalleeToCallSite<AANoReturn, AANoReturnImpl>(IRP, A) {}
5509 AAInstanceInfoImpl(const IRPosition &IRP, Attributor &A)
5510 : AAInstanceInfo(IRP, A) {}
5626 AAInstanceInfoFloating(const IRPosition &IRP, Attributor &A)
5627 : AAInstanceInfoImpl(IRP, A) {}
5632 AAInstanceInfoArgument(const IRPosition &IRP, Attributor &A)
5633 : AAInstanceInfoFloating(IRP, A) {}
5638 AAInstanceInfoCallSiteArgument(const IRPosition &IRP, Attributor &A)
5639 : AAInstanceInfoImpl(IRP, A) {}
5661 AAInstanceInfoReturned(const IRPosition &IRP, Attributor &A)
5662 : AAInstanceInfoImpl(IRP, A) {
5679 AAInstanceInfoCallSiteReturned(const IRPosition &IRP, Attributor &A)
5680 : AAInstanceInfoFloating(IRP, A) {}
5685 bool AANoCapture::isImpliedByIR(Attributor &A, const IRPosition &IRP,
5690 Value &V = IRP.getAssociatedValue();
5691 if (!IRP.isArgumentPosition())
5703 if (A.hasAttr(IRP, {Attribute::NoCapture},
5707 if (IRP.getPositionKind() == IRP_CALL_SITE_ARGUMENT)
5708 if (Argument *Arg = IRP.getAssociatedArgument())
5712 A.manifestAttrs(IRP,
5717 if (const Function *F = IRP.getAssociatedFunction()) {
5720 determineFunctionCaptureCapabilities(IRP, *F, State);
5722 A.manifestAttrs(IRP,
5732 /// depending on the ability of the function associated with \p IRP to capture
5734 void AANoCapture::determineFunctionCaptureCapabilities(const IRPosition &IRP,
5761 int ArgNo = IRP.getCalleeArgNo();
5781 AANoCaptureImpl(const IRPosition &IRP, Attributor &A) : AANoCapture(IRP, A) {}
5899 const IRPosition &IRP = getIRPosition();
5900 Value *V = isArgumentPosition() ? IRP.getAssociatedArgument()
5901 : &IRP.getAssociatedValue();
5906 isArgumentPosition() ? IRP.getAssociatedFunction() : IRP.getAnchorScope();
5996 AANoCaptureArgument(const IRPosition &IRP, Attributor &A)
5997 : AANoCaptureImpl(IRP, A) {}
6005 AANoCaptureCallSiteArgument(const IRPosition &IRP, Attributor &A)
6006 : AANoCaptureImpl(IRP, A) {}
6035 AANoCaptureFloating(const IRPosition &IRP, Attributor &A)
6036 : AANoCaptureImpl(IRP, A) {}
6046 AANoCaptureReturned(const IRPosition &IRP, Attributor &A)
6047 : AANoCaptureImpl(IRP, A) {
6067 AANoCaptureCallSiteReturned(const IRPosition &IRP, Attributor &A)
6068 : AANoCaptureImpl(IRP, A) {}
6105 AAValueSimplifyImpl(const IRPosition &IRP, Attributor &A)
6106 : AAValueSimplify(IRP, A) {}
6233 /// \param IRP The value position we are trying to unify with SimplifiedValue
6235 const IRPosition &IRP, bool Simplify = true) {
6237 std::optional<Value *> QueryingValueSimplified = &IRP.getAssociatedValue();
6240 IRP, QueryingAA, UsedAssumedInformation, AA::Interprocedural);
6306 AAValueSimplifyArgument(const IRPosition &IRP, Attributor &A)
6307 : AAValueSimplifyImpl(IRP, A) {}
6384 AAValueSimplifyReturned(const IRPosition &IRP, Attributor &A)
6385 : AAValueSimplifyImpl(IRP, A) {}
6430 AAValueSimplifyFloating(const IRPosition &IRP, Attributor &A)
6431 : AAValueSimplifyImpl(IRP, A) {}
6461 AAValueSimplifyFunction(const IRPosition &IRP, Attributor &A)
6462 : AAValueSimplifyImpl(IRP, A) {}
6481 AAValueSimplifyCallSite(const IRPosition &IRP, Attributor &A)
6482 : AAValueSimplifyFunction(IRP, A) {}
6490 AAValueSimplifyCallSiteReturned(const IRPosition &IRP, Attributor &A)
6491 : AAValueSimplifyImpl(IRP, A) {}
6499 auto IRP = IRPosition::callsite_argument(*cast<CallBase>(getCtxI()),
6501 if (IRP.getPositionKind() == IRPosition::IRP_CALL_SITE_ARGUMENT &&
6502 checkAndUpdate(A, *this, IRP))
6522 AAValueSimplifyCallSiteArgument(const IRPosition &IRP, Attributor &A)
6523 : AAValueSimplifyFloating(IRP, A) {}
6594 AAHeapToStackFunction(const IRPosition &IRP, Attributor &A)
6595 : AAHeapToStack(IRP, A) {}
7152 AAPrivatizablePtrImpl(const IRPosition &IRP, Attributor &A)
7153 : AAPrivatizablePtr(IRP, A), PrivatizableType(std::nullopt) {}
7194 AAPrivatizablePtrArgument(const IRPosition &IRP, Attributor &A)
7195 : AAPrivatizablePtrImpl(IRP, A) {}
7619 AAPrivatizablePtrFloating(const IRPosition &IRP, Attributor &A)
7620 : AAPrivatizablePtrImpl(IRP, A) {}
7666 AAPrivatizablePtrCallSiteArgument(const IRPosition &IRP, Attributor &A)
7667 : AAPrivatizablePtrFloating(IRP, A) {}
7683 const IRPosition &IRP = getIRPosition();
7686 A, this, IRP, DepClassTy::REQUIRED, IsKnownNoCapture);
7694 A, this, IRP, DepClassTy::REQUIRED, IsKnownNoAlias)) {
7700 if (!AA::isAssumedReadOnly(A, IRP, *this, IsKnown)) {
7716 AAPrivatizablePtrCallSiteReturned(const IRPosition &IRP, Attributor &A)
7717 : AAPrivatizablePtrFloating(IRP, A) {}
7732 AAPrivatizablePtrReturned(const IRPosition &IRP, Attributor &A)
7733 : AAPrivatizablePtrFloating(IRP, A) {}
7753 AAMemoryBehaviorImpl(const IRPosition &IRP, Attributor &A)
7754 : AAMemoryBehavior(IRP, A) {}
7763 /// Return the memory behavior information encoded in the IR for \p IRP.
7764 static void getKnownStateFromValue(Attributor &A, const IRPosition &IRP,
7768 A.getAttrs(IRP, AttrKinds, Attrs, IgnoreSubsumingPositions);
7785 if (auto *I = dyn_cast<Instruction>(&IRP.getAnchorValue())) {
7808 const IRPosition &IRP = getIRPosition();
7810 if (A.hasAttr(IRP, Attribute::ReadNone,
7816 getDeducedAttributes(A, IRP.getAnchorValue().getContext(), DeducedAttrs);
7818 return A.hasAttr(IRP, Attr.getKindAsEnum(),
7824 A.removeAttrs(IRP, AttrKinds);
7827 A.removeAttrs(IRP, Attribute::Writable);
7853 AAMemoryBehaviorFloating(const IRPosition &IRP, Attributor &A)
7854 : AAMemoryBehaviorImpl(IRP, A) {}
7881 AAMemoryBehaviorArgument(const IRPosition &IRP, Attributor &A)
7882 : AAMemoryBehaviorFloating(IRP, A) {}
7887 const IRPosition &IRP = getIRPosition();
7891 bool HasByVal = A.hasAttr(IRP, {Attribute::ByVal},
7893 getKnownStateFromValue(A, IRP, getState(),
7925 AAMemoryBehaviorCallSiteArgument(const IRPosition &IRP, Attributor &A)
7926 : AAMemoryBehaviorArgument(IRP, A) {}
7975 AAMemoryBehaviorCallSiteReturned(const IRPosition &IRP, Attributor &A)
7976 : AAMemoryBehaviorFloating(IRP, A) {}
7994 AAMemoryBehaviorFunction(const IRPosition &IRP, Attributor &A)
7995 : AAMemoryBehaviorImpl(IRP, A) {}
8037 AAMemoryBehaviorCallSite(const IRPosition &IRP, Attributor &A)
8038 : AACalleeToCallSite<AAMemoryBehavior, AAMemoryBehaviorImpl>(IRP, A) {}
8110 const IRPosition &IRP = getIRPosition();
8111 const IRPosition &FnPos = IRPosition::function_scope(IRP);
8117 Argument *Arg = IRP.getAssociatedArgument();
8141 A, this, IRP, DepClassTy::OPTIONAL, IsKnownNoCapture, false,
8313 AAMemoryLocationImpl(const IRPosition &IRP, Attributor &A)
8314 : AAMemoryLocation(IRP, A), Allocator(A.Allocator) {
8333 /// Return the memory behavior information encoded in the IR for \p IRP.
8334 static void getKnownStateFromValue(Attributor &A, const IRPosition &IRP,
8346 Function *AnchorFn = IRP.getAnchorScope();
8351 A.getAttrs(IRP, {Attribute::Memory}, Attrs, IgnoreSubsumingPositions);
8369 A.manifestAttrs(IRP,
8371 IRP.getAnchorValue().getContext(), ME),
8383 A.manifestAttrs(IRP,
8385 IRP.getAnchorValue().getContext(), ME),
8419 const IRPosition &IRP = getIRPosition();
8422 getDeducedAttributes(A, IRP.getAnchorValue().getContext(), DeducedAttrs);
8427 return A.manifestAttrs(IRP, Attribute::getWithMemoryEffects(
8428 IRP.getAnchorValue().getContext(), ME));
8758 AAMemoryLocationFunction(const IRPosition &IRP, Attributor &A)
8759 : AAMemoryLocationImpl(IRP, A) {}
8813 AAMemoryLocationCallSite(const IRPosition &IRP, Attributor &A)
8814 : AAMemoryLocationImpl(IRP, A) {}
8852 AADenormalFPMathImpl(const IRPosition &IRP, Attributor &A)
8853 : AADenormalFPMath(IRP, A) {}
8873 AADenormalFPMathFunction(const IRPosition &IRP, Attributor &A)
8874 : AADenormalFPMathImpl(IRP, A) {}
8937 auto &IRP = getIRPosition();
8940 return A.removeAttrs(IRP, AttrToRemove) |
8941 A.manifestAttrs(IRP, AttrToAdd, /*ForceReplace=*/true);
8955 AAValueConstantRangeImpl(const IRPosition &IRP, Attributor &A)
8956 : AAValueConstantRange(IRP, A) {}
9186 AAValueConstantRangeArgument(const IRPosition &IRP, Attributor &A)
9187 : Base(IRP, A) {}
9205 AAValueConstantRangeReturned(const IRPosition &IRP, Attributor &A)
9206 : Base(IRP, A) {}
9221 AAValueConstantRangeFloating(const IRPosition &IRP, Attributor &A)
9222 : AAValueConstantRangeImpl(IRP, A) {}
9535 AAValueConstantRangeFunction(const IRPosition &IRP, Attributor &A)
9536 : AAValueConstantRangeImpl(IRP, A) {}
9549 AAValueConstantRangeCallSite(const IRPosition &IRP, Attributor &A)
9550 : AAValueConstantRangeFunction(IRP, A) {}
9560 AAValueConstantRangeCallSiteReturned(const IRPosition &IRP, Attributor &A)
9563 /* IntroduceCallBaseContext */ true>(IRP, A) {}
9581 AAValueConstantRangeCallSiteArgument(const IRPosition &IRP, Attributor &A)
9582 : AAValueConstantRangeFloating(IRP, A) {}
9602 AAPotentialConstantValuesImpl(const IRPosition &IRP, Attributor &A)
9603 : AAPotentialConstantValues(IRP, A) {}
9613 bool fillSetWithConstantValues(Attributor &A, const IRPosition &IRP, SetTy &S,
9617 if (!A.getAssumedSimplifiedValues(IRP, *this, Values, AA::Interprocedural,
9620 // IRP itself.
9623 if (!IRP.getAssociatedType()->isIntegerTy())
9626 *this, IRP, DepClassTy::REQUIRED);
9674 AAPotentialConstantValuesArgument(const IRPosition &IRP, Attributor &A)
9675 : Base(IRP, A) {}
9688 AAPotentialConstantValuesReturned(const IRPosition &IRP, Attributor &A)
9689 : Base(IRP, A) {}
9704 AAPotentialConstantValuesFloating(const IRPosition &IRP, Attributor &A)
9705 : AAPotentialConstantValuesImpl(IRP, A) {}
10055 AAPotentialConstantValuesFunction(const IRPosition &IRP, Attributor &A)
10056 : AAPotentialConstantValuesImpl(IRP, A) {}
10072 AAPotentialConstantValuesCallSite(const IRPosition &IRP, Attributor &A)
10073 : AAPotentialConstantValuesFunction(IRP, A) {}
10084 AAPotentialConstantValuesCallSiteReturned(const IRPosition &IRP,
10087 AAPotentialConstantValuesImpl>(IRP, A) {}
10097 AAPotentialConstantValuesCallSiteArgument(const IRPosition &IRP,
10099 : AAPotentialConstantValuesFloating(IRP, A) {}
10144 bool AANoUndef::isImpliedByIR(Attributor &A, const IRPosition &IRP,
10149 if (A.hasAttr(IRP, {Attribute::NoUndef}, IgnoreSubsumingPositions,
10153 Value &Val = IRP.getAssociatedValue();
10154 if (IRP.getPositionKind() != IRPosition::IRP_RETURNED &&
10157 A.manifestAttrs(IRP, Attribute::get(Ctx, Attribute::NoUndef));
10166 AANoUndefImpl(const IRPosition &IRP, Attributor &A) : AANoUndef(IRP, A) {}
10221 AANoUndefFloating(const IRPosition &IRP, Attributor &A)
10222 : AANoUndefImpl(IRP, A) {}
10235 auto VisitValueCB = [&](const IRPosition &IRP) -> bool {
10238 A, this, IRP, DepClassTy::REQUIRED, IsKnownNoUndef);
10254 // different AA, but only if the IRP changes. Effectively when we
10276 AANoUndefReturned(const IRPosition &IRP, Attributor &A)
10277 : AAReturnedFromReturnedValues<AANoUndef, AANoUndefImpl>(IRP, A) {}
10285 AANoUndefArgument(const IRPosition &IRP, Attributor &A)
10286 : AAArgumentFromCallSiteArguments<AANoUndef, AANoUndefImpl>(IRP, A) {}
10293 AANoUndefCallSiteArgument(const IRPosition &IRP, Attributor &A)
10294 : AANoUndefFloating(IRP, A) {}
10302 AANoUndefCallSiteReturned(const IRPosition &IRP, Attributor &A)
10303 : AACalleeToCallSite<AANoUndef, AANoUndefImpl>(IRP, A) {}
10312 AANoFPClassImpl(const IRPosition &IRP, Attributor &A) : AANoFPClass(IRP, A) {}
10315 const IRPosition &IRP = getIRPosition();
10317 Value &V = IRP.getAssociatedValue();
10351 IRPosition IRP = IRPosition::callsite_argument(*CB, ArgNo);
10352 if (auto *NoFPAA = A.getAAFor<AANoFPClass>(*this, IRP, DepClassTy::NONE))
10371 AANoFPClassFloating(const IRPosition &IRP, Attributor &A)
10372 : AANoFPClassImpl(IRP, A) {}
10414 AANoFPClassReturned(const IRPosition &IRP, Attributor &A)
10417 Attribute::None, false>(IRP, A) {}
10427 AANoFPClassArgument(const IRPosition &IRP, Attributor &A)
10428 : AAArgumentFromCallSiteArguments<AANoFPClass, AANoFPClassImpl>(IRP, A) {}
10435 AANoFPClassCallSiteArgument(const IRPosition &IRP, Attributor &A)
10436 : AANoFPClassFloating(IRP, A) {}
10446 AANoFPClassCallSiteReturned(const IRPosition &IRP, Attributor &A)
10447 : AACalleeToCallSite<AANoFPClass, AANoFPClassImpl>(IRP, A) {}
10456 AACallEdgesImpl(const IRPosition &IRP, Attributor &A) : AACallEdges(IRP, A) {}
10505 AACallEdgesCallSite(const IRPosition &IRP, Attributor &A)
10506 : AACallEdgesImpl(IRP, A) {}
10573 AACallEdgesFunction(const IRPosition &IRP, Attributor &A)
10574 : AACallEdgesImpl(IRP, A) {}
10617 AAInterFnReachabilityFunction(const IRPosition &IRP, Attributor &A)
10618 : Base(IRP, A) {}
10715 const IRPosition &IRP, Type &Ty) {
10720 const auto *AA = A.getAAFor<AAType>(QueryingAA, IRP, DepClassTy::NONE);
10738 Attributor &A, const AbstractAttribute &AA, const IRPosition &IRP,
10740 Type &Ty = *IRP.getAssociatedType();
10756 AAPotentialValuesImpl(const IRPosition &IRP, Attributor &A)
10757 : AAPotentialValues(IRP, A) {}
10786 const IRPosition &IRP, Type &Ty) {
10787 if (isa<Constant>(IRP.getAssociatedValue()))
10788 return &IRP.getAssociatedValue();
10789 std::optional<Constant *> C = askForAssumedConstant<AAType>(A, AA, IRP, Ty);
10859 bool recurseForValue(Attributor &A, const IRPosition &IRP, AA::ValueScope S) {
10867 if (!A.getAssumedSimplifiedValues(IRP, this, Values, CS,
10953 AAPotentialValuesFloating(const IRPosition &IRP, Attributor &A)
10954 : AAPotentialValuesImpl(IRP, A) {}
11393 AAPotentialValuesArgument(const IRPosition &IRP, Attributor &A)
11394 : Base(IRP, A) {}
11466 AAPotentialValuesReturned(const IRPosition &IRP, Attributor &A)
11467 : Base(IRP, A) {}
11600 AAPotentialValuesFunction(const IRPosition &IRP, Attributor &A)
11601 : AAPotentialValuesImpl(IRP, A) {}
11616 AAPotentialValuesCallSite(const IRPosition &IRP, Attributor &A)
11617 : AAPotentialValuesFunction(IRP, A) {}
11626 AAPotentialValuesCallSiteReturned(const IRPosition &IRP, Attributor &A)
11627 : AAPotentialValuesImpl(IRP, A) {}
11666 IRPosition IRP = IRPosition::value(*V);
11669 IRP = IRPosition::callsite_argument(*CB, Arg->getArgNo());
11670 if (recurseForValue(A, IRP, AA::AnyScope))
11717 AAPotentialValuesCallSiteArgument(const IRPosition &IRP, Attributor &A)
11718 : AAPotentialValuesFloating(IRP, A) {}
11730 AAAssumptionInfoImpl(const IRPosition &IRP, Attributor &A,
11732 : AAAssumptionInfo(IRP, A, Known) {}
11740 const IRPosition &IRP = getIRPosition();
11744 return A.manifestAttrs(IRP,
11745 Attribute::get(IRP.getAnchorValue().getContext(),
11785 AAAssumptionInfoFunction(const IRPosition &IRP, Attributor &A)
11786 : AAAssumptionInfoImpl(IRP, A,
11787 getAssumptions(*IRP.getAssociatedFunction())) {}
11822 AAAssumptionInfoCallSite(const IRPosition &IRP, Attributor &A)
11823 : AAAssumptionInfoImpl(IRP, A, getInitialAssumptions(IRP)) {}
11848 DenseSet<StringRef> getInitialAssumptions(const IRPosition &IRP) {
11849 const CallBase &CB = cast<CallBase>(IRP.getAssociatedValue());
11853 if (Function *F = IRP.getAssociatedFunction())
11873 AAUnderlyingObjectsImpl(const IRPosition &IRP, Attributor &A) : BaseTy(IRP) {}
11994 AAUnderlyingObjectsFloating(const IRPosition &IRP, Attributor &A)
11995 : AAUnderlyingObjectsImpl(IRP, A) {}
11999 AAUnderlyingObjectsArgument(const IRPosition &IRP, Attributor &A)
12000 : AAUnderlyingObjectsImpl(IRP, A) {}
12004 AAUnderlyingObjectsCallSite(const IRPosition &IRP, Attributor &A)
12005 : AAUnderlyingObjectsImpl(IRP, A) {}
12009 AAUnderlyingObjectsCallSiteArgument(const IRPosition &IRP, Attributor &A)
12010 : AAUnderlyingObjectsImpl(IRP, A) {}
12014 AAUnderlyingObjectsReturned(const IRPosition &IRP, Attributor &A)
12015 : AAUnderlyingObjectsImpl(IRP, A) {}
12019 AAUnderlyingObjectsCallSiteReturned(const IRPosition &IRP, Attributor &A)
12020 : AAUnderlyingObjectsImpl(IRP, A) {}
12024 AAUnderlyingObjectsFunction(const IRPosition &IRP, Attributor &A)
12025 : AAUnderlyingObjectsImpl(IRP, A) {}
12032 AAGlobalValueInfoFloating(const IRPosition &IRP, Attributor &A)
12033 : AAGlobalValueInfo(IRP, A) {}
12160 AAIndirectCallInfoCallSite(const IRPosition &IRP, Attributor &A)
12161 : AAIndirectCallInfo(IRP, A) {}
12482 AAAddressSpaceImpl(const IRPosition &IRP, Attributor &A)
12483 : AAAddressSpace(IRP, A) {}
12602 AAAddressSpaceFloating(const IRPosition &IRP, Attributor &A)
12603 : AAAddressSpaceImpl(IRP, A) {}
12611 AAAddressSpaceReturned(const IRPosition &IRP, Attributor &A)
12612 : AAAddressSpaceImpl(IRP, A) {}
12627 AAAddressSpaceCallSiteReturned(const IRPosition &IRP, Attributor &A)
12628 : AAAddressSpaceImpl(IRP, A) {}
12636 AAAddressSpaceArgument(const IRPosition &IRP, Attributor &A)
12637 : AAAddressSpaceImpl(IRP, A) {}
12643 AAAddressSpaceCallSiteArgument(const IRPosition &IRP, Attributor &A)
12644 : AAAddressSpaceImpl(IRP, A) {}
12662 AAAllocationInfoImpl(const IRPosition &IRP, Attributor &A)
12663 : AAAllocationInfo(IRP, A) {}
12686 const IRPosition &IRP = getIRPosition();
12687 Instruction *I = IRP.getCtxI();
12695 A, this, IRP, DepClassTy::OPTIONAL, IsKnownNoCapture))
12699 A.getOrCreateAAFor<AAPointerInfo>(IRP, *this, DepClassTy::REQUIRED);
12821 AAAllocationInfoFloating(const IRPosition &IRP, Attributor &A)
12822 : AAAllocationInfoImpl(IRP, A) {}
12830 AAAllocationInfoReturned(const IRPosition &IRP, Attributor &A)
12831 : AAAllocationInfoImpl(IRP, A) {}
12846 AAAllocationInfoCallSiteReturned(const IRPosition &IRP, Attributor &A)
12847 : AAAllocationInfoImpl(IRP, A) {}
12855 AAAllocationInfoArgument(const IRPosition &IRP, Attributor &A)
12856 : AAAllocationInfoImpl(IRP, A) {}
12864 AAAllocationInfoCallSiteArgument(const IRPosition &IRP, Attributor &A)
12865 : AAAllocationInfoImpl(IRP, A) {}
12924 #define SWITCH_PK_CREATE(CLASS, IRP, PK, SUFFIX) \
12926 AA = new (A.Allocator) CLASS##SUFFIX(IRP, A); \
12931 CLASS &CLASS::createForPosition(const IRPosition &IRP, Attributor &A) { \
12933 switch (IRP.getPositionKind()) { \
12940 SWITCH_PK_CREATE(CLASS, IRP, IRP_FUNCTION, Function) \
12941 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE, CallSite) \
12947 CLASS &CLASS::createForPosition(const IRPosition &IRP, Attributor &A) { \
12949 switch (IRP.getPositionKind()) { \
12953 SWITCH_PK_CREATE(CLASS, IRP, IRP_FLOAT, Floating) \
12954 SWITCH_PK_CREATE(CLASS, IRP, IRP_ARGUMENT, Argument) \
12955 SWITCH_PK_CREATE(CLASS, IRP, IRP_RETURNED, Returned) \
12956 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE_RETURNED, CallSiteReturned) \
12957 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE_ARGUMENT, CallSiteArgument) \
12963 CLASS &CLASS::createForPosition(const IRPosition &IRP, Attributor &A) { \
12965 switch (IRP.getPositionKind()) { \
12966 SWITCH_PK_CREATE(CLASS, IRP, POS, SUFFIX) \
12975 CLASS &CLASS::createForPosition(const IRPosition &IRP, Attributor &A) { \
12977 switch (IRP.getPositionKind()) { \
12979 SWITCH_PK_CREATE(CLASS, IRP, IRP_FUNCTION, Function) \
12980 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE, CallSite) \
12981 SWITCH_PK_CREATE(CLASS, IRP, IRP_FLOAT, Floating) \
12982 SWITCH_PK_CREATE(CLASS, IRP, IRP_ARGUMENT, Argument) \
12983 SWITCH_PK_CREATE(CLASS, IRP, IRP_RETURNED, Returned) \
12984 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE_RETURNED, CallSiteReturned) \
12985 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE_ARGUMENT, CallSiteArgument) \
12991 CLASS &CLASS::createForPosition(const IRPosition &IRP, Attributor &A) { \
12993 switch (IRP.getPositionKind()) { \
13001 SWITCH_PK_CREATE(CLASS, IRP, IRP_FUNCTION, Function) \
13007 CLASS &CLASS::createForPosition(const IRPosition &IRP, Attributor &A) { \
13009 switch (IRP.getPositionKind()) { \
13012 SWITCH_PK_CREATE(CLASS, IRP, IRP_FUNCTION, Function) \
13013 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE, CallSite) \
13014 SWITCH_PK_CREATE(CLASS, IRP, IRP_FLOAT, Floating) \
13015 SWITCH_PK_CREATE(CLASS, IRP, IRP_ARGUMENT, Argument) \
13016 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE_RETURNED, CallSiteReturned) \
13017 SWITCH_PK_CREATE(CLASS, IRP, IRP_CALL_SITE_ARGUMENT, CallSiteArgument) \