make unaligned_reference warning visible in future compat report
This commit is contained in:
parent
e30d6d9096
commit
1a6c2ff4fd
10 changed files with 451 additions and 0 deletions
|
@ -1141,6 +1141,7 @@ declare_lint! {
|
||||||
"detects unaligned references to fields of packed structs",
|
"detects unaligned references to fields of packed structs",
|
||||||
@future_incompatible = FutureIncompatibleInfo {
|
@future_incompatible = FutureIncompatibleInfo {
|
||||||
reference: "issue #82523 <https://github.com/rust-lang/rust/issues/82523>",
|
reference: "issue #82523 <https://github.com/rust-lang/rust/issues/82523>",
|
||||||
|
reason: FutureIncompatibilityReason::FutureReleaseErrorReportNow,
|
||||||
};
|
};
|
||||||
report_in_external_macro
|
report_in_external_macro
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,3 +102,55 @@ LL | match (&u2.a,) { (_,) => { } }
|
||||||
error: aborting due to 11 previous errors
|
error: aborting due to 11 previous errors
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0133`.
|
For more information about this error, try `rustc --explain E0133`.
|
||||||
|
Future incompatibility report: Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/issue-53114-safety-checks.rs:23:13
|
||||||
|
|
|
||||||
|
LL | let _ = &p.b;
|
||||||
|
| ^^^^
|
||||||
|
|
|
||||||
|
= note: `#[deny(unaligned_references)]` on by default
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/issue-53114-safety-checks.rs:29:17
|
||||||
|
|
|
||||||
|
LL | let (_,) = (&p.b,);
|
||||||
|
| ^^^^
|
||||||
|
|
|
||||||
|
= note: `#[deny(unaligned_references)]` on by default
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/issue-53114-safety-checks.rs:39:11
|
||||||
|
|
|
||||||
|
LL | match &p.b { _ => { } }
|
||||||
|
| ^^^^
|
||||||
|
|
|
||||||
|
= note: `#[deny(unaligned_references)]` on by default
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/issue-53114-safety-checks.rs:45:12
|
||||||
|
|
|
||||||
|
LL | match (&p.b,) { (_,) => { } }
|
||||||
|
| ^^^^
|
||||||
|
|
|
||||||
|
= note: `#[deny(unaligned_references)]` on by default
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
|
|
@ -13,3 +13,17 @@ LL | println!("{}", foo.x);
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
Future incompatibility report: Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/repr_packed.rs:21:24
|
||||||
|
|
|
||||||
|
LL | println!("{}", foo.x);
|
||||||
|
| ^^^^^
|
||||||
|
|
|
||||||
|
= note: `#[deny(unaligned_references)]` on by default
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
= note: this error originates in the macro `$crate::format_args_nl` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
|
|
@ -45,3 +45,67 @@ LL | #[derive(PartialEq)]
|
||||||
|
|
||||||
error: aborting due to 4 previous errors
|
error: aborting due to 4 previous errors
|
||||||
|
|
||||||
|
Future incompatibility report: Future breakage diagnostic:
|
||||||
|
error: `#[derive]` can't be used on a `#[repr(packed)]` struct with type or const parameters (error E0133)
|
||||||
|
--> $DIR/deriving-with-repr-packed.rs:8:16
|
||||||
|
|
|
||||||
|
LL | #[derive(Copy, Clone, PartialEq, Eq)]
|
||||||
|
| ^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/deriving-with-repr-packed.rs:1:9
|
||||||
|
|
|
||||||
|
LL | #![deny(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: `#[derive]` can't be used on a `#[repr(packed)]` struct with type or const parameters (error E0133)
|
||||||
|
--> $DIR/deriving-with-repr-packed.rs:8:23
|
||||||
|
|
|
||||||
|
LL | #[derive(Copy, Clone, PartialEq, Eq)]
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/deriving-with-repr-packed.rs:1:9
|
||||||
|
|
|
||||||
|
LL | #![deny(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: `#[derive]` can't be used on a `#[repr(packed)]` struct that does not derive Copy (error E0133)
|
||||||
|
--> $DIR/deriving-with-repr-packed.rs:16:10
|
||||||
|
|
|
||||||
|
LL | #[derive(PartialEq, Eq)]
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/deriving-with-repr-packed.rs:1:9
|
||||||
|
|
|
||||||
|
LL | #![deny(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: `#[derive]` can't be used on a `#[repr(packed)]` struct that does not derive Copy (error E0133)
|
||||||
|
--> $DIR/deriving-with-repr-packed.rs:25:10
|
||||||
|
|
|
||||||
|
LL | #[derive(PartialEq)]
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/deriving-with-repr-packed.rs:1:9
|
||||||
|
|
|
||||||
|
LL | #![deny(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
|
|
@ -82,3 +82,122 @@ LL | let _ = &packed2.x;
|
||||||
|
|
||||||
error: aborting due to 7 previous errors
|
error: aborting due to 7 previous errors
|
||||||
|
|
||||||
|
Future incompatibility report: Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/unaligned_references.rs:22:17
|
||||||
|
|
|
||||||
|
LL | let _ = &good.ptr;
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/unaligned_references.rs:1:9
|
||||||
|
|
|
||||||
|
LL | #![deny(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/unaligned_references.rs:24:17
|
||||||
|
|
|
||||||
|
LL | let _ = &good.data;
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/unaligned_references.rs:1:9
|
||||||
|
|
|
||||||
|
LL | #![deny(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/unaligned_references.rs:27:17
|
||||||
|
|
|
||||||
|
LL | let _ = &good.data as *const _;
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/unaligned_references.rs:1:9
|
||||||
|
|
|
||||||
|
LL | #![deny(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/unaligned_references.rs:29:27
|
||||||
|
|
|
||||||
|
LL | let _: *const _ = &good.data;
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/unaligned_references.rs:1:9
|
||||||
|
|
|
||||||
|
LL | #![deny(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/unaligned_references.rs:32:17
|
||||||
|
|
|
||||||
|
LL | let _ = good.data.clone();
|
||||||
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/unaligned_references.rs:1:9
|
||||||
|
|
|
||||||
|
LL | #![deny(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/unaligned_references.rs:35:17
|
||||||
|
|
|
||||||
|
LL | let _ = &good.data2[0];
|
||||||
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/unaligned_references.rs:1:9
|
||||||
|
|
|
||||||
|
LL | #![deny(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/unaligned_references.rs:45:17
|
||||||
|
|
|
||||||
|
LL | let _ = &packed2.x;
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/unaligned_references.rs:1:9
|
||||||
|
|
|
||||||
|
LL | #![deny(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
|
|
@ -29,3 +29,33 @@ LL | | }
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
Future incompatibility report: Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/unaligned_references_external_macro.rs:5:1
|
||||||
|
|
|
||||||
|
LL | / unaligned_references_external_crate::mac! {
|
||||||
|
LL | |
|
||||||
|
LL | | #[repr(packed)]
|
||||||
|
LL | | pub struct X {
|
||||||
|
LL | | pub field: u16
|
||||||
|
LL | | }
|
||||||
|
LL | | }
|
||||||
|
| |_^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/unaligned_references_external_macro.rs:5:1
|
||||||
|
|
|
||||||
|
LL | / unaligned_references_external_crate::mac! {
|
||||||
|
LL | |
|
||||||
|
LL | | #[repr(packed)]
|
||||||
|
LL | | pub struct X {
|
||||||
|
LL | | pub field: u16
|
||||||
|
LL | | }
|
||||||
|
LL | | }
|
||||||
|
| |_^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
= note: this error originates in the macro `unaligned_references_external_crate::mac` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
|
68
src/test/ui/packed/issue-27060-rpass.stderr
Normal file
68
src/test/ui/packed/issue-27060-rpass.stderr
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
Future incompatibility report: Future breakage diagnostic:
|
||||||
|
warning: reference to packed field is unaligned
|
||||||
|
--> $DIR/issue-27060-rpass.rs:15:13
|
||||||
|
|
|
||||||
|
LL | let _ = &good.data; // ok
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/issue-27060-rpass.rs:11:9
|
||||||
|
|
|
||||||
|
LL | #[allow(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
warning: reference to packed field is unaligned
|
||||||
|
--> $DIR/issue-27060-rpass.rs:16:13
|
||||||
|
|
|
||||||
|
LL | let _ = &good.data2[0]; // ok
|
||||||
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/issue-27060-rpass.rs:11:9
|
||||||
|
|
|
||||||
|
LL | #[allow(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
warning: reference to packed field is unaligned
|
||||||
|
--> $DIR/issue-27060-rpass.rs:18:13
|
||||||
|
|
|
||||||
|
LL | let _ = &good.data;
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/issue-27060-rpass.rs:11:9
|
||||||
|
|
|
||||||
|
LL | #[allow(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
warning: reference to packed field is unaligned
|
||||||
|
--> $DIR/issue-27060-rpass.rs:19:13
|
||||||
|
|
|
||||||
|
LL | let _ = &good.data2[0];
|
||||||
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/issue-27060-rpass.rs:11:9
|
||||||
|
|
|
||||||
|
LL | #[allow(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
|
@ -45,3 +45,55 @@ LL | let _ = &good.data2[0];
|
||||||
|
|
||||||
error: aborting due to 4 previous errors
|
error: aborting due to 4 previous errors
|
||||||
|
|
||||||
|
Future incompatibility report: Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/issue-27060.rs:15:13
|
||||||
|
|
|
||||||
|
LL | let _ = &good.data;
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: `#[deny(unaligned_references)]` on by default
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/issue-27060.rs:17:13
|
||||||
|
|
|
||||||
|
LL | let _ = &good.data2[0];
|
||||||
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: `#[deny(unaligned_references)]` on by default
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/issue-27060.rs:20:13
|
||||||
|
|
|
||||||
|
LL | let _ = &good.data;
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: `#[deny(unaligned_references)]` on by default
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
error: reference to packed field is unaligned
|
||||||
|
--> $DIR/issue-27060.rs:22:13
|
||||||
|
|
|
||||||
|
LL | let _ = &good.data2[0];
|
||||||
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: `#[deny(unaligned_references)]` on by default
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
|
|
@ -16,3 +16,20 @@ LL | #[warn(unaligned_references)]
|
||||||
|
|
||||||
warning: 1 warning emitted
|
warning: 1 warning emitted
|
||||||
|
|
||||||
|
Future incompatibility report: Future breakage diagnostic:
|
||||||
|
warning: reference to packed field is unaligned
|
||||||
|
--> $DIR/packed-struct-borrow-element-64bit.rs:15:15
|
||||||
|
|
|
||||||
|
LL | let brw = &foo.baz;
|
||||||
|
| ^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/packed-struct-borrow-element-64bit.rs:12:8
|
||||||
|
|
|
||||||
|
LL | #[warn(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
|
|
@ -27,3 +27,37 @@ LL | let brw = &foo.baz;
|
||||||
|
|
||||||
warning: 2 warnings emitted
|
warning: 2 warnings emitted
|
||||||
|
|
||||||
|
Future incompatibility report: Future breakage diagnostic:
|
||||||
|
warning: reference to packed field is unaligned
|
||||||
|
--> $DIR/packed-struct-borrow-element.rs:26:15
|
||||||
|
|
|
||||||
|
LL | let brw = &foo.baz;
|
||||||
|
| ^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/packed-struct-borrow-element.rs:23:8
|
||||||
|
|
|
||||||
|
LL | #[warn(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
Future breakage diagnostic:
|
||||||
|
warning: reference to packed field is unaligned
|
||||||
|
--> $DIR/packed-struct-borrow-element.rs:31:15
|
||||||
|
|
|
||||||
|
LL | let brw = &foo.baz;
|
||||||
|
| ^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/packed-struct-borrow-element.rs:23:8
|
||||||
|
|
|
||||||
|
LL | #[warn(unaligned_references)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
|
||||||
|
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
|
||||||
|
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue