================
@@ -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

Reply via email to