[clang] 6e69e2f - [clang][SME] Promote undefined ZA/ZT0 warnings to errors (#229146)
via cfe-commits
cfe-commits at lists.llvm.org
Sat Oct 10 01:59:33 PDT 2026
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 at +1 {{builtin call is not valid when calling from a function without active ZA state}}
+ // expected-error at +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 at +1 {{builtin call is not valid when calling from a function without active ZT0 state}}
+ // expected-error at +1 {{builtin call is not valid when calling from a function without active ZT0 state}}
svzero_zt(0);
}
More information about the cfe-commits
mailing list