Add missing #[repr(C)] in UI, codegen and assembly tests - #162956
Merged
Merged
Conversation
beetrees
force-pushed
the
test-repr-c-struct
branch
from
September 18, 2026 13:37
7d20bed to
c60430f
Compare
folkertdev
approved these changes
Sep 18, 2026
Contributor
There was a problem hiding this comment.
Nice, thanks!
I think it's worth making codegen and assembly tests deny warnings by default
Do you have any idea what the fallout of that will be? If it's a lot of churn that might need an MCP?
@bors r+ rollup
Contributor
Contributor
Author
A quick local check shows over 500 test failures (revisions are counting separately), so it definitely in needs MCP. I imagine the PR adding the change would just add a |
Zalathar
added a commit
to Zalathar/rust
that referenced
this pull request
Sep 19, 2026
…kertdev
Add missing `#[repr(C)]` in UI, codegen and assembly tests
There are quite a few tests which omit the `#[repr(C)]` on structs that are then used in non-Rustic ABIs. I've gone through the tests in `ui/abi`, `ui/ffi`, `codegen-llvm` and `assembly-llvm` and added `#[repr(C)]` where it was missing. I also converted `#[allow(improper_ctypes{,_definitions})]` to `#[expect(improper_ctypes{,_definitions})]` where possible, and removed it where the lint no longer triggers.
I haven't done it in this PR, but I think it's worth making codegen and assembly tests deny warnings by default. With UI tests `improper_ctypes{,_definitions}` has to be either allowed or will show up in the output, meaning it should be fairly obvious to reviewers, but with codegen and assembly tests warnings just get ignored if the test passes.
Fixes rust-lang#53858
r? @folkertdev
cc @RalfJung
rust-bors Bot
pushed a commit
that referenced
this pull request
Sep 19, 2026
Rollup of 18 pull requests Successful merges: - #162499 (`rustc_codegen_gcc` subtree update) - #161424 (implement `VaArgSafe` for `f128`) - #161777 (Add Natvis visualiser and debuginfo tests for `f128`) - #162506 (Avoid suggesting imports of traits declared inside fn bodies) - #162591 (Move parse error recovery for expression operators "out of line" & refactor in the area) - #162669 ([rustdoc] Correctly handle intra-doc links on inlined same item with different names) - #162733 (Add useful APIs to `Unique(Arc|Rc)`) - #162913 (Refactor LivenessResults into LivenessComputation, without typeck) - #162950 (More AST lowering cleanups) - #162964 (Update `browser-ui-test` version to `0.25.2`) - #162979 (mark `f128` as reliable on `powerpc64` with `+vsx`) - #161743 (Add performance notes for the floating-point round method) - #162797 (yeet AliasConstKind::opt_def_id) - #162836 (Ping T-libs-ping instead of T-libs-fcp for backports) - #162873 (Adjust `bug!`/`span_bug!` emission) - #162875 (Add .seek_read_exact(), .seek_write_all() to std::os::windows::fs::FileExt) - #162956 (Add missing `#[repr(C)]` in UI, codegen and assembly tests) - #162981 (rustc-dev-guide subtree update) Failed merges: - #162177 (Properly implement the gpu-kernel ABI for amdgpu)
rust-bors Bot
pushed a commit
that referenced
this pull request
Sep 19, 2026
Rollup of 18 pull requests Successful merges: - #162499 (`rustc_codegen_gcc` subtree update) - #161424 (implement `VaArgSafe` for `f128`) - #161777 (Add Natvis visualiser and debuginfo tests for `f128`) - #162506 (Avoid suggesting imports of traits declared inside fn bodies) - #162591 (Move parse error recovery for expression operators "out of line" & refactor in the area) - #162669 ([rustdoc] Correctly handle intra-doc links on inlined same item with different names) - #162733 (Add useful APIs to `Unique(Arc|Rc)`) - #162913 (Refactor LivenessResults into LivenessComputation, without typeck) - #162950 (More AST lowering cleanups) - #162964 (Update `browser-ui-test` version to `0.25.2`) - #162979 (mark `f128` as reliable on `powerpc64` with `+vsx`) - #161743 (Add performance notes for the floating-point round method) - #162797 (yeet AliasConstKind::opt_def_id) - #162836 (Ping T-libs-ping instead of T-libs-fcp for backports) - #162873 (Adjust `bug!`/`span_bug!` emission) - #162875 (Add .seek_read_exact(), .seek_write_all() to std::os::windows::fs::FileExt) - #162956 (Add missing `#[repr(C)]` in UI, codegen and assembly tests) - #162981 (rustc-dev-guide subtree update) Failed merges: - #162177 (Properly implement the gpu-kernel ABI for amdgpu)
JonathanBrouwer
added a commit
to JonathanBrouwer/rust
that referenced
this pull request
Sep 19, 2026
…kertdev
Add missing `#[repr(C)]` in UI, codegen and assembly tests
There are quite a few tests which omit the `#[repr(C)]` on structs that are then used in non-Rustic ABIs. I've gone through the tests in `ui/abi`, `ui/ffi`, `codegen-llvm` and `assembly-llvm` and added `#[repr(C)]` where it was missing. I also converted `#[allow(improper_ctypes{,_definitions})]` to `#[expect(improper_ctypes{,_definitions})]` where possible, and removed it where the lint no longer triggers.
I haven't done it in this PR, but I think it's worth making codegen and assembly tests deny warnings by default. With UI tests `improper_ctypes{,_definitions}` has to be either allowed or will show up in the output, meaning it should be fairly obvious to reviewers, but with codegen and assembly tests warnings just get ignored if the test passes.
Fixes rust-lang#53858
r? @folkertdev
cc @RalfJung
This was referenced Sep 19, 2026
rust-bors Bot
pushed a commit
that referenced
this pull request
Sep 19, 2026
…uwer Rollup of 22 pull requests Successful merges: - #163001 (Temporarily disable `test-x86_64-fuchsia`) - #162880 (Mini optimization in `rustc_hir_typeck::upvar::restrict_precision_for_drop_types`) - #161424 (implement `VaArgSafe` for `f128`) - #161777 (Add Natvis visualiser and debuginfo tests for `f128`) - #162506 (Avoid suggesting imports of traits declared inside fn bodies) - #162591 (Move parse error recovery for expression operators "out of line" & refactor in the area) - #162669 ([rustdoc] Correctly handle intra-doc links on inlined same item with different names) - #162733 (Add useful APIs to `Unique(Arc|Rc)`) - #162913 (Refactor LivenessResults into LivenessComputation, without typeck) - #162924 (Remove applying inline attributes at the callsite) - #162940 (Use spawned `SBDebugger` instance) - #162950 (More AST lowering cleanups) - #162964 (Update `browser-ui-test` version to `0.25.2`) - #162979 (mark `f128` as reliable on `powerpc64` with `+vsx`) - #161743 (Add performance notes for the floating-point round method) - #162797 (yeet AliasConstKind::opt_def_id) - #162836 (Ping T-libs-ping instead of T-libs-fcp for backports) - #162873 (Adjust `bug!`/`span_bug!` emission) - #162956 (Add missing `#[repr(C)]` in UI, codegen and assembly tests) - #162971 (libtest harness: avoid 'extern crate test' with custom runner) - #162981 (rustc-dev-guide subtree update) - #162985 (Error on invalid placements for unstable attributes)
rust-bors Bot
pushed a commit
that referenced
this pull request
Sep 19, 2026
Rollup merge of #162956 - beetrees:test-repr-c-struct, r=folkertdev Add missing `#[repr(C)]` in UI, codegen and assembly tests There are quite a few tests which omit the `#[repr(C)]` on structs that are then used in non-Rustic ABIs. I've gone through the tests in `ui/abi`, `ui/ffi`, `codegen-llvm` and `assembly-llvm` and added `#[repr(C)]` where it was missing. I also converted `#[allow(improper_ctypes{,_definitions})]` to `#[expect(improper_ctypes{,_definitions})]` where possible, and removed it where the lint no longer triggers. I haven't done it in this PR, but I think it's worth making codegen and assembly tests deny warnings by default. With UI tests `improper_ctypes{,_definitions}` has to be either allowed or will show up in the output, meaning it should be fairly obvious to reviewers, but with codegen and assembly tests warnings just get ignored if the test passes. Fixes #53858 r? @folkertdev cc @RalfJung
pull Bot
pushed a commit
to xtqqczze/rust-lang-miri
that referenced
this pull request
Sep 20, 2026
…uwer Rollup of 22 pull requests Successful merges: - rust-lang/rust#163001 (Temporarily disable `test-x86_64-fuchsia`) - rust-lang/rust#162880 (Mini optimization in `rustc_hir_typeck::upvar::restrict_precision_for_drop_types`) - rust-lang/rust#161424 (implement `VaArgSafe` for `f128`) - rust-lang/rust#161777 (Add Natvis visualiser and debuginfo tests for `f128`) - rust-lang/rust#162506 (Avoid suggesting imports of traits declared inside fn bodies) - rust-lang/rust#162591 (Move parse error recovery for expression operators "out of line" & refactor in the area) - rust-lang/rust#162669 ([rustdoc] Correctly handle intra-doc links on inlined same item with different names) - rust-lang/rust#162733 (Add useful APIs to `Unique(Arc|Rc)`) - rust-lang/rust#162913 (Refactor LivenessResults into LivenessComputation, without typeck) - rust-lang/rust#162924 (Remove applying inline attributes at the callsite) - rust-lang/rust#162940 (Use spawned `SBDebugger` instance) - rust-lang/rust#162950 (More AST lowering cleanups) - rust-lang/rust#162964 (Update `browser-ui-test` version to `0.25.2`) - rust-lang/rust#162979 (mark `f128` as reliable on `powerpc64` with `+vsx`) - rust-lang/rust#161743 (Add performance notes for the floating-point round method) - rust-lang/rust#162797 (yeet AliasConstKind::opt_def_id) - rust-lang/rust#162836 (Ping T-libs-ping instead of T-libs-fcp for backports) - rust-lang/rust#162873 (Adjust `bug!`/`span_bug!` emission) - rust-lang/rust#162956 (Add missing `#[repr(C)]` in UI, codegen and assembly tests) - rust-lang/rust#162971 (libtest harness: avoid 'extern crate test' with custom runner) - rust-lang/rust#162981 (rustc-dev-guide subtree update) - rust-lang/rust#162985 (Error on invalid placements for unstable attributes)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There are quite a few tests which omit the
#[repr(C)]on structs that are then used in non-Rustic ABIs. I've gone through the tests inui/abi,ui/ffi,codegen-llvmandassembly-llvmand added#[repr(C)]where it was missing. I also converted#[allow(improper_ctypes{,_definitions})]to#[expect(improper_ctypes{,_definitions})]where possible, and removed it where the lint no longer triggers.I haven't done it in this PR, but I think it's worth making codegen and assembly tests deny warnings by default. With UI tests
improper_ctypes{,_definitions}has to be either allowed or will show up in the output, meaning it should be fairly obvious to reviewers, but with codegen and assembly tests warnings just get ignored if the test passes.Fixes #53858
r? @folkertdev
cc @RalfJung