From 3d7f8b4e5b650efc628de9bf4bd5246d3493d261 Mon Sep 17 00:00:00 2001 From: DianQK Date: Wed, 14 Feb 2024 12:09:28 +0800 Subject: Get all variants to eliminate the default branching if we cannot get the layout of type --- compiler/rustc_mir_transform/src/uninhabited_enum_branching.rs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'compiler/rustc_mir_transform/src') diff --git a/compiler/rustc_mir_transform/src/uninhabited_enum_branching.rs b/compiler/rustc_mir_transform/src/uninhabited_enum_branching.rs index d3408d4882f..0ab60259732 100644 --- a/compiler/rustc_mir_transform/src/uninhabited_enum_branching.rs +++ b/compiler/rustc_mir_transform/src/uninhabited_enum_branching.rs @@ -95,6 +95,12 @@ impl<'tcx> MirPass<'tcx> for UninhabitedEnumBranching { let mut allowed_variants = if let Ok(layout) = layout { variant_discriminants(&layout, discriminant_ty, tcx) + } else if let Some(variant_range) = discriminant_ty.variant_range(tcx) { + variant_range + .map(|variant| { + discriminant_ty.discriminant_for_variant(tcx, variant).unwrap().val + }) + .collect() } else { continue; }; -- cgit 1.4.1-3-g733a5