diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2020-03-21 05:33:35 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-03-21 05:33:35 +0100 |
| commit | 937ca434b1478f185a8b1335e395a7ce30ab7ee2 (patch) | |
| tree | 0f86fccc504dfed748bab4fdf522c99b8f3dd112 | |
| parent | 832daf720a34c87d67c9c7b40fda03a1138f314b (diff) | |
| parent | 5930da446562ed51f4a3551cf81525e296bc8665 (diff) | |
| download | rust-937ca434b1478f185a8b1335e395a7ce30ab7ee2.tar.gz rust-937ca434b1478f185a8b1335e395a7ce30ab7ee2.zip | |
Rollup merge of #70189 - RalfJung:is_signed, r=eddyb
Abi::is_signed: assert that we are a Scalar A bit more sanity checking, suggested by @eddyb. This makes this method actually "safer" than `TyS::is_signed`, so I made sure Miri consistently uses the `Abi` version. Though I am not sure if this would have caught the mistake where the layout of a zero-sized enum was asked for its sign. r? @eddyb
| -rw-r--r-- | src/librustc_mir/interpret/operand.rs | 2 | ||||
| -rw-r--r-- | src/librustc_target/abi/mod.rs | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/src/librustc_mir/interpret/operand.rs b/src/librustc_mir/interpret/operand.rs index b39058405f5..4c82172ae45 100644 --- a/src/librustc_mir/interpret/operand.rs +++ b/src/librustc_mir/interpret/operand.rs @@ -604,7 +604,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { .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; diff --git a/src/librustc_target/abi/mod.rs b/src/librustc_target/abi/mod.rs index afa30e7e632..635fb80b659 100644 --- a/src/librustc_target/abi/mod.rs +++ b/src/librustc_target/abi/mod.rs @@ -751,7 +751,7 @@ impl Abi { Primitive::Int(_, signed) => signed, _ => false, }, - _ => false, + _ => panic!("`is_signed` on non-scalar ABI {:?}", self), } } |
