about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src/errors.rs
diff options
context:
space:
mode:
authorJacob Pratt <jacob@jhpratt.dev>2025-08-21 17:57:49 -0400
committerGitHub <noreply@github.com>2025-08-21 17:57:49 -0400
commit32975fe542f4d27d42c4f21e904a040d7b2156e6 (patch)
treed9af3c8172c67e889df023593178ccea1db3add0 /compiler/rustc_codegen_llvm/src/errors.rs
parent0a0553e2e4fa19cb5d87286e0960bb984bf503aa (diff)
parent74c6fdf171e04e368e6e2179158396a4ead6c634 (diff)
downloadrust-32975fe542f4d27d42c4f21e904a040d7b2156e6.tar.gz
rust-32975fe542f4d27d42c4f21e904a040d7b2156e6.zip
Rollup merge of #144541 - folkertdev:c-variadic-same-program-multiple-abis-arm, r=RalfJung,davidtwco
c-variadic: multiple ABIs in the same program for arm

similar to https://github.com/rust-lang/rust/pull/144379, but for arm, requested in https://github.com/rust-lang/rust/pull/144066.

Quoting https://github.com/rust-lang/reference/issues/1946#issuecomment-3124555690

> `"aapcs"` specifically refers to the soft-float ABI where floating-point values are passed in integer registers.

However for c-variadic functions, `aapcs` behaves the same as `C`:

https://github.com/ARM-software/abi-aa/blob/main/aapcs32/aapcs32.rst#65parameter-passing

> A variadic function is always marshaled as for the base standard.

https://github.com/ARM-software/abi-aa/blob/main/aapcs32/aapcs32.rst#7the-standard-variants

> This section applies only to non-variadic functions. For a variadic function the base standard is always used both for argument passing and result return.

---

I also noticed that rustc currently emit more instructions than clang for c-variadic functions on arm, see https://godbolt.org/z/hMce9rnTh. I'll fix that separately. (edit: https://github.com/rust-lang/rust/pull/144549)

try-job: armhf-gnu
r? `@RalfJung`
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/errors.rs')
0 files changed, 0 insertions, 0 deletions