rust/compiler
Matthias Krüger 9f8c618a90
Rollup merge of #127856 - RalfJung:interpret-cast-sanity, r=oli-obk
interpret: add sanity check in dyn upcast to double-check what codegen does

For dyn receiver calls, we already have two codepaths: look up the function to call by indexing into the vtable, or alternatively resolve the DefId given the dynamic type of the receiver. With debug assertions enabled, the interpreter does both and compares the results. (Without debug assertions we always use the vtable as it is simpler.)

This PR does the same for dyn trait upcasts. However, for casts *not* using the vtable is the easier thing to do, so now the vtable path is the debug-assertion-only path. In particular, there are cases where the vtable does not contain a pointer for upcasts but instead reuses the old pointer: when the supertrait vtable is a prefix of the larger vtable. We don't want to expose this optimization and detect UB if people do a transmute assuming this optimization, so we cannot in general use the vtable indexing path.

r? ``@oli-obk``
2024-07-19 17:06:50 +02:00
..
rustc The rustc crate feature is called jemalloc 2024-07-15 13:01:20 -04:00
rustc_abi Rollup merge of #127769 - compiler-errors:ed-2024-dep, r=oli-obk 2024-07-17 16:22:31 +02:00
rustc_arena Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_ast Rollup merge of #127806 - nnethercote:parser-improvements, r=spastorino 2024-07-17 19:53:27 -05:00
rustc_ast_ir Use dep: for crate dependencies 2024-07-15 12:40:10 -04:00
rustc_ast_lowering Add ConstArgKind::Path and make ConstArg its own HIR node 2024-07-16 19:27:28 -07:00
rustc_ast_passes Rollup merge of #126762 - compiler-errors:kw-lt, r=michaelwoerister 2024-07-16 16:15:15 -05:00
rustc_ast_pretty Rollup merge of #127092 - compiler-errors:rtn-dots-redux, r=estebank 2024-07-03 23:30:07 +02:00
rustc_attr Use a dedicated type instead of a reference for the diagnostic context 2024-06-18 15:42:11 +00:00
rustc_baked_icu_data Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_borrowck Remove tag field from relations 2024-07-18 14:34:05 -04:00
rustc_builtin_macros Rollup merge of #127308 - nnethercote:Attribute-cleanups, r=petrochenkov 2024-07-07 14:22:01 +02:00
rustc_codegen_cranelift Rollup merge of #124033 - bjorn3:ar_archive_writer_0_3_0, r=davidtwco 2024-07-16 16:15:13 -05:00
rustc_codegen_gcc Format cg_gcc with same formatting parameters 2024-07-17 20:22:07 +02:00
rustc_codegen_llvm Rollup merge of #121533 - ratmice:wasm_init_fini_array, r=nnethercote 2024-07-19 03:27:46 -05:00
rustc_codegen_ssa valtree construction: keep track of which type was valtree-incompatible 2024-07-18 11:58:16 +02:00
rustc_const_eval Rollup merge of #127856 - RalfJung:interpret-cast-sanity, r=oli-obk 2024-07-19 17:06:50 +02:00
rustc_data_structures Use dep: for crate dependencies 2024-07-15 12:40:10 -04:00
rustc_driver Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_driver_impl Move codegen_and_build_linker from Queries to Linker 2024-07-01 11:00:49 +00:00
rustc_error_codes avoid creating an Instance only to immediately disassemble it again 2024-07-18 11:58:16 +02:00
rustc_error_messages Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_errors Rollup merge of #120248 - WaffleLapkin:bonk-ptr-object-casts, r=compiler-errors,oli-obk,lnicola 2024-07-08 16:28:15 +02:00
rustc_expand Rollup merge of #127542 - c410-f3r:concat-again, r=petrochenkov 2024-07-17 19:53:25 -05:00
rustc_feature Rollup merge of #127630 - compiler-errors:type-ascription, r=chenyukang 2024-07-14 20:24:59 +02:00
rustc_fluent_macro Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_fs_util Remove useless tidy-alphabetical markers. 2024-06-20 09:23:20 +10:00
rustc_graphviz Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_hir Clarify docs explaining purpose of ConstArg 2024-07-17 20:31:36 -07:00
rustc_hir_analysis Auto merge of #127956 - tgross35:rollup-8ten7pk, r=tgross35 2024-07-19 11:08:02 +00:00
rustc_hir_pretty Remove some unintended changes to imports 2024-07-17 20:31:37 -07:00
rustc_hir_typeck Auto merge of #127956 - tgross35:rollup-8ten7pk, r=tgross35 2024-07-19 11:08:02 +00:00
rustc_incremental Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_index Fix feature gating on rustc_index to not use implicit features 2024-07-15 12:44:24 -04:00
rustc_index_macros Remove usage of specialization from newtype_index! 2024-06-30 16:42:53 +00:00
rustc_infer Auto merge of #125915 - camelid:const-arg-refactor, r=BoxyUwU 2024-07-19 08:44:51 +00:00
rustc_interface Use dep: for crate dependencies 2024-07-15 12:40:10 -04:00
rustc_lexer Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_lint Auto merge of #127956 - tgross35:rollup-8ten7pk, r=tgross35 2024-07-19 11:08:02 +00:00
rustc_lint_defs make pub_use_of_private_extern_crate show up in future breakage reports 2024-07-18 13:43:56 +02:00
rustc_llvm Rollup merge of #124033 - bjorn3:ar_archive_writer_0_3_0, r=davidtwco 2024-07-16 16:15:13 -05:00
rustc_log Bump tracing-tree and allow rendering lines again 2024-06-12 10:11:41 +00:00
rustc_macros lift_to_tcx -> lift_to_interner 2024-07-17 10:46:10 -04:00
rustc_metadata report pat no field error no recoverd struct variant 2024-07-11 00:18:47 +08:00
rustc_middle Auto merge of #125915 - camelid:const-arg-refactor, r=BoxyUwU 2024-07-19 08:44:51 +00:00
rustc_mir_build Rollup merge of #127858 - Zalathar:pair-tree, r=Nadrieril 2024-07-18 23:05:22 +02:00
rustc_mir_dataflow Stop using the gen keyword in the compiler 2024-07-14 14:01:01 -04:00
rustc_mir_transform coverage: Restrict ExpressionUsed simplification to Code mappings 2024-07-15 20:54:28 +10:00
rustc_monomorphize Auto merge of #113128 - WaffleLapkin:become_trully_unuwuable, r=oli-obk,RalfJung 2024-07-08 04:35:04 +00:00
rustc_next_trait_solver Use dep: for crate dependencies 2024-07-15 12:40:10 -04:00
rustc_parse Overhaul comments in collect_tokens_trailing_token. 2024-07-19 15:25:55 +10:00
rustc_parse_format Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_passes hir: Create hir::ConstArgKind enum 2024-07-16 19:27:28 -07:00
rustc_pattern_analysis pattern lowering: make sure we never call user-defined PartialEq instances 2024-07-18 11:58:16 +02:00
rustc_privacy Do not ICE in privacy when type inference fails. 2024-06-17 10:09:27 +00:00
rustc_query_impl Allow tracing through item_bounds query invocations on opaques 2024-06-19 08:47:55 +00:00
rustc_query_system Use dep: for crate dependencies 2024-07-15 12:40:10 -04:00
rustc_resolve Auto merge of #125915 - camelid:const-arg-refactor, r=BoxyUwU 2024-07-19 08:44:51 +00:00
rustc_sanitizers Split out IntoIterator and non-Iterator constructors for AliasTy/AliasTerm/TraitRef/projection 2024-06-24 11:28:21 -04:00
rustc_serialize chore: remove duplicate words 2024-07-02 11:25:31 +08:00
rustc_session Auto merge of #127670 - compiler-errors:no-type-length-limit, r=jackh726 2024-07-14 12:44:07 +00:00
rustc_smir Avoid comments that describe multiple use items. 2024-07-17 08:02:46 +10:00
rustc_span Rollup merge of #127854 - fmease:glob-import-type_ir_inherent-lint, r=compiler-errors 2024-07-18 18:10:16 +02:00
rustc_symbol_mangling Fix FnMut/Fn shim for coroutine-closures that capture references 2024-06-29 17:38:02 -04:00
rustc_target cleanup: remove support for 3DNow! cpu features 2024-07-17 11:45:02 -04:00
rustc_trait_selection Rollup merge of #127856 - RalfJung:interpret-cast-sanity, r=oli-obk 2024-07-19 17:06:50 +02:00
rustc_traits Split out overflow handling into its own module 2024-07-09 09:51:56 -04:00
rustc_transmute Use dep: for crate dependencies 2024-07-15 12:40:10 -04:00
rustc_ty_utils Auto merge of #123351 - beetrees:x86-ret-snan-rust, r=nikic,workingjubilee 2024-07-12 20:36:43 +00:00
rustc_type_ir Rollup merge of #127925 - compiler-errors:tag, r=lcnr 2024-07-18 23:05:24 +02:00
rustc_type_ir_macros lift_to_tcx -> lift_to_interner 2024-07-17 10:46:10 -04:00
stable_mir Remove extern "wasm" ABI 2024-07-11 12:20:26 +02:00