rust/compiler
bors 432fffa8af Auto merge of #118991 - nikic:scalar-pair, r=nagisa
Separate immediate and in-memory ScalarPair representation

Currently, we assume that ScalarPair is always represented using a two-element struct, both as an immediate value and when stored in memory.

This currently works fairly well, but runs into problems with https://github.com/rust-lang/rust/pull/116672, where a ScalarPair involving an i128 type can no longer be represented as a two-element struct in memory. For example, the tuple `(i32, i128)` needs to be represented in-memory as `{ i32, [3 x i32], i128 }` to satisfy alignment requirements. Using `{ i32, i128 }` instead will result in the second element being stored at the wrong offset (prior to LLVM 18).

Resolve this issue by no longer requiring that the immediate and in-memory type for ScalarPair are the same. The in-memory type will now look the same as for normal struct types (and will include padding filler and similar), while the immediate type stays a simple two-element struct type. This also means that booleans in immediate ScalarPair are now represented as i1 rather than i8, just like we do everywhere else.

The core change here is to llvm_type (which now treats ScalarPair as a normal struct) and immediate_llvm_type (which returns the two-element struct that llvm_type used to produce). The rest is fixing things up to no longer assume these are the same. In particular, this switches places that try to get pointers to the ScalarPair elements to use byte-geps instead of struct-geps.
2024-01-05 14:31:56 +00:00
..
rustc Clean up rustc_*/Cargo.toml. 2023-10-30 08:46:02 +11:00
rustc_abi Update to bitflags 2 in the compiler 2023-12-30 18:17:28 +01:00
rustc_arena rustc_arena: add alloc_str 2023-12-05 17:52:51 -08:00
rustc_ast macro_rules: Less hacky heuristic for using tt metavariable spans 2024-01-04 03:53:56 +03:00
rustc_ast_lowering Rollup merge of #119540 - fmease:no-effect-args-inside-dyn-trait, r=compiler-errors 2024-01-04 08:33:26 +01:00
rustc_ast_passes E0379: Provide suggestions 2024-01-02 13:49:48 +01:00
rustc_ast_pretty Auto merge of #119105 - dtolnay:paren, r=WaffleLapkin 2023-12-27 21:27:26 +00:00
rustc_attr Remove Session methods that duplicate DiagCtxt methods. 2023-12-24 08:05:28 +11:00
rustc_baked_icu_data Bump cfg(bootstrap)s 2023-11-15 19:41:28 -05:00
rustc_borrowck is_coroutine -> is_coroutine_or_closure 2023-12-30 15:24:15 +00:00
rustc_builtin_macros Remove more Session methods that duplicate DiagCtxt methods. 2023-12-24 08:17:47 +11:00
rustc_codegen_cranelift Merge commit '6d355f6844323db03bfd608899613e363e701951' into sync_cg_clif-2023-12-31 2023-12-31 13:29:53 +00:00
rustc_codegen_gcc Rollup merge of #119431 - taiki-e:asm-s390x-reg-addr, r=Amanieu 2024-01-04 15:33:59 +01:00
rustc_codegen_llvm Auto merge of #118991 - nikic:scalar-pair, r=nagisa 2024-01-05 14:31:56 +00:00
rustc_codegen_ssa Auto merge of #118991 - nikic:scalar-pair, r=nagisa 2024-01-05 14:31:56 +00:00
rustc_const_eval is_coroutine -> is_coroutine_or_closure 2023-12-30 15:24:15 +00:00
rustc_data_structures Update to bitflags 2 in the compiler 2023-12-30 18:17:28 +01:00
rustc_driver Bump cfg(bootstrap)s 2023-11-15 19:41:28 -05:00
rustc_driver_impl Use Result::flatten in catch_with_exit_code 2023-12-28 21:22:34 +01:00
rustc_error_codes Rollup merge of #119505 - fmease:no-host-param-for-trait-fns, r=fee1-dead 2024-01-03 16:08:30 +01:00
rustc_error_messages Remove rustc_error_messages/messages.ftl. 2023-11-26 08:37:27 +11:00
rustc_errors compiler: fix typos 2024-01-04 10:08:54 +08:00
rustc_expand macro_rules: Less hacky heuristic for using tt metavariable spans 2024-01-04 03:53:56 +03:00
rustc_feature Update tracking issue of naked_functions 2023-12-31 17:09:46 +00:00
rustc_fluent_macro Add a useful comment. 2023-11-26 08:38:02 +11:00
rustc_fs_util Clean up rustc_*/Cargo.toml. 2023-10-30 08:46:02 +11:00
rustc_graphviz remove unused pub fn 2023-11-23 14:11:02 +03:00
rustc_hir Rollup merge of #119239 - compiler-errors:yield-coercion, r=davidtwco 2024-01-03 16:08:24 +01:00
rustc_hir_analysis Auto merge of #117213 - oli-obk:check_item_type_cleanup, r=estebank 2024-01-05 00:04:08 +00:00
rustc_hir_pretty Make closures carry their own ClosureKind, rather than deducing what it is from movability 2023-12-25 16:29:15 +00:00
rustc_hir_typeck Rollup merge of #119539 - vuittont60:master, r=TaKO8Ki 2024-01-04 08:33:25 +01:00
rustc_incremental Report I/O errors with emit_fatal not emit_err 2024-01-02 07:31:02 -05:00
rustc_index Mention the relevant tracking issue next to my bit_set hack 2023-12-23 00:04:20 +01:00
rustc_index_macros Put backticks around some attributes in doc comments. 2023-11-27 09:37:01 +11:00
rustc_infer Minor improvements in comment for 2024-01-01 13:21:49 +05:30
rustc_interface Stabilize THIR unsafeck 2024-01-05 10:00:59 +00:00
rustc_lexer Rename some unescaping functions. 2023-12-13 14:17:50 +11:00
rustc_lint Auto merge of #118297 - shepmaster:warn-dead-tuple-fields, r=WaffleLapkin 2024-01-05 04:51:55 +00:00
rustc_lint_defs Auto merge of #118297 - shepmaster:warn-dead-tuple-fields, r=WaffleLapkin 2024-01-05 04:51:55 +00:00
rustc_llvm Rollup merge of #118941 - krasimirgg:llvm-cov, r=nikic 2023-12-18 17:03:11 +01:00
rustc_log rustc_log: provide a way to init logging based on the values, not names, of the env vars 2023-11-11 15:24:33 +01:00
rustc_macros Add level arg to into_diagnostic. 2023-12-19 09:19:25 +11:00
rustc_metadata Rollup merge of #119510 - saethlin:fatal-io-errors, r=WaffleLapkin,Nilstrieb 2024-01-03 16:08:31 +01:00
rustc_middle Stabilize THIR unsafeck 2024-01-05 10:00:59 +00:00
rustc_mir_build Handle context for const patterns correctly 2024-01-05 10:00:59 +00:00
rustc_mir_dataflow Remove movability from TyKind::Coroutine 2023-12-28 16:35:01 +00:00
rustc_mir_transform Stabilize THIR unsafeck 2024-01-05 10:00:59 +00:00
rustc_monomorphize is_coroutine -> is_coroutine_or_closure 2023-12-30 15:24:15 +00:00
rustc_next_trait_solver Remove movability from TyKind::Coroutine 2023-12-28 16:35:01 +00:00
rustc_parse Auto merge of #119569 - matthiaskrgr:rollup-4packja, r=matthiaskrgr 2024-01-04 21:44:14 +00:00
rustc_parse_format Auto merge of #117819 - fmease:rustc_parse_format-stable-rustc, r=Nilstrieb 2023-11-15 14:55:35 +00:00
rustc_passes Auto merge of #118297 - shepmaster:warn-dead-tuple-fields, r=WaffleLapkin 2024-01-05 04:51:55 +00:00
rustc_pattern_analysis Remove movability from TyKind::Coroutine 2023-12-28 16:35:01 +00:00
rustc_privacy Remove Session methods that duplicate DiagCtxt methods. 2023-12-24 08:05:28 +11:00
rustc_query_impl Remove two unused feature gates from rustc_query_impl 2023-12-31 20:51:53 +00:00
rustc_query_system Rollup merge of #119086 - RossSmyth:query_panics, r=compiler-errors 2024-01-03 16:08:23 +01:00
rustc_resolve fallback visibility for unexpected trait item 2024-01-04 02:02:57 +08:00
rustc_serialize Call FileEncoder::finish in rmeta encoding 2023-11-22 22:49:22 -05:00
rustc_session Stabilize THIR unsafeck 2024-01-05 10:00:59 +00:00
rustc_smir Movability doesn't need to be a query anymore 2023-12-28 16:35:01 +00:00
rustc_span Rollup merge of #119325 - RalfJung:custom-mir, r=compiler-errors 2024-01-04 15:33:58 +01:00
rustc_symbol_mangling Update to bitflags 2 in the compiler 2023-12-30 18:17:28 +01:00
rustc_target Auto merge of #119569 - matthiaskrgr:rollup-4packja, r=matthiaskrgr 2024-01-04 21:44:14 +00:00
rustc_trait_selection Movability doesn't need to be a query anymore 2023-12-28 16:35:01 +00:00
rustc_traits add unused NormalizesTo predicate 2023-12-07 17:52:51 +01:00
rustc_transmute Update itertools to 0.11. 2023-11-22 08:13:21 +11:00
rustc_ty_utils Movability doesn't need to be a query anymore 2023-12-28 16:35:01 +00:00
rustc_type_ir Update to bitflags 2 in the compiler 2023-12-30 18:17:28 +01:00
stable_mir Restore movability to SMIR 2023-12-28 16:35:01 +00:00