about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src
diff options
context:
space:
mode:
authorThe Miri Cronjob Bot <miri@cron.bot>2025-09-13 04:59:55 +0000
committerThe Miri Cronjob Bot <miri@cron.bot>2025-09-13 04:59:55 +0000
commit520e45a538a6c047c77785f09fdead3842b7b7ba (patch)
tree2f810c44d18e82c7d160925dc49c157acbae9116 /compiler/rustc_codegen_llvm/src
parentae57f08c1377b304b13fbb922438615d7692d65e (diff)
parent544644476d9c304648801dae76d85b1c17fc35d1 (diff)
downloadrust-520e45a538a6c047c77785f09fdead3842b7b7ba.tar.gz
rust-520e45a538a6c047c77785f09fdead3842b7b7ba.zip
Merge ref '4ba1cf9ade4c' from rust-lang/rust
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: 4ba1cf9ade4c8e2fa10676a50ee34594eb161837
Filtered ref: 84b64d836ed478c54972a1d2639e60fa5f3ce26f
Upstream diff: https://github.com/rust-lang/rust/compare/2a9bacf6187685931d52346a0ecff2e52bdc91cc...4ba1cf9ade4c8e2fa10676a50ee34594eb161837

This merge was created using https://github.com/rust-lang/josh-sync.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
-rw-r--r--compiler/rustc_codegen_llvm/src/va_arg.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/compiler/rustc_codegen_llvm/src/va_arg.rs b/compiler/rustc_codegen_llvm/src/va_arg.rs
index 7eb5d302058..ab08125217f 100644
--- a/compiler/rustc_codegen_llvm/src/va_arg.rs
+++ b/compiler/rustc_codegen_llvm/src/va_arg.rs
@@ -908,6 +908,21 @@ pub(super) fn emit_va_arg<'ll, 'tcx>(
             )
         }
         "aarch64" => emit_aapcs_va_arg(bx, addr, target_ty),
+        "arm" => {
+            // Types wider than 16 bytes are not currently supported. Clang has special logic for
+            // such types, but `VaArgSafe` is not implemented for any type that is this large.
+            assert!(bx.cx.size_of(target_ty).bytes() <= 16);
+
+            emit_ptr_va_arg(
+                bx,
+                addr,
+                target_ty,
+                PassMode::Direct,
+                SlotSize::Bytes4,
+                AllowHigherAlign::Yes,
+                ForceRightAdjust::No,
+            )
+        }
         "s390x" => emit_s390x_va_arg(bx, addr, target_ty),
         "powerpc" => emit_powerpc_va_arg(bx, addr, target_ty),
         "powerpc64" | "powerpc64le" => emit_ptr_va_arg(