-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Closed
Labels
A-lintsArea: Lints (warnings about flaws in source code) such as unused_mut.Area: Lints (warnings about flaws in source code) such as unused_mut.C-bugCategory: This is a bug.Category: This is a bug.L-dead_codeLint: dead_codeLint: dead_codeT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
Code
#[repr(C)] // <--
pub struct Foo {
pub i: i16,
align: i16
}
Current output
warning: field `align` is never read
--> src/lib.rs:3:5
|
1 | pub struct Foo {
| --- field in this struct
2 | pub i: i16,
3 | align: i16
| ^^^^^
|
= note: `#[warn(dead_code)]` on by default
Desired output
No warnings, or perhaps a different warning.
Rationale and extra context
This warning is probably triggering because there's no constructor that allows a user to set the align
field on struct Foo
. However, there is still a valid way for a user to construct it: std::mem::zeroed()
. The libc crate contains many structs that must be initialized that way. libc could silence these warnings by #[allow(dead_code)]
, but that's too broad a brush. It would silence many much more serious warnings. Could we please either revert to the previous behavior, or else create a new lint for this that can be separately silenced?
Other cases
No response
Rust Version
rustc 1.80.0-nightly (804421dff 2024-06-07)
binary: rustc
commit-hash: 804421dff5542c9c7da5c60257b5dbc849719505
commit-date: 2024-06-07
host: x86_64-unknown-freebsd
release: 1.80.0-nightly
LLVM version: 18.1.7
Anything else?
This is a regression since rustc 1.80.0-nightly (f67a1acc0 2024-06-01)
. That version did not warn in such cases.
Downstream issue: rust-lang/libc#3740
my4ng, nicholasbishop and tyrone-wu
Metadata
Metadata
Assignees
Labels
A-lintsArea: Lints (warnings about flaws in source code) such as unused_mut.Area: Lints (warnings about flaws in source code) such as unused_mut.C-bugCategory: This is a bug.Category: This is a bug.L-dead_codeLint: dead_codeLint: dead_codeT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.