rust/compiler
bors 83c9732e0c Auto merge of #116270 - cjgillot:gvn-aggregate, r=oli-obk,RalfJung
See through aggregates in GVN

This PR is extracted from https://github.com/rust-lang/rust/pull/111344

The first 2 commit are cleanups to avoid repeated work. I propose to stop removing useless assignments as part of this pass, and let a later `SimplifyLocals` do it. This makes tests easier to read (among others).

The next 3 commits add a constant folding mechanism to the GVN pass, presented in https://github.com/rust-lang/rust/pull/116012. ~This pass is designed to only use global allocations, to avoid any risk of accidental modification of the stored state.~

The following commits implement opportunistic simplifications, in particular:
- projections of aggregates: `MyStruct { x: a }.x` gets replaced by `a`, works with enums too;
- projections of arrays: `[a, b][0]` becomes `a`;
- projections of repeat expressions: `[a; N][x]` becomes `a`;
- transform arrays of equal operands into a repeat rvalue.

Fixes https://github.com/rust-lang/miri/issues/3090

r? `@oli-obk`
2023-10-29 14:50:53 +00:00
..
rustc Split out the stable part of smir into its own crate to prevent accidental usage of forever unstable things 2023-09-25 14:38:27 +00:00
rustc_abi fix failure to detect a too-big-type after adding padding 2023-10-27 18:07:53 +02:00
rustc_arena Stabilize [const_]pointer_byte_offsets 2023-10-25 22:35:12 +00:00
rustc_ast Auto merge of #116447 - oli-obk:gen_fn, r=compiler-errors 2023-10-29 00:03:52 +00:00
rustc_ast_lowering Auto merge of #116447 - oli-obk:gen_fn, r=compiler-errors 2023-10-29 00:03:52 +00:00
rustc_ast_passes Feature gate gen blocks, even in 2024 edition 2023-10-27 13:05:48 +00:00
rustc_ast_pretty Add gen blocks to ast and do some broken ast lowering 2023-10-27 13:05:48 +00:00
rustc_attr Parse rustc version at compile time 2023-10-26 18:55:05 -07:00
rustc_baked_icu_data docs: add Rust logo to more compiler crates 2023-10-16 15:38:08 -07:00
rustc_borrowck Auto merge of #116447 - oli-obk:gen_fn, r=compiler-errors 2023-10-29 00:03:52 +00:00
rustc_builtin_macros Add gen blocks to ast and do some broken ast lowering 2023-10-27 13:05:48 +00:00
rustc_codegen_cranelift Auto merge of #81746 - bjorn3:cg_clif_rustup_component, r=Mark-Simulacrum 2023-10-28 15:16:27 +00:00
rustc_codegen_gcc Merge commit '09ce29d0591a21e1abae22eac4d41ffd32993af8' into subtree-update_cg_gcc_2023-10-25 2023-10-27 16:07:01 -04:00
rustc_codegen_llvm Auto merge of #117123 - Zalathar:bad-counter-ids, r=petrochenkov 2023-10-28 17:43:07 +00:00
rustc_codegen_ssa Auto merge of #117335 - workingjubilee:rollup-jsomm41, r=workingjubilee 2023-10-29 01:58:46 +00:00
rustc_const_eval Auto merge of #116270 - cjgillot:gvn-aggregate, r=oli-obk,RalfJung 2023-10-29 14:50:53 +00:00
rustc_data_structures Auto merge of #116849 - oli-obk:error_shenanigans, r=cjgillot 2023-10-23 09:59:40 +00:00
rustc_driver docs: add Rust logo to more compiler crates 2023-10-16 15:38:08 -07:00
rustc_driver_impl Rollup merge of #117268 - nnethercote:rustc_interface, r=oli-obk 2023-10-28 01:07:38 -07:00
rustc_error_codes Replace all uses of generator in markdown documentation with coroutine 2023-10-20 21:14:02 +00:00
rustc_error_messages docs: add Rust logo to more compiler crates 2023-10-16 15:38:08 -07:00
rustc_errors Stash and cancel cycle errors for auto trait leakage in opaques 2023-10-26 17:58:02 +00:00
rustc_expand Auto merge of #116818 - Nilstrieb:stop-submitting-bug-reports, r=wesleywiser 2023-10-26 02:08:07 +00:00
rustc_feature Feature gate gen blocks, even in 2024 edition 2023-10-27 13:05:48 +00:00
rustc_fluent_macro Use v0.0.0 in compiler crates 2023-10-18 21:55:15 +00:00
rustc_fs_util
rustc_graphviz rustdoc: remove rust logo from non-Rust crates 2023-10-08 20:17:53 -07:00
rustc_hir Auto merge of #116447 - oli-obk:gen_fn, r=compiler-errors 2023-10-29 00:03:52 +00:00
rustc_hir_analysis Auto merge of #117171 - fee1-dead-contrib:deny-explicit-effect-params, r=oli-obk 2023-10-26 14:50:23 +00:00
rustc_hir_pretty Fiddle with State functions. 2023-10-11 10:46:55 +11:00
rustc_hir_typeck Auto merge of #116447 - oli-obk:gen_fn, r=compiler-errors 2023-10-29 00:03:52 +00:00
rustc_incremental Reduce some function exposure. 2023-10-26 09:04:26 +11:00
rustc_index Preserve DebugInfo in DeadStoreElimination. 2023-10-06 15:46:11 +00:00
rustc_infer Account for type param from other item in note_and_explain 2023-10-27 16:24:01 +00:00
rustc_interface Rollup merge of #117268 - nnethercote:rustc_interface, r=oli-obk 2023-10-28 01:07:38 -07:00
rustc_lexer Use v0.0.0 in compiler crates 2023-10-18 21:55:15 +00:00
rustc_lint Make ty::print::Printer take &mut self instead of self 2023-10-21 11:33:05 +02:00
rustc_lint_defs Auto merge of #116734 - Nadrieril:lint-per-column, r=cjgillot 2023-10-21 11:04:19 +00:00
rustc_llvm For i586/NetBSD: fix another formatting insistence. 2023-10-27 09:37:25 +00:00
rustc_log use env variable to control thread ids in rustc_log 2023-10-10 09:39:47 +08:00
rustc_macros Rollup merge of #117256 - dtolnay:currentversion, r=compiler-errors 2023-10-28 01:07:38 -07:00
rustc_metadata s/generator/coroutine/ 2023-10-20 21:14:01 +00:00
rustc_middle Auto merge of #116270 - cjgillot:gvn-aggregate, r=oli-obk,RalfJung 2023-10-29 14:50:53 +00:00
rustc_mir_build Auto merge of #103208 - cjgillot:match-fake-read, r=oli-obk,RalfJung 2023-10-27 18:51:43 +00:00
rustc_mir_dataflow Auto merge of #116300 - cjgillot:split-move, r=petrochenkov 2023-10-24 00:25:32 +00:00
rustc_mir_transform Auto merge of #116270 - cjgillot:gvn-aggregate, r=oli-obk,RalfJung 2023-10-29 14:50:53 +00:00
rustc_monomorphize coverage: Change query codegened_and_inlined_items to a plain function 2023-10-21 12:20:05 +11:00
rustc_parse Auto merge of #116447 - oli-obk:gen_fn, r=compiler-errors 2023-10-29 00:03:52 +00:00
rustc_parse_format rustdoc: remove rust logo from non-Rust crates 2023-10-08 20:17:53 -07:00
rustc_passes Auto merge of #116447 - oli-obk:gen_fn, r=compiler-errors 2023-10-29 00:03:52 +00:00
rustc_plugin_impl rustdoc: remove rust logo from non-Rust crates 2023-10-08 20:17:53 -07:00
rustc_privacy Merge associated types with the other alias types 2023-10-23 10:10:22 +00:00
rustc_query_impl Rollup merge of #116534 - cjgillot:no-dep-tasks, r=davidtwco 2023-10-28 01:07:35 -07:00
rustc_query_system Rollup merge of #116534 - cjgillot:no-dep-tasks, r=davidtwco 2023-10-28 01:07:35 -07:00
rustc_resolve Auto merge of #116447 - oli-obk:gen_fn, r=compiler-errors 2023-10-29 00:03:52 +00:00
rustc_serialize rustdoc: remove rust logo from non-Rust crates 2023-10-08 20:17:53 -07:00
rustc_session Rollup merge of #117311 - RalfJung:unpretty-thir-help, r=petrochenkov 2023-10-28 17:08:04 -07:00
rustc_smir Auto merge of #116447 - oli-obk:gen_fn, r=compiler-errors 2023-10-29 00:03:52 +00:00
rustc_span Auto merge of #116447 - oli-obk:gen_fn, r=compiler-errors 2023-10-29 00:03:52 +00:00
rustc_symbol_mangling Rollup merge of #116834 - nnethercote:rustc_symbol_mangling, r=davidtwco 2023-10-27 19:46:06 +02:00
rustc_target Auto merge of #117336 - workingjubilee:rollup-6negquv, r=workingjubilee 2023-10-29 03:53:36 +00:00
rustc_trait_selection Auto merge of #116447 - oli-obk:gen_fn, r=compiler-errors 2023-10-29 00:03:52 +00:00
rustc_traits Detect cycle errors hidden by opaques during monomorphization 2023-09-13 17:35:44 +00:00
rustc_transmute Use v0.0.0 in compiler crates 2023-10-18 21:55:15 +00:00
rustc_ty_utils Auto merge of #116447 - oli-obk:gen_fn, r=compiler-errors 2023-10-29 00:03:52 +00:00
rustc_type_ir Replace type flag HAS_TY_GENERATOR with HAS_TY_COROUTINE 2023-10-26 15:18:50 +02:00
stable_mir Auto merge of #116447 - oli-obk:gen_fn, r=compiler-errors 2023-10-29 00:03:52 +00:00