================
@@ -7517,34 +7517,37 @@ void Sema::checkCall(NamedDecl *FDecl, const 
FunctionProtoType *Proto,
     }
 
     auto *CallerFD = dyn_cast<FunctionDecl>(CurContext);
-    if (FD && CallerFD && Context.getTargetInfo().hasFeature("sme") &&
-        !FD->getBuiltinID()) {
+    bool IsCalleeStreaming = ((ExtInfo.AArch64SMEAttributes &
+                               FunctionType::SME_PStateSMEnabledMask) ||
+                              (ExtInfo.AArch64SMEAttributes &
+                               FunctionType::SME_PStateSMCompatibleMask));
+    bool IsBuiltin = (FD && FD->getBuiltinID());
+
+    if (CallerFD && Context.getTargetInfo().hasFeature("sme") && !IsBuiltin) {
       // If the callee has an AArch64 SME __arm_locally_streaming attribute
       // warn if this function returns VL-based value or pass any such 
argument,
       // the streaming and non-streaming vector lengths may be different.
-      ArmStreamingType CalleeFnType = getArmStreamingFnType(FD);
       ArmStreamingType CallerFnType = getArmStreamingFnType(CallerFD);
       // If the caller is a non-streaming function and the callee has a
       // 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 (CallerFnType != ArmStreaming) {
-        if (CalleeFnType == ArmStreaming) {
+        if (IsCalleeStreaming) {
           if (AnyScalableArgs)
-            Diag(Loc,
-                 diag::warn_sme_non_streaming_caller_pass_args_to_streaming);
-          if (FD->getReturnType()->isSizelessVectorType())
-            Diag(Loc, 
diag::warn_sme_non_streaming_caller_returns_to_streaming);
+            Diag(Loc, 
diag::warn_sme_streaming_pass_return_vl_to_non_streaming);
+          if (Proto->getReturnType()->isSizelessVectorType())
+            Diag(Loc, 
diag::warn_sme_streaming_pass_return_vl_to_non_streaming);
----------------
dtemirbulatov wrote:

Done.

https://github.com/llvm/llvm-project/pull/79842
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to