about summary refs log tree commit diff
path: root/compiler/rustc_hir_analysis/src
diff options
context:
space:
mode:
authorFolkert de Vries <folkert@folkertdev.nl>2025-09-14 21:14:37 +0200
committerFolkert de Vries <folkert@folkertdev.nl>2025-09-16 10:23:07 +0200
commit8b752cb37d646118c46f7739ae965b8e9c9a9b03 (patch)
tree80d5a3e5f478d00d68ea96e87ded854bfa2a5b00 /compiler/rustc_hir_analysis/src
parent8a1b39995e5b630c5872f5de5079f1f569bd5ac2 (diff)
downloadrust-8b752cb37d646118c46f7739ae965b8e9c9a9b03.tar.gz
rust-8b752cb37d646118c46f7739ae965b8e9c9a9b03.zip
fix issue with `cmse-nonsecure-entry` ABI being both async and c-variadic
Diffstat (limited to 'compiler/rustc_hir_analysis/src')
-rw-r--r--compiler/rustc_hir_analysis/src/hir_ty_lowering/cmse.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler/rustc_hir_analysis/src/hir_ty_lowering/cmse.rs b/compiler/rustc_hir_analysis/src/hir_ty_lowering/cmse.rs
index 5088c63702e..7867c1c3b48 100644
--- a/compiler/rustc_hir_analysis/src/hir_ty_lowering/cmse.rs
+++ b/compiler/rustc_hir_analysis/src/hir_ty_lowering/cmse.rs
@@ -85,6 +85,12 @@ pub(crate) fn validate_cmse_abi<'tcx>(
                 return;
             };
 
+            // An `extern "cmse-nonsecure-entry"` function cannot be c-variadic. We run
+            // into https://github.com/rust-lang/rust/issues/132142 if we don't explicitly bail.
+            if decl.c_variadic {
+                return;
+            }
+
             match is_valid_cmse_inputs(tcx, fn_sig) {
                 Ok(Ok(())) => {}
                 Ok(Err(index)) => {