]> git.lizzy.rs Git - rust.git/commitdiff
Abi::is_signed: assert that we are a Scalar
authorRalf Jung <post@ralfj.de>
Fri, 20 Mar 2020 16:05:00 +0000 (17:05 +0100)
committerRalf Jung <post@ralfj.de>
Fri, 20 Mar 2020 16:05:00 +0000 (17:05 +0100)
src/librustc_mir/interpret/operand.rs
src/librustc_target/abi/mod.rs

index 316cf2ee41918fe067a04fec8c4b97300e3b780c..eacffc9dbbdba2b6ae97a10b9d1bf6cdc2befd16 100644 (file)
@@ -603,7 +603,7 @@ pub fn read_discriminant(
                     .not_undef()
                     .and_then(|raw_discr| self.force_bits(raw_discr, discr_val.layout.size))
                     .map_err(|_| err_ub!(InvalidDiscriminant(raw_discr.erase_tag())))?;
-                let real_discr = if discr_val.layout.ty.is_signed() {
+                let real_discr = if discr_val.layout.abi.is_signed() {
                     // going from layout tag type to typeck discriminant type
                     // requires first sign extending with the discriminant layout
                     let sexted = sign_extend(bits_discr, discr_val.layout.size) as i128;
index 2f8bbd66c322b2606b4f5fbb53fa25841f893b5e..ade8499609cd46732deb7d7033c43938b3c7edd0 100644 (file)
@@ -748,7 +748,7 @@ pub fn is_signed(&self) -> bool {
                 Primitive::Int(_, signed) => signed,
                 _ => false,
             },
-            _ => false,
+            _ => panic!("`is_signed` on non-scalar ABI {:?}", self),
         }
     }