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
