From: Ralf Jung Date: Thu, 5 Dec 2019 13:20:53 +0000 (+0100) Subject: codegen: mark invalid SetDiscriminant unreachable X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=8655ad5936dda66a9123251c4c3fa43b7e5b80a4;p=rust.git codegen: mark invalid SetDiscriminant unreachable --- diff --git a/src/librustc_codegen_ssa/mir/place.rs b/src/librustc_codegen_ssa/mir/place.rs index e2507394ce6..4b8819d11f4 100644 --- a/src/librustc_codegen_ssa/mir/place.rs +++ b/src/librustc_codegen_ssa/mir/place.rs @@ -333,6 +333,7 @@ pub fn codegen_set_discr>( variant_index: VariantIdx ) { if self.layout.for_variant(bx.cx(), variant_index).abi.is_uninhabited() { + bx.unreachable(); return; } match self.layout.variants { @@ -488,9 +489,9 @@ pub fn codegen_place( }, Err(_) => { // This is unreachable as long as runtime - // and compile-time agree on values + // and compile-time agree perfectly. // With floats that won't always be true, - // so we generate an abort. + // so we generate a (safe) abort. bx.abort(); let llval = bx.cx().const_undef( bx.cx().type_ptr_to(bx.cx().backend_type(layout))