diff options
| author | Oli Scherer <github333195615777966@oli-obk.de> | 2025-07-29 08:43:10 +0000 |
|---|---|---|
| committer | Oli Scherer <github333195615777966@oli-obk.de> | 2025-07-29 14:17:48 +0000 |
| commit | 219bad49461f5c9fc318732a73a05af5d198fed2 (patch) | |
| tree | 1489e1b4745725606f0de94a19fc13cf6e6989b7 /compiler | |
| parent | 75bdbf25e39f073b35eadedcf575affac7762a86 (diff) | |
| download | rust-219bad49461f5c9fc318732a73a05af5d198fed2.tar.gz rust-219bad49461f5c9fc318732a73a05af5d198fed2.zip | |
Reuse `sign_extend` helper
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_abi/src/layout.rs | 4 | ||||
| -rw-r--r-- | compiler/rustc_middle/src/ty/util.rs | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/compiler/rustc_abi/src/layout.rs b/compiler/rustc_abi/src/layout.rs index 90c63bc9db3..c2405553756 100644 --- a/compiler/rustc_abi/src/layout.rs +++ b/compiler/rustc_abi/src/layout.rs @@ -769,7 +769,6 @@ impl<Cx: HasDataLayout> LayoutCalculator<Cx> { let discr_type = repr.discr_type(); let discr_int = Integer::from_attr(dl, discr_type); - let bits = discr_int.size().bits(); // Because we can only represent one range of valid values, we'll look for the // largest range of invalid values and pick everything else as the range of valid // values. @@ -780,7 +779,8 @@ impl<Cx: HasDataLayout> LayoutCalculator<Cx> { .map(|(_, val)| { if discr_type.is_signed() { // sign extend the raw representation to be an i128 - (val << (128 - bits)) >> (128 - bits) + // FIXME: do this at the discriminant iterator creation sites + discr_int.size().sign_extend(val as u128) } else { val } diff --git a/compiler/rustc_middle/src/ty/util.rs b/compiler/rustc_middle/src/ty/util.rs index 174892c6f4d..a7d07adf78f 100644 --- a/compiler/rustc_middle/src/ty/util.rs +++ b/compiler/rustc_middle/src/ty/util.rs @@ -32,7 +32,7 @@ use crate::ty::{ #[derive(Copy, Clone, Debug)] pub struct Discr<'tcx> { - /// Bit representation of the discriminant (e.g., `-128i8` is `0xFF_u128`). + /// Bit representation of the discriminant (e.g., `-1i8` is `0xFF_u128`). pub val: u128, pub ty: Ty<'tcx>, } |
