You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Auto merge of #83605 - RalfJung:unaligned, r=petrochenkov
unaligned_references: align(N) fields in packed(N) structs are fine
This removes some false positives from the unaligned_references lint: in a `repr(packed(2))` struct, fields of alignment 2 (and less) are guaranteed to be properly aligned, so we do not have to consider them "disaligned".
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
15
15
16
16
error: reference to packed field is unaligned
17
-
--> $DIR/unaligned_references.rs:17:17
17
+
--> $DIR/unaligned_references.rs:24:17
18
18
|
19
19
LL | let _ = &good.data;
20
20
| ^^^^^^^^^^
@@ -24,7 +24,7 @@ LL | let _ = &good.data;
24
24
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
25
25
26
26
error: reference to packed field is unaligned
27
-
--> $DIR/unaligned_references.rs:20:17
27
+
--> $DIR/unaligned_references.rs:27:17
28
28
|
29
29
LL | let _ = &good.data as *const _;
30
30
| ^^^^^^^^^^
@@ -34,7 +34,7 @@ LL | let _ = &good.data as *const _;
34
34
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
45
45
46
46
error: reference to packed field is unaligned
47
-
--> $DIR/unaligned_references.rs:25:17
47
+
--> $DIR/unaligned_references.rs:32:17
48
48
|
49
49
LL | let _ = good.data.clone();
50
50
| ^^^^^^^^^
@@ -54,7 +54,7 @@ LL | let _ = good.data.clone();
54
54
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
55
55
56
56
error: reference to packed field is unaligned
57
-
--> $DIR/unaligned_references.rs:28:17
57
+
--> $DIR/unaligned_references.rs:35:17
58
58
|
59
59
LL | let _ = &good.data2[0];
60
60
| ^^^^^^^^^^^^^^
@@ -63,5 +63,15 @@ LL | let _ = &good.data2[0];
63
63
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
64
64
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
65
65
66
-
error: aborting due to 6 previous errors
66
+
error: reference to packed field is unaligned
67
+
--> $DIR/unaligned_references.rs:45:17
68
+
|
69
+
LL | let _ = &packed2.x;
70
+
| ^^^^^^^^^^
71
+
|
72
+
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
73
+
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
74
+
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
= note: `#[warn(unaligned_references)]` on by default
8
+
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
9
+
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
10
+
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
Copy file name to clipboardExpand all lines: src/test/ui/packed/packed-struct-borrow-element.stderr
+1-11
Original file line number
Diff line number
Diff line change
@@ -19,15 +19,5 @@ LL | let brw = &foo.baz;
19
19
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
20
20
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
21
21
22
-
warning: reference to packed field is unaligned
23
-
--> $DIR/packed-struct-borrow-element.rs:35:15
24
-
|
25
-
LL | let brw = &foo.baz;
26
-
| ^^^^^^^^
27
-
|
28
-
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
29
-
= note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
30
-
= note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
0 commit comments