diff options
| author | bors <bors@rust-lang.org> | 2023-04-16 13:12:53 +0000 | 
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-04-16 13:12:53 +0000 | 
| commit | 8a778ca1e35e4a8df95c00d800100d95e63e7722 (patch) | |
| tree | f74a5282fe636aa9e51d238b2cb46a9092a5c38b /compiler/rustc_abi/src/lib.rs | |
| parent | 1b50ea9abb65b33aac7285dbe36b37f9e33381a2 (diff) | |
| parent | 38215fb77aca2dcd25277ff7b3093ea56e4e8ffb (diff) | |
| download | rust-8a778ca1e35e4a8df95c00d800100d95e63e7722.tar.gz rust-8a778ca1e35e4a8df95c00d800100d95e63e7722.zip | |
Auto merge of #110405 - fee1-dead-contrib:rollup-9rkree6, r=fee1-dead
Rollup of 4 pull requests
Successful merges:
 - #110397 (Move some utils out of `rustc_const_eval`)
 - #110398 (use matches! macro in more places)
 - #110400 (more clippy fixes: clippy::{iter_cloned_collect, unwarp_or_else_defau…)
 - #110402 (Remove the loop in `Align::from_bytes`)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_abi/src/lib.rs')
| -rw-r--r-- | compiler/rustc_abi/src/lib.rs | 11 | 
1 files changed, 4 insertions, 7 deletions
| diff --git a/compiler/rustc_abi/src/lib.rs b/compiler/rustc_abi/src/lib.rs index b0c0ee942ea..7a3defd2a5d 100644 --- a/compiler/rustc_abi/src/lib.rs +++ b/compiler/rustc_abi/src/lib.rs @@ -665,15 +665,12 @@ impl Align { format!("`{}` is too large", align) } - let mut bytes = align; - let mut pow2: u8 = 0; - while (bytes & 1) == 0 { - pow2 += 1; - bytes >>= 1; - } - if bytes != 1 { + let tz = align.trailing_zeros(); + if align != (1 << tz) { return Err(not_power_of_2(align)); } + + let pow2 = tz as u8; if pow2 > Self::MAX.pow2 { return Err(too_large(align)); } | 
