================
@@ -3771,25 +3771,25 @@ void Sema::checkCall(NamedDecl *FDecl, const
FunctionProtoType *Proto,
(CallerFnType == SemaARM::ArmStreamingCompatible ||
((CallerFnType == SemaARM::ArmStreaming) ^ IsCalleeStreaming))) {
const LangOptions &LO = getLangOpts();
- auto VL = LO.VScaleMin * 128;
- auto SVL = LO.VScaleStreamingMin * 128;
+ unsigned VL = LO.VScaleMin * 128;
+ unsigned SVL = LO.VScaleStreamingMin * 128;
- if (IsScalableArg) {
- if (VL && SVL && VL != SVL)
- Diag(Loc, diag::err_sme_streaming_transition_vl_mismatch)
- << /*IsArg=*/true << VL << SVL;
- else
- Diag(Loc, diag::warn_sme_streaming_pass_return_vl_to_non_streaming)
- << /*IsArg=*/true;
- }
- if (IsScalableRet) {
- if (VL && SVL && VL != SVL)
+ bool IsVLError = CallerFnType != SemaARM::ArmStreamingCompatible &&
----------------
sdesmalen-arm wrote:
I think it's worth making a special warning diagnostic for the
streaming-compatible -> streaming case, and the streaming-compatible ->
non-streaming case when we know that VL != SVL, to make it clear that passing a
VL-dependent argument may be undefined behaviour if the machine is [not] in
streaming mode when executing the call.
(This is subtly different from the current warning diagnostic which says that
passing a VL-dependent argument may be undefined behaviour if the vector
lengths don't match)
https://github.com/llvm/llvm-project/pull/159131
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits