diff options
-rw-r--r-- | src/ir/analysis/derive_copy.rs | 8 | ||||
-rw-r--r-- | src/ir/analysis/derive_debug.rs | 8 | ||||
-rw-r--r-- | src/ir/analysis/derive_default.rs | 8 | ||||
-rw-r--r-- | src/ir/analysis/derive_hash.rs | 8 | ||||
-rw-r--r-- | src/ir/analysis/derive_partial_eq_or_partial_ord.rs | 8 |
5 files changed, 40 insertions, 0 deletions
diff --git a/src/ir/analysis/derive_copy.rs b/src/ir/analysis/derive_copy.rs index ef01c65a..fa9cd6e0 100644 --- a/src/ir/analysis/derive_copy.rs +++ b/src/ir/analysis/derive_copy.rs @@ -266,6 +266,14 @@ impl<'ctx> MonotoneFramework for CannotDeriveCopy<'ctx> { self.is_not_copy(data.ty()) } Field::Bitfields(ref bfu) => { + if bfu.layout().align > RUST_DERIVE_IN_ARRAY_LIMIT { + trace!( + " we cannot derive Copy for a bitfield larger then \ + the limit" + ); + return true; + } + bfu.bitfields().iter().any(|b| { self.is_not_copy(b.ty()) }) diff --git a/src/ir/analysis/derive_debug.rs b/src/ir/analysis/derive_debug.rs index 2bfaff71..7df745c9 100644 --- a/src/ir/analysis/derive_debug.rs +++ b/src/ir/analysis/derive_debug.rs @@ -268,6 +268,14 @@ impl<'ctx> MonotoneFramework for CannotDeriveDebug<'ctx> { self.is_not_debug(data.ty()) } Field::Bitfields(ref bfu) => { + if bfu.layout().align > RUST_DERIVE_IN_ARRAY_LIMIT { + trace!( + " we cannot derive Debug for a bitfield larger then \ + the limit" + ); + return true; + } + bfu.bitfields().iter().any(|b| { self.is_not_debug(b.ty()) }) diff --git a/src/ir/analysis/derive_default.rs b/src/ir/analysis/derive_default.rs index 96805863..7acbe04a 100644 --- a/src/ir/analysis/derive_default.rs +++ b/src/ir/analysis/derive_default.rs @@ -308,6 +308,14 @@ impl<'ctx> MonotoneFramework for CannotDeriveDefault<'ctx> { self.is_not_default(data.ty()) } Field::Bitfields(ref bfu) => { + if bfu.layout().align > RUST_DERIVE_IN_ARRAY_LIMIT { + trace!( + " we cannot derive Default for a bitfield larger then \ + the limit" + ); + return true; + } + bfu.bitfields().iter().any(|b| { !self.ctx.whitelisted_items().contains( &b.ty(), diff --git a/src/ir/analysis/derive_hash.rs b/src/ir/analysis/derive_hash.rs index 80ea0abf..5313cae3 100644 --- a/src/ir/analysis/derive_hash.rs +++ b/src/ir/analysis/derive_hash.rs @@ -283,6 +283,14 @@ impl<'ctx> MonotoneFramework for CannotDeriveHash<'ctx> { self.cannot_derive_hash.contains(&data.ty()) } Field::Bitfields(ref bfu) => { + if bfu.layout().align > RUST_DERIVE_IN_ARRAY_LIMIT { + trace!( + " we cannot derive Hash for a bitfield larger then \ + the limit" + ); + return true; + } + bfu.bitfields().iter().any(|b| { !self.ctx.whitelisted_items().contains( &b.ty(), diff --git a/src/ir/analysis/derive_partial_eq_or_partial_ord.rs b/src/ir/analysis/derive_partial_eq_or_partial_ord.rs index 1d4a5939..1c3ab059 100644 --- a/src/ir/analysis/derive_partial_eq_or_partial_ord.rs +++ b/src/ir/analysis/derive_partial_eq_or_partial_ord.rs @@ -292,6 +292,14 @@ impl<'ctx> MonotoneFramework for CannotDerivePartialEqOrPartialOrd<'ctx> { ) } Field::Bitfields(ref bfu) => { + if bfu.layout().align > RUST_DERIVE_IN_ARRAY_LIMIT { + trace!( + " we cannot derive PartialEq for a bitfield larger then \ + the limit" + ); + return true; + } + bfu.bitfields().iter().any(|b| { !self.ctx.whitelisted_items().contains( &b.ty(), |