rust/compiler
Matthias Krüger 5023691213
Rollup merge of #141538 - folkertdev:systemv-x86_64-va_arg, r=workingjubilee
implement `va_arg` for x86_64 systemv

tracking issue: https://github.com/rust-lang/rust/issues/44930

Turns out LLVM's `va_arg` is also unreliable for this target.

https://github.com/llvm/llvm-project/issues/141361

So, like clang, we implement our own. I used

- the spec at https://gitlab.com/x86-psABIs/x86-64-ABI
- the clang implementation at 9a440f8477/clang/lib/CodeGen/Targets/X86.cpp (L3041)

We can take a bunch of shortcuts because the return type of `va_list` must implement `VaArgSafe`. I also extended some of the tests, because up to 11 floats can be stored in the `reg_safe_area` for this calling convention.

r? `@workingjubilee`
`@rustbot` label +F-c_variadic

try-job: x86_64-apple-1
2025-05-30 07:01:30 +02:00
..
rustc
rustc_abi Initial UnsafePinned/UnsafeUnpin impl [Part 1: Libs] 2025-04-13 01:11:04 -04:00
rustc_arena Introduce Arena::try_alloc_from_iter. 2025-04-19 01:13:18 +00:00
rustc_ast Rollup merge of #141430 - fee1-dead-contrib:push-nmzoprvtsvww, r=petrochenkov 2025-05-30 07:01:29 +02:00
rustc_ast_ir
rustc_ast_lowering Reorder ast::ItemKind::{Struct,Enum,Union} fields. 2025-05-28 15:48:45 +10:00
rustc_ast_passes Reorder ast::ItemKind::{Struct,Enum,Union} fields. 2025-05-28 15:48:45 +10:00
rustc_ast_pretty Reorder ast::ItemKind::{Struct,Enum,Union} fields. 2025-05-28 15:48:45 +10:00
rustc_attr_data_structures Make #[cfg(version)] respect RUSTC_OVERRIDE_VERSION_STRING 2025-05-24 23:54:17 +02:00
rustc_attr_parsing Add custom trait for emitting lint within cfg_matches 2025-05-26 21:51:09 +02:00
rustc_baked_icu_data
rustc_borrowck Fix some var names 2025-05-27 11:14:47 +00:00
rustc_builtin_macros Auto merge of #141739 - GuillaumeGomez:rollup-ivboqwd, r=GuillaumeGomez 2025-05-29 23:02:31 +00:00
rustc_codegen_cranelift atomic_load intrinsic: use const generic parameter for ordering 2025-05-28 22:57:55 +02:00
rustc_codegen_gcc Rollup merge of #141507 - RalfJung:atomic-intrinsics, r=bjorn3 2025-05-30 07:01:30 +02:00
rustc_codegen_llvm Rollup merge of #141538 - folkertdev:systemv-x86_64-va_arg, r=workingjubilee 2025-05-30 07:01:30 +02:00
rustc_codegen_ssa Rollup merge of #141507 - RalfJung:atomic-intrinsics, r=bjorn3 2025-05-30 07:01:30 +02:00
rustc_const_eval Rollup merge of #141495 - compiler-errors:rename-unpack, r=fmease 2025-05-27 20:57:54 +02:00
rustc_data_structures Rollup merge of #139668 - matthewjasper:upper-bound-fix, r=compiler-errors 2025-05-22 16:02:26 +02:00
rustc_driver
rustc_driver_impl compiler & tools: bump windows crate to dedupe versions 2025-05-17 15:26:38 +03:00
rustc_error_codes Stabilise repr128 2025-05-28 15:14:34 +01:00
rustc_error_messages bump fluent-* crates 2025-05-27 14:11:14 +03:00
rustc_errors Remove an unnecessary use of Box::into_inner. 2025-05-27 02:06:40 +10:00
rustc_expand Rollup merge of #141430 - fee1-dead-contrib:push-nmzoprvtsvww, r=petrochenkov 2025-05-30 07:01:29 +02:00
rustc_feature Stabilise repr128 2025-05-28 15:14:34 +01:00
rustc_fluent_macro bump fluent-* crates 2025-05-27 14:11:14 +03:00
rustc_fs_util Retry if creating temp fails with access denied 2025-04-25 11:28:36 +00:00
rustc_graphviz
rustc_hashes
rustc_hir Rename kw::Empty as sym::empty. 2025-05-22 11:55:22 +10:00
rustc_hir_analysis Rollup merge of #141507 - RalfJung:atomic-intrinsics, r=bjorn3 2025-05-30 07:01:30 +02:00
rustc_hir_pretty update cfg(bootstrap) 2025-05-12 15:33:37 +02:00
rustc_hir_typeck Fix false documentation 2025-05-29 12:10:50 +02:00
rustc_incremental Auto merge of #139758 - Zoxc:thread-local-graph, r=oli-obk 2025-05-07 12:39:54 +00:00
rustc_index Add copy_within to IndexSlice 2025-04-15 10:44:28 -04:00
rustc_index_macros In rustc_mir_tranform, iterate over index newtypes instead of ints 2025-04-12 11:53:07 +00:00
rustc_infer Auto merge of #141581 - lcnr:fold-clauses, r=compiler-errors 2025-05-29 02:29:01 +00:00
rustc_interface coverage: Revert "unused local file IDs" due to empty function names 2025-05-27 23:33:29 +10:00
rustc_lexer Implement RFC 3503: frontmatters 2025-05-05 23:10:08 +08:00
rustc_lint Rollup merge of #141004 - matthewjasper:unicode-before-expansion, r=davidtwco 2025-05-30 07:01:28 +02:00
rustc_lint_defs Rollup merge of #141004 - matthewjasper:unicode-before-expansion, r=davidtwco 2025-05-30 07:01:28 +02:00
rustc_llvm Experimental cygwin support in rustc 2025-05-15 23:34:11 +08:00
rustc_log Allow linking rustc and rustdoc against the same single tracing crate 2025-05-03 10:18:50 -07:00
rustc_macros Allow trailing comma after argument in query definition 2025-05-20 10:22:08 +00:00
rustc_metadata Auto merge of #141739 - GuillaumeGomez:rollup-ivboqwd, r=GuillaumeGomez 2025-05-29 23:02:31 +00:00
rustc_middle Rollup merge of #141507 - RalfJung:atomic-intrinsics, r=bjorn3 2025-05-30 07:01:30 +02:00
rustc_mir_build Rollup merge of #141683 - compiler-errors:unsafe-binder-capture, r=oli-obk 2025-05-29 04:49:45 +02:00
rustc_mir_dataflow update cfg(bootstrap) 2025-05-12 15:33:37 +02:00
rustc_mir_transform Rollup merge of #141551 - compiler-errors:hir-lints, r=BoxyUwU 2025-05-27 20:28:32 -04:00
rustc_monomorphize Always evaluate free lifetime-generic constants 2025-05-27 18:58:51 +02:00
rustc_next_trait_solver Auto merge of #141581 - lcnr:fold-clauses, r=compiler-errors 2025-05-29 02:29:01 +00:00
rustc_parse Rollup merge of #141004 - matthewjasper:unicode-before-expansion, r=davidtwco 2025-05-30 07:01:28 +02:00
rustc_parse_format Remove duplicate impl of string unescape 2025-05-06 10:00:22 +00:00
rustc_passes Rollup merge of #141407 - mu001999-contrib:dead-code/refactor, r=petrochenkov 2025-05-30 07:01:29 +02:00
rustc_pattern_analysis Use builin_index instead of hand-rolling it 2025-05-28 10:03:01 +00:00
rustc_privacy Rollup merge of #140874 - mejrs:rads, r=WaffleLapkin 2025-05-19 13:24:54 +10:00
rustc_proc_macro Do not get proc_macro from the sysroot in rustc 2025-05-27 15:49:28 +00:00
rustc_query_impl Auto merge of #140145 - Zoxc:job-server-proxy, r=SparrowLii 2025-05-01 04:11:52 +00:00
rustc_query_system Handle rustc_query_system cases of rustc::potential_query_instability lint 2025-05-14 08:59:55 +03:00
rustc_resolve Rollup merge of #133823 - estebank:issue-56328, r=petrochenkov 2025-05-30 07:01:27 +02:00
rustc_sanitizers Rename unpack to kind 2025-05-27 11:14:45 +00:00
rustc_serialize Zero the buffer passed from write_with 2025-04-25 07:14:27 +02:00
rustc_session coverage: Revert "unused local file IDs" due to empty function names 2025-05-27 23:33:29 +10:00
rustc_smir Rename unpack to kind 2025-05-27 11:14:45 +00:00
rustc_span Rollup merge of #141507 - RalfJung:atomic-intrinsics, r=bjorn3 2025-05-30 07:01:30 +02:00
rustc_symbol_mangling Rename unpack to kind 2025-05-27 11:14:45 +00:00
rustc_target Enable xray support for Mac 2025-05-24 15:06:53 +08:00
rustc_trait_selection Auto merge of #141581 - lcnr:fold-clauses, r=compiler-errors 2025-05-29 02:29:01 +00:00
rustc_traits Querify coroutine_hidden_types 2025-05-20 11:50:25 +00:00
rustc_transmute Rollup merge of #140509 - tmiasko:merge-contiguous-ranges, r=jswrenn 2025-05-02 19:37:56 +02:00
rustc_ty_utils Rollup merge of #141495 - compiler-errors:rename-unpack, r=fmease 2025-05-27 20:57:54 +02:00
rustc_type_ir Auto merge of #141581 - lcnr:fold-clauses, r=compiler-errors 2025-05-29 02:29:01 +00:00
rustc_type_ir_macros Split TypeFolder and FallibleTypeFolder 2025-04-15 18:30:35 +00:00
stable_mir Change rustc_driver dependency on stable_mir crate 2025-04-30 15:39:52 -07:00