================ @@ -683,6 +698,65 @@ struct AAAMDAttributesFunction : public AAAMDAttributes { return !A.checkForAllCallLikeInstructions(DoesNotRetrieve, *this, UsedAssumedInformation); } + + // Returns true if FlatScratchInit is needed, i.e., no-flat-scratch-init is + // not to be set. + bool needFlatScratchInit(Attributor &A) { + assert(isAssumed(FLAT_SCRATCH_INIT)); // only called if the bit is still set + + // Check all AddrSpaceCast instructions. FlatScratchInit is needed if + // there is a cast from PRIVATE_ADDRESS. + auto AddrSpaceCastNotFromPrivate = [](Instruction &I) { + return cast<AddrSpaceCastInst>(I).getSrcAddressSpace() != + AMDGPUAS::PRIVATE_ADDRESS; + }; + + bool UsedAssumedInformation = false; + if (!A.checkForAllInstructions(AddrSpaceCastNotFromPrivate, *this, + {Instruction::AddrSpaceCast}, ---------------- arsenm wrote:
Can't this handle the call case instead of a separate checkForAllCallLikeInstructions? Alternatively, we should finally add the nonnull flag to addrspacecast https://github.com/llvm/llvm-project/pull/94647 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits