[clang] [llvm] [AArch64][SME] Save VG for unwind info when changing streaming-mode (PR #83301)

Kerry McLaughlin via cfe-commits cfe-commits at lists.llvm.org
Thu May 9 06:46:34 PDT 2024


================
@@ -3730,6 +3730,12 @@ def warn_gnu_inline_cplusplus_without_extern : Warning<
   "'gnu_inline' attribute without 'extern' in C++ treated as externally"
   " available, this changed in Clang 10">,
   InGroup<DiagGroup<"gnu-inline-cpp-without-extern">>;
+def warn_sme_streaming_mode_change_no_sve : Warning<
+  "function requires a streaming-mode change, unwinding is not possible without 'sve'">,
+  InGroup<AArch64SMEAttributes>;
----------------
kmclaughlin-arm wrote:

Thanks @efriedma-quic, I have changed these warnings to errors as suggested and also updated SemaChecking.cpp to only emit them if the callee is not marked with either `noexcept` or `nothrow`. I thought that we should not emit the errors if `fno-exceptions` is used as well, so I've added a check for `getLangOpts().Exceptions` in the same place.

I started adding similar asserts to LLVM to ensure that if SVE is not available, that nounwind is set on the callee. I haven't included these in the latest commit however, as many of the LLVM tests for SME do not currently pass `-mattr=+sve` and would require updating a lot of CHECK lines. I would prefer to work on this separately and post a new patch following this PR if possible, as I think including all of the test changes will make this PR more difficult to review.

https://github.com/llvm/llvm-project/pull/83301


More information about the cfe-commits mailing list