Skip to content

Commit ed3711e

Browse files
committed
use div_ceil instead of manual logic
1 parent 226b0fb commit ed3711e

File tree

12 files changed

+17
-18
lines changed

12 files changed

+17
-18
lines changed

compiler/rustc_abi/src/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -527,8 +527,7 @@ impl Size {
527527
/// not a multiple of 8.
528528
pub fn from_bits(bits: impl TryInto<u64>) -> Size {
529529
let bits = bits.try_into().ok().unwrap();
530-
// Avoid potential overflow from `bits + 7`.
531-
Size { raw: bits / 8 + ((bits % 8) + 7) / 8 }
530+
Size { raw: bits.div_ceil(8) }
532531
}
533532

534533
#[inline]

compiler/rustc_codegen_llvm/src/va_arg.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,10 @@ fn emit_aapcs_va_arg<'ll, 'tcx>(
172172

173173
let gr_type = target_ty.is_any_ptr() || target_ty.is_integral();
174174
let (reg_off, reg_top, slot_size) = if gr_type {
175-
let nreg = (layout.size.bytes() + 7) / 8;
175+
let nreg = layout.size.bytes().div_ceil(8);
176176
(gr_offs, gr_top, nreg * 8)
177177
} else {
178-
let nreg = (layout.size.bytes() + 15) / 16;
178+
let nreg = layout.size.bytes().div_ceil(16);
179179
(vr_offs, vr_top, nreg * 16)
180180
};
181181

compiler/rustc_index/src/bit_set.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1744,13 +1744,13 @@ impl<R: Idx, C: Idx> SparseBitMatrix<R, C> {
17441744

17451745
#[inline]
17461746
fn num_words<T: Idx>(domain_size: T) -> usize {
1747-
(domain_size.index() + WORD_BITS - 1) / WORD_BITS
1747+
domain_size.index().div_ceil(WORD_BITS)
17481748
}
17491749

17501750
#[inline]
17511751
fn num_chunks<T: Idx>(domain_size: T) -> usize {
17521752
assert!(domain_size.index() > 0);
1753-
(domain_size.index() + CHUNK_BITS - 1) / CHUNK_BITS
1753+
domain_size.index().div_ceil(CHUNK_BITS)
17541754
}
17551755

17561756
#[inline]

compiler/rustc_passes/src/liveness/rwu_table.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ impl RWUTable {
4444
const WORD_RWU_COUNT: usize = Self::WORD_BITS / Self::RWU_BITS;
4545

4646
pub(super) fn new(live_nodes: usize, vars: usize) -> RWUTable {
47-
let live_node_words = (vars + Self::WORD_RWU_COUNT - 1) / Self::WORD_RWU_COUNT;
47+
let live_node_words = vars.div_ceil(Self::WORD_RWU_COUNT);
4848
Self { live_nodes, vars, live_node_words, words: vec![0u8; live_node_words * live_nodes] }
4949
}
5050

compiler/rustc_serialize/src/leb128.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use crate::serialize::Decoder;
77
/// Returns the length of the longest LEB128 encoding for `T`, assuming `T` is an integer type
88
pub const fn max_leb128_len<T>() -> usize {
99
// The longest LEB128 encoding for an integer uses 7 bits per byte.
10-
(size_of::<T>() * 8 + 6) / 7
10+
(size_of::<T>() * 8).div_ceil(7)
1111
}
1212

1313
/// Returns the length of the longest LEB128 encoding of all supported integer types.

compiler/rustc_span/src/edit_distance.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ pub fn edit_distance_with_substrings(a: &str, b: &str, limit: usize) -> Option<u
130130
1 // Exact substring match, but not a total word match so return non-zero
131131
} else if !big_len_diff {
132132
// Not a big difference in length, discount cost of length difference
133-
score + (len_diff + 1) / 2
133+
score + len_diff.div_ceil(2)
134134
} else {
135135
// A big difference in length, add back the difference in length to the score
136136
score + len_diff

compiler/rustc_target/src/callconv/x86.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ pub(crate) fn fill_inregs<'a, Ty, C>(
171171
continue;
172172
}
173173

174-
let size_in_regs = (arg.layout.size.bits() + 31) / 32;
174+
let size_in_regs = arg.layout.size.bits().div_ceil(32);
175175

176176
if size_in_regs == 0 {
177177
continue;

compiler/rustc_target/src/callconv/x86_64.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ where
9595
Ok(())
9696
}
9797

98-
let n = ((arg.layout.size.bytes() + 7) / 8) as usize;
98+
let n = arg.layout.size.bytes().div_ceil(8) as usize;
9999
if n > MAX_EIGHTBYTES {
100100
return Err(Memory);
101101
}

compiler/rustc_target/src/callconv/xtensa.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ where
5454
// Determine the number of GPRs needed to pass the current argument
5555
// according to the ABI. 2*XLen-aligned varargs are passed in "aligned"
5656
// register pairs, so may consume 3 registers.
57-
let mut needed_arg_gprs = (size + 32 - 1) / 32;
57+
let mut needed_arg_gprs = size.div_ceil(32);
5858
if needed_align == 64 {
5959
needed_arg_gprs += *arg_gprs_left % 2;
6060
}

library/core/src/slice/sort/stable/drift.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ fn merge_tree_scale_factor(n: usize) -> u64 {
158158
panic!("Platform not supported");
159159
}
160160

161-
((1 << 62) + n as u64 - 1) / n as u64
161+
(1u64 << 62).div_ceil(n as u64)
162162
}
163163

164164
// Note: merge_tree_depth output is < 64 when left < right as f*x and f*y must
@@ -182,7 +182,7 @@ fn sqrt_approx(n: usize) -> usize {
182182
// Finally we note that the exponentiation / division can be done directly
183183
// with shifts. We OR with 1 to avoid zero-checks in the integer log.
184184
let ilog = (n | 1).ilog2();
185-
let shift = (1 + ilog) / 2;
185+
let shift = ilog.div_ceil(2);
186186
((1 << shift) + (n >> shift)) / 2
187187
}
188188

library/core/src/str/iter.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ impl<'a> Iterator for Chars<'a> {
102102
// `(len + 3)` can't overflow, because we know that the `slice::Iter`
103103
// belongs to a slice in memory which has a maximum length of
104104
// `isize::MAX` (that's well below `usize::MAX`).
105-
((len + 3) / 4, Some(len))
105+
(len.div_ceil(4), Some(len))
106106
}
107107

108108
#[inline]
@@ -1532,11 +1532,11 @@ impl<'a> Iterator for EncodeUtf16<'a> {
15321532
// belongs to a slice in memory which has a maximum length of
15331533
// `isize::MAX` (that's well below `usize::MAX`)
15341534
if self.extra == 0 {
1535-
((len + 2) / 3, Some(len))
1535+
(len.div_ceil(3), Some(len))
15361536
} else {
15371537
// We're in the middle of a surrogate pair, so add the remaining
15381538
// surrogate to the bounds.
1539-
((len + 2) / 3 + 1, Some(len + 1))
1539+
(len.div_ceil(3) + 1, Some(len + 1))
15401540
}
15411541
}
15421542
}

library/portable-simd/crates/core_simd/src/lane_count.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ pub struct LaneCount<const N: usize>;
88

99
impl<const N: usize> LaneCount<N> {
1010
/// The number of bytes in a bitmask with this many lanes.
11-
pub const BITMASK_LEN: usize = (N + 7) / 8;
11+
pub const BITMASK_LEN: usize = N.div_ceil(8);
1212
}
1313

1414
/// Statically guarantees that a lane count is marked as supported.

0 commit comments

Comments
 (0)