[clang] [Clang][AArch64] Warn when calling streaming/non-streaming about vect… (PR #79842)
Dinar Temirbulatov via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 19 09:21:47 PDT 2024
================
@@ -7516,28 +7516,23 @@ void Sema::checkCall(NamedDecl *FDecl, const FunctionProtoType *Proto,
}
}
- auto *CallerFD = dyn_cast<FunctionDecl>(CurContext);
- bool IsCalleeStreaming =
- (ExtInfo.AArch64SMEAttributes & FunctionType::SME_PStateSMEnabledMask);
- bool IsCalleeStreamingCompatible =
- (ExtInfo.AArch64SMEAttributes &
- FunctionType::SME_PStateSMCompatibleMask);
- bool IsBuiltin = (FD && FD->getBuiltinID());
- AnyScalableArgsOrRet |= Proto->getReturnType()->isSizelessVectorType();
-
- // If the caller is a function and the callee has a different
- // non-compitable streaming attribute. If it passed any VL-based arguments
- // or return VL-based value, then warn that the streaming and non-streaming
- // vector lengths may be different.
- if (CallerFD && !IsBuiltin && AnyScalableArgsOrRet) {
- ArmStreamingType CallerFnType = getArmStreamingFnType(CallerFD);
- if ((CallerFnType != ArmStreaming &&
- CallerFnType != ArmStreamingCompatible && IsCalleeStreaming) ||
- (CallerFnType == ArmStreaming && !IsCalleeStreaming &&
- !IsCalleeStreamingCompatible) ||
- (CallerFnType == ArmStreamingCompatible &&
- (IsCalleeStreaming || !IsCalleeStreamingCompatible)))
- Diag(Loc, diag::warn_sme_streaming_pass_return_vl_to_non_streaming);
+ // If the call requires a streaming-mode change and has scalable vector
+ // arguments or return values, then warn the user that the streaming and
+ // non-streaming vector lengths may be different.
+ bool IsBuiltin = FD && FD->getBuiltinID();
----------------
dtemirbulatov wrote:
Done.
https://github.com/llvm/llvm-project/pull/79842
More information about the cfe-commits
mailing list