Author: Benjamin Maxwell
Date: 2026-10-10T09:59:28+01:00
New Revision: 6e69e2fb94cb7a1bb633b03d002cae335d9232fb

URL: 
https://github.com/llvm/llvm-project/commit/6e69e2fb94cb7a1bb633b03d002cae335d9232fb
DIFF: 
https://github.com/llvm/llvm-project/commit/6e69e2fb94cb7a1bb633b03d002cae335d9232fb.diff

LOG: [clang][SME] Promote undefined ZA/ZT0 warnings to errors (#229146)

Added: 
    

Modified: 
    clang/include/clang/Basic/DiagnosticSemaKinds.td
    clang/lib/Sema/SemaARM.cpp
    clang/test/Sema/aarch64-incompat-sm-builtin-calls.cpp

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td 
b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 70f25c78a6f4a..700d8f5684ef9 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -3440,12 +3440,10 @@ def err_attribute_arm_feature_sve_bits_unsupported : 
Error<
   "value of 128, 256, 512, 1024 or 2048">;
 def err_attribute_arm_sm_incompat_builtin : Error<
   "builtin can only be called from a %0 function">;
-def warn_attribute_arm_za_builtin_no_za_state : Warning<
-  "builtin call is not valid when calling from a function without active ZA 
state">,
-  InGroup<DiagGroup<"undefined-arm-za">>;
-def warn_attribute_arm_zt0_builtin_no_zt0_state : Warning<
-  "builtin call is not valid when calling from a function without active ZT0 
state">,
-  InGroup<DiagGroup<"undefined-arm-zt0">>;
+def err_attribute_arm_za_builtin_no_za_state : Error<
+  "builtin call is not valid when calling from a function without active ZA 
state">;
+def err_attribute_arm_zt0_builtin_no_zt0_state : Error<
+  "builtin call is not valid when calling from a function without active ZT0 
state">;
 def err_sve_vector_in_non_sve_target : Error<
   "SVE vector type %0 cannot be used in a target without sve">;
 def err_sve_vector_in_non_streaming_function : Error<

diff  --git a/clang/lib/Sema/SemaARM.cpp b/clang/lib/Sema/SemaARM.cpp
index d3a3295930390..2e8b90def6266 100644
--- a/clang/lib/Sema/SemaARM.cpp
+++ b/clang/lib/Sema/SemaARM.cpp
@@ -787,15 +787,19 @@ bool SemaARM::CheckSMEBuiltinFunctionCall(unsigned 
BuiltinID,
         checkArmStreamingBuiltin(SemaRef, TheCall, FD, *BuiltinType, 
BuiltinID))
       return true;
 
-    if ((getSMEState(BuiltinID) & ArmZAMask) && !hasArmZAState(FD))
+    if ((getSMEState(BuiltinID) & ArmZAMask) && !hasArmZAState(FD)) {
       Diag(TheCall->getBeginLoc(),
-           diag::warn_attribute_arm_za_builtin_no_za_state)
+           diag::err_attribute_arm_za_builtin_no_za_state)
           << TheCall->getSourceRange();
+      return true;
+    }
 
-    if ((getSMEState(BuiltinID) & ArmZT0Mask) && !hasArmZT0State(FD))
+    if ((getSMEState(BuiltinID) & ArmZT0Mask) && !hasArmZT0State(FD)) {
       Diag(TheCall->getBeginLoc(),
-           diag::warn_attribute_arm_zt0_builtin_no_zt0_state)
+           diag::err_attribute_arm_zt0_builtin_no_zt0_state)
           << TheCall->getSourceRange();
+      return true;
+    }
   }
 
   // Range check SME intrinsics that take immediate values.

diff  --git a/clang/test/Sema/aarch64-incompat-sm-builtin-calls.cpp 
b/clang/test/Sema/aarch64-incompat-sm-builtin-calls.cpp
index 15be24c1e477c..7b2d4c705953d 100644
--- a/clang/test/Sema/aarch64-incompat-sm-builtin-calls.cpp
+++ b/clang/test/Sema/aarch64-incompat-sm-builtin-calls.cpp
@@ -110,7 +110,7 @@ svbool_t streaming_caller_ptrue(void) __arm_streaming {
 }
 
 svint8_t missing_za(svint8_t zd, svbool_t pg, uint32_t slice_base) 
__arm_streaming {
-  // expected-warning@+1 {{builtin call is not valid when calling from a 
function without active ZA state}}
+  // expected-error@+1 {{builtin call is not valid when calling from a 
function without active ZA state}}
     return svread_hor_za8_s8_m(zd, pg, 0, slice_base);
 }
 
@@ -120,7 +120,7 @@ svint8_t new_za(svint8_t zd, svbool_t pg, uint32_t 
slice_base) __arm_streaming {
 }
 
 void missing_zt0(void) __arm_streaming {
-  // expected-warning@+1 {{builtin call is not valid when calling from a 
function without active ZT0 state}}
+  // expected-error@+1 {{builtin call is not valid when calling from a 
function without active ZT0 state}}
   svzero_zt(0);
 }
 


        
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to