diff options
| author | David Rheinsberg <david@readahead.eu> | 2023-07-21 09:32:28 +0200 |
|---|---|---|
| committer | David Rheinsberg <david@readahead.eu> | 2023-07-21 11:04:16 +0200 |
| commit | b0dadff6de0a0d17b38ebfcae333cc88a8b6e47e (patch) | |
| tree | 9ad5aebae53562260320195f4348382b5aedfc25 /compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp | |
| parent | 1a44b45987a56dc1bbb4fc8327aa46efa58d5eaa (diff) | |
| download | rust-b0dadff6de0a0d17b38ebfcae333cc88a8b6e47e.tar.gz rust-b0dadff6de0a0d17b38ebfcae333cc88a8b6e47e.zip | |
error/E0691: include alignment in error message
Include the computed alignment of the violating field when rejecting
transparent types with non-trivially aligned ZSTs.
ZST member fields in transparent types must have an alignment of 1 (to
ensure it does not raise the layout requirements of the transparent
field). The current error message looks like this:
LL | struct Foobar(u32, [u32; 0]);
| ^^^^^^^^ has alignment larger than 1
This patch changes the report to include the alignment of the violating
field:
LL | struct Foobar(u32, [u32; 0]);
| ^^^^^^^^ has alignment of 4, which is larger than 1
In case of unknown alignments, it will yield:
LL | struct Foobar<T>(u32, [T; 0]);
| ^^^^^^ may have alignment larger than 1
This allows developers to get a better grasp why a specific field is
rejected. Knowing the alignment of the violating field makes it easier
to judge where that alignment-requirement originates, and thus hopefully
provide better hints on how to mitigate the problem.
This idea was proposed in 2022 in #98071 as part of a bigger change.
This commit simply extracts this error-message change, to decouple it
from the other diagnostic improvements.
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
