rust: bits: always inline functions using build_assert with arguments
`build_assert` relies on the compiler to optimize out its error path.
Functions using it with its arguments must thus always be inlined,
otherwise the error path of `build_assert` might not be optimized out,
triggering a build error.
Cc: stable@vger.kernel.org
Fixes: cc84ef3b88 ("rust: bits: add support for bits/genmask macros")
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com>
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Link: https://patch.msgid.link/20251208-io-build-assert-v3-4-98aded02c1ea@nvidia.com
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
This commit is contained in:
parent
ac3c50b9a2
commit
09c3c9112d
|
|
@ -27,7 +27,8 @@ macro_rules! impl_bit_fn {
|
||||||
///
|
///
|
||||||
/// This version is the default and should be used if `n` is known at
|
/// This version is the default and should be used if `n` is known at
|
||||||
/// compile time.
|
/// compile time.
|
||||||
#[inline]
|
// Always inline to optimize out error path of `build_assert`.
|
||||||
|
#[inline(always)]
|
||||||
pub const fn [<bit_ $ty>](n: u32) -> $ty {
|
pub const fn [<bit_ $ty>](n: u32) -> $ty {
|
||||||
build_assert!(n < <$ty>::BITS);
|
build_assert!(n < <$ty>::BITS);
|
||||||
(1 as $ty) << n
|
(1 as $ty) << n
|
||||||
|
|
@ -75,7 +76,8 @@ macro_rules! impl_genmask_fn {
|
||||||
/// This version is the default and should be used if the range is known
|
/// This version is the default and should be used if the range is known
|
||||||
/// at compile time.
|
/// at compile time.
|
||||||
$(#[$genmask_ex])*
|
$(#[$genmask_ex])*
|
||||||
#[inline]
|
// Always inline to optimize out error path of `build_assert`.
|
||||||
|
#[inline(always)]
|
||||||
pub const fn [<genmask_ $ty>](range: RangeInclusive<u32>) -> $ty {
|
pub const fn [<genmask_ $ty>](range: RangeInclusive<u32>) -> $ty {
|
||||||
let start = *range.start();
|
let start = *range.start();
|
||||||
let end = *range.end();
|
let end = *range.end();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue