rust/compiler
bors 015a824f2d Auto merge of #99762 - Nilstrieb:unreachable-prop, r=oli-obk
UnreachableProp: Preserve unreachable branches for multiple targets

Before, UnreachablePropagation removed all unreachable branches. This was a pessimization, as it removed information about reachability that was used later in the optimization pipeline.

For example, this code
```rust
pub enum Two { A, B }
pub fn identity(x: Two) -> Two {
    match x {
        Two::A => Two::A,
        Two::B => Two::B,
    }
}
```

basically has `switchInt() -> [0: 0, 1: 1, otherwise: unreachable]` for the match. This allows it to be transformed into a simple `x`. If we remove the unreachable branch, the transformation becomes illegal.

This was the problem keeping `UnreachablePropagation` from being enabled, so we can enable it now.

Something similar already happened in #77800, but it did not show a perf improvement there. Let's try it again anyways!

Fixes #68105, although that issue has been fixed for a long time (see #77680).
2022-08-22 20:28:16 +00:00
..
rustc
rustc_apfloat Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_arena Rollup merge of #100822 - WaffleLapkin:no_offset_question_mark, r=scottmcm 2022-08-21 16:54:07 +02:00
rustc_ast Use AttrVec in more places. 2022-08-22 07:35:33 +10:00
rustc_ast_lowering Use AttrVec in more places. 2022-08-22 07:35:33 +10:00
rustc_ast_passes Replace #[error(..)] etc. to #[diag(..)] 2022-08-22 01:24:47 +09:00
rustc_ast_pretty Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_attr
rustc_borrowck get rid of RefCell in TransitiveRelation 2022-08-22 18:08:46 +08:00
rustc_builtin_macros Rollup merge of #100694 - finalchild:ast-passes-diag, r=TaKO8Ki 2022-08-22 11:45:44 +05:30
rustc_codegen_cranelift Rollup merge of #100822 - WaffleLapkin:no_offset_question_mark, r=scottmcm 2022-08-21 16:54:07 +02:00
rustc_codegen_gcc Replace most uses of pointer::offset with add and sub 2022-08-21 02:21:41 +04:00
rustc_codegen_llvm Rollup merge of #100460 - cuviper:drop-llvm-12, r=nagisa 2022-08-16 06:05:57 +02:00
rustc_codegen_ssa Rollup merge of #100208 - RalfJung:dyn-upcast-nop, r=petrochenkov 2022-08-19 12:26:41 +05:30
rustc_const_eval Replace #[lint/warning/error] with #[diag] 2022-08-21 09:17:43 +02:00
rustc_data_structures get rid of RefCell in TransitiveRelation 2022-08-22 18:08:46 +08:00
rustc_driver Use AttrVec in more places. 2022-08-22 07:35:33 +10:00
rustc_error_codes Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_error_messages Rollup merge of #100713 - Xiretza:parser-expr-session-diagnostics, r=estebank 2022-08-22 20:34:14 +05:30
rustc_errors Add Handler::struct_diagnostic() 2022-08-21 09:17:43 +02:00
rustc_expand Use AttrVec in more places. 2022-08-22 07:35:33 +10:00
rustc_feature Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_fs_util Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_graphviz Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_hir Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_hir_pretty Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_incremental
rustc_index Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_infer re-base and use OutlivesEnvironment::with_bounds 2022-08-22 18:36:02 +08:00
rustc_interface Replace #[lint/warning/error] with #[diag] 2022-08-21 09:17:43 +02:00
rustc_lexer Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_lint Use DiagnosticMessage for BufferedEarlyLint.msg 2022-08-22 00:57:21 +09:00
rustc_lint_defs Tidy 2022-08-22 00:57:21 +09:00
rustc_llvm Auto merge of #100627 - krasimirgg:lto-llvm-16, r=cuviper 2022-08-21 07:19:49 +00:00
rustc_log Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_macros Fix build_format not unescaping braces properly 2022-08-22 01:11:59 +09:00
rustc_metadata Auto merge of #100209 - cjgillot:source-file-index, r=estebank 2022-08-19 15:31:25 +00:00
rustc_middle Auto merge of #100676 - lcnr:implied-bounds-yay, r=nikomatsakis 2022-08-22 06:10:26 +00:00
rustc_mir_build Auto merge of #100881 - Dylan-DPC:rollup-q9rr658, r=Dylan-DPC 2022-08-22 17:46:57 +00:00
rustc_mir_dataflow use type alias impl trait in outlives_bounds::InferCtxtExt 2022-08-22 18:10:28 +08:00
rustc_mir_transform Enable UnreachablePropagation under mir-opt-level >= 2 2022-08-21 21:15:28 +02:00
rustc_monomorphize Minor syntax and formatting update to doc comment 2022-08-19 10:53:18 -07:00
rustc_parse Rollup merge of #100713 - Xiretza:parser-expr-session-diagnostics, r=estebank 2022-08-22 20:34:14 +05:30
rustc_parse_format Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_passes Replace #[lint/warning/error] with #[diag] 2022-08-21 09:17:43 +02:00
rustc_plugin_impl
rustc_privacy Replace #[lint/warning/error] with #[diag] 2022-08-21 09:17:43 +02:00
rustc_query_impl Rollup merge of #100723 - 5225225:the-easy-ones, r=compiler-errors 2022-08-20 07:09:03 +02:00
rustc_query_system Auto merge of #100441 - nnethercote:shrink-ast-Attribute, r=petrochenkov 2022-08-16 07:54:22 +00:00
rustc_resolve Rollup merge of #100592 - cjgillot:debug-import-kind, r=TaKO8Ki 2022-08-19 12:26:44 +05:30
rustc_save_analysis
rustc_serialize Rollup merge of #100822 - WaffleLapkin:no_offset_question_mark, r=scottmcm 2022-08-21 16:54:07 +02:00
rustc_session Fix incorrect return type of emit_fatal 2022-08-22 01:11:59 +09:00
rustc_smir Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_span Show absolute line numbers if span is outside relative span 2022-08-22 14:06:55 +02:00
rustc_symbol_mangling
rustc_target Rollup merge of #100636 - cutsoy:revert-77716, r=davidtwco 2022-08-20 19:45:13 +02:00
rustc_trait_selection Auto merge of #100868 - Dylan-DPC:rollup-a1hfi1r, r=Dylan-DPC 2022-08-22 08:32:41 +00:00
rustc_traits Add diagnostic translation lints to crates that don't emit them 2022-08-18 19:29:02 +01:00
rustc_transmute ADD - diagnostic lints to rustc_transmute 2022-08-21 09:17:09 -04:00
rustc_ty_utils implied_bounds: clarify our assumptions 2022-08-17 12:22:32 +02:00
rustc_type_ir ADD - diagnostic lints to type_ir 2022-08-18 13:33:03 -04:00
rustc_typeck Rollup merge of #100336 - fee1-dead-contrib:fix-wf-const-trait, r=oli-obk 2022-08-22 20:34:13 +05:30