rust/tests/ui/layout
Jubilee Young 2e19658315 Remove rustc's notion of "preferred" alignment AKA __alignof
In PR 90877 T-lang decided not to remove `intrinsics::pref_align_of`.
However, the intrinsic and its supporting code
1.  is a nightly feature, so can be removed at compiler/libs discretion
2.  requires considerable effort in the compiler to support, as it
    necessarily complicates every single site reasoning about alignment
3.  has been justified based on relevance to codegen, but it is only a
    requirement for C++ (not C, not Rust) stack frame layout for AIX,
    in ways Rust would not consider even with increased C++ interop
4.  is only used by rustc to overalign some globals, not correctness
5.  can be adequately replaced by other rules for globals, as it mostly
    affects alignments for a few types under 16 bytes of alignment
6.  has only one clear benefactor: automating C -> Rust translation
    for GNU extensions like `__alignof`
7.  such code was likely intended to be `alignof` or `_Alignof`,
    because the GNU extension is a "false friend" of the C keyword,
    which makes the choice to support such a mapping very questionable
8.  makes it easy to do incorrect codegen in the compiler by its mere
    presence as usual Rust rules of alignment (e.g. `size == align * N`)
    do not hold with preferred alignment

The implementation is clearly damaging the code quality of the compiler.
Thus it is within the compiler team's purview to simply rip it out.
If T-lang wishes to have this intrinsic restored for c2rust's benefit,
it would have to use a radically different implementation that somehow
does not cause internal incorrectness.

Until then, remove the intrinsic and its supporting code, as one tool
and an ill-considered GCC extension cannot justify risking correctness.

Because we touch a fair amount of the compiler to change this at all,
and unfortunately the duplication of AbiAndPrefAlign is deep-rooted,
we keep an "AbiAlign" type which we can wean code off later.
2025-06-08 16:41:46 -07:00
..
aggregate-lang Remove #[cfg(test)] related stubs 2024-11-22 21:07:02 -05:00
base-layout-is-sized-ice-123078.rs Add TooGeneric variant to LayoutError and emit Unknown one 2025-01-27 00:37:34 +01:00
base-layout-is-sized-ice-123078.stderr Add TooGeneric variant to LayoutError and emit Unknown one 2025-01-27 00:37:34 +01:00
big-type-no-err.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
cannot-transmute-unnormalizable-type.rs Continue compilation after check_mod_type_wf errors 2024-02-14 11:00:30 +00:00
cannot-transmute-unnormalizable-type.stderr Continue compilation after check_mod_type_wf errors 2024-02-14 11:00:30 +00:00
debug.rs Implement #[define_opaque] attribute for functions. 2025-03-11 12:05:02 +00:00
debug.stderr Remove rustc's notion of "preferred" alignment AKA __alignof 2025-06-08 16:41:46 -07:00
enum-scalar-pair-int-ptr.rs Remove the -test suffix from normalize directives 2024-12-27 19:58:16 +11:00
enum-scalar-pair-int-ptr.stderr tests: Bless rustc_abi::Abi::Aggregate => ::Memory 2024-10-30 01:41:31 -07:00
enum.rs Remove the -test suffix from normalize directives 2024-12-27 19:58:16 +11:00
enum.stderr Remove rustc's notion of "preferred" alignment AKA __alignof 2025-06-08 16:41:46 -07:00
failed-to-get-layout-for-type-error-ice-92979.rs add test for ICE: failed to get layout for [type error] #92979 2024-03-25 20:35:51 +01:00
failed-to-get-layout-for-type-error-ice-92979.stderr add test for ICE: failed to get layout for [type error] #92979 2024-03-25 20:35:51 +01:00
gce-rigid-const-in-array-len.rs layout_of: put back not-so-unreachable case 2025-02-21 20:32:34 +01:00
gce-rigid-const-in-array-len.stderr layout_of: put back not-so-unreachable case 2025-02-21 20:32:34 +01:00
hexagon-enum.rs tests: use minicore more 2025-02-24 09:26:54 +00:00
hexagon-enum.stderr Remove rustc's notion of "preferred" alignment AKA __alignof 2025-06-08 16:41:46 -07:00
homogeneous-aggr-transparent.rs fix homogeneous_aggregate not ignoring some 1-ZST 2023-09-10 07:38:03 +02:00
homogeneous-aggr-transparent.stderr fix homogeneous_aggregate not ignoring some 1-ZST 2023-09-10 07:38:03 +02:00
homogeneous-aggr-zero-sized-c-struct.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
homogeneous-aggr-zero-sized-c-struct.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
homogeneous-aggr-zero-sized-repr-rust.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
homogeneous-aggr-zero-sized-repr-rust.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
ice-non-last-unsized-field-issue-121473.rs Error out of layout calculation if a non-last struct field is unsized 2024-04-04 15:50:36 +05:30
ice-non-last-unsized-field-issue-121473.stderr Error out of layout calculation if a non-last struct field is unsized 2024-04-04 15:50:36 +05:30
ice-type-error-in-tail-124031.rs Remove the -test suffix from normalize directives 2024-12-27 19:58:16 +11:00
ice-type-error-in-tail-124031.stderr Stop being so bail-y in candidate assembly 2024-11-21 01:35:34 +00:00
invalid-unsized-const-eval.rs Use the informative error as the main const eval error message 2025-06-02 15:37:15 +00:00
invalid-unsized-const-eval.stderr Clarify why we are talking about a failed const eval at a random place 2025-06-02 15:37:15 +00:00
invalid-unsized-const-prop.rs get rid of an old hack 2024-09-17 00:09:21 +02:00
invalid-unsized-in-always-sized-tail.rs Use the informative error as the main const eval error message 2025-06-02 15:37:15 +00:00
invalid-unsized-in-always-sized-tail.stderr Clarify why we are talking about a failed const eval at a random place 2025-06-02 15:37:15 +00:00
issue-60431-unsized-tail-behind-projection.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-84108.rs Allow type_of to return partially non-error types if the type was already tainted 2024-05-28 11:55:20 +00:00
issue-84108.stderr Don't typeck during WF, instead check outside of WF in check_crate 2025-03-03 23:09:42 +00:00
issue-96158-scalarpair-payload-might-be-uninit.rs adjust UI tests 2025-01-10 02:22:57 +01:00
issue-96158-scalarpair-payload-might-be-uninit.stderr Remove rustc's notion of "preferred" alignment AKA __alignof 2025-06-08 16:41:46 -07:00
issue-96185-overaligned-enum.rs adjust UI tests 2025-01-10 02:22:57 +01:00
issue-96185-overaligned-enum.stderr Remove rustc's notion of "preferred" alignment AKA __alignof 2025-06-08 16:41:46 -07:00
issue-112048-unsizing-field-order.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-112048-unsizing-niche.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-113941.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-unsized-tail-restatic-ice-122488.rs Use the informative error as the main const eval error message 2025-06-02 15:37:15 +00:00
issue-unsized-tail-restatic-ice-122488.stderr Clarify why we are talking about a failed const eval at a random place 2025-06-02 15:37:15 +00:00
layout-cycle.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
layout-cycle.stderr Don't ICE on layout computation failure 2023-08-28 12:40:39 -07:00
malformed-unsized-type-in-union.rs Implement and use BikeshedGuaranteedNoDrop for union/unsafe field validity 2025-02-13 03:45:04 +00:00
malformed-unsized-type-in-union.stderr Implement and use BikeshedGuaranteedNoDrop for union/unsafe field validity 2025-02-13 03:45:04 +00:00
normalization-failure.rs document and test all LayoutError variants 2025-02-18 13:22:45 +01:00
normalization-failure.stderr document and test all LayoutError variants 2025-02-18 13:22:45 +01:00
post-mono-layout-cycle-2.rs Refactor coroutine layout logic to precompute all sublayouts 2025-03-08 12:36:45 +01:00
post-mono-layout-cycle-2.stderr Refactor coroutine layout logic to precompute all sublayouts 2025-03-08 12:36:45 +01:00
post-mono-layout-cycle.rs UI tests: add missing diagnostic kinds where possible 2025-04-08 23:06:31 +03:00
post-mono-layout-cycle.stderr Emit warning when calling/declaring functions with unavailable vectors. 2024-11-01 22:24:35 +01:00
randomize.rs test that coercions still work under randomization 2025-01-10 02:22:57 +01:00
reprc-power-alignment.rs [AIX] Ignore linting on repr(C) structs with repr(packed) or repr(align(n)) 2025-03-08 00:23:46 -05:00
reprc-power-alignment.stderr [AIX] Lint on structs that have a different alignment in AIX's C ABI 2025-01-22 12:06:16 -05:00
rust-call-abi-not-a-tuple-ice-81974.rs Remove manual WF hack 2025-05-07 16:29:59 +00:00
rust-call-abi-not-a-tuple-ice-81974.stderr Remove manual WF hack 2025-05-07 16:29:59 +00:00
size-of-val-raw-too-big.rs compiletest: Require //~ annotations even if error-pattern is specified 2025-04-03 11:08:55 +03:00
size-of-val-raw-too-big.stderr TL note: current means target 2024-09-20 10:02:14 -07:00
struct.rs Remove the -test suffix from normalize directives 2024-12-27 19:58:16 +11:00
struct.stderr tests: Bless rustc_abi::Abi::Aggregate => ::Memory 2024-10-30 01:41:31 -07:00
thaw-transmute-invalid-enum.rs use backticks instead of single quotes when reporting "use of unstable library feature" 2024-11-03 13:55:52 -08:00
thaw-transmute-invalid-enum.stderr use backticks instead of single quotes when reporting "use of unstable library feature" 2024-11-03 13:55:52 -08:00
thaw-validate-invalid-enum.rs compiler: Reject impossible reprs during enum layout 2024-10-20 02:12:58 -07:00
thaw-validate-invalid-enum.stderr compiler: Reject impossible reprs during enum layout 2024-10-20 02:12:58 -07:00
thin-meta-implies-thin-ptr.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
thumb-enum.rs tests: use minicore more 2025-02-24 09:26:54 +00:00
thumb-enum.stderr Remove rustc's notion of "preferred" alignment AKA __alignof 2025-06-08 16:41:46 -07:00
too-big-with-padding.rs tests: use minicore more 2025-02-24 09:26:54 +00:00
too-big-with-padding.stderr tests: use minicore more 2025-02-24 09:26:54 +00:00
transmute-to-tail-with-err.rs Layout of &dyn Trait<[type error]> is still wide 2023-03-13 21:35:20 +00:00
transmute-to-tail-with-err.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
trivial-bounds-sized.rs layout computation: eagerly error for unexpected unsized fields 2024-09-16 15:53:21 +02:00
uncomputable-due-to-trivial-bounds-ice-135138.rs Use the informative error as the main const eval error message 2025-06-02 15:37:15 +00:00
uncomputable-due-to-trivial-bounds-ice-135138.stderr Clarify why we are talking about a failed const eval at a random place 2025-06-02 15:37:15 +00:00
unconstrained-param-ice-137308.rs don't leave assoc const unnormalized due to unconstrained params 2025-02-21 20:32:37 +01:00
unconstrained-param-ice-137308.stderr don't leave assoc const unnormalized due to unconstrained params 2025-02-21 20:32:37 +01:00
unexpected-unsized-field-issue-135020.rs Add TooGeneric variant to LayoutError and emit Unknown one 2025-01-27 00:37:34 +01:00
unknown-when-no-type-parameter.rs Use the informative error as the main const eval error message 2025-06-02 15:37:15 +00:00
unknown-when-no-type-parameter.stderr Clarify why we are talking about a failed const eval at a random place 2025-06-02 15:37:15 +00:00
unknown-when-ptr-metadata-is-DST.rs Use the informative error as the main const eval error message 2025-06-02 15:37:15 +00:00
unknown-when-ptr-metadata-is-DST.stderr Clarify why we are talking about a failed const eval at a random place 2025-06-02 15:37:15 +00:00
unsafe-cell-hides-niche.rs Stabilize generic NonZero. 2024-04-22 18:48:47 +02:00
unsatisfiable-sized-ungated.rs layout computation: eagerly error for unexpected unsized fields 2024-09-16 15:53:21 +02:00
valid_range_oob.rs Remove the -test suffix from normalize directives 2024-12-27 19:58:16 +11:00
valid_range_oob.stderr Properly note when query stack is being cut off 2025-01-16 19:12:22 +00:00
zero-sized-array-enum-niche.rs adjust UI tests 2025-01-10 02:22:57 +01:00
zero-sized-array-enum-niche.stderr Remove rustc's notion of "preferred" alignment AKA __alignof 2025-06-08 16:41:46 -07:00
zero-sized-array-union.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
zero-sized-array-union.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00