summaryrefslogtreecommitdiffstats
path: root/src/test/ui/structs-enums/codegen-tag-static-padding.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
commit64d98f8ee037282c35007b64c2649055c56af1db (patch)
tree5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /src/test/ui/structs-enums/codegen-tag-static-padding.rs
parentAdding debian version 1.67.1+dfsg1-1. (diff)
downloadrustc-64d98f8ee037282c35007b64c2649055c56af1db.tar.xz
rustc-64d98f8ee037282c35007b64c2649055c56af1db.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/structs-enums/codegen-tag-static-padding.rs')
-rw-r--r--src/test/ui/structs-enums/codegen-tag-static-padding.rs59
1 files changed, 0 insertions, 59 deletions
diff --git a/src/test/ui/structs-enums/codegen-tag-static-padding.rs b/src/test/ui/structs-enums/codegen-tag-static-padding.rs
deleted file mode 100644
index 8aa087c01..000000000
--- a/src/test/ui/structs-enums/codegen-tag-static-padding.rs
+++ /dev/null
@@ -1,59 +0,0 @@
-// run-pass
-#![allow(non_upper_case_globals)]
-
-// Issue #13186
-
-// For simplicity of explanations assuming code is compiled for x86_64
-// Linux ABI.
-
-// Size of TestOption<u64> is 16, and alignment of TestOption<u64> is 8.
-// Size of u8 is 1, and alignment of u8 is 1.
-// So size of Request is 24, and alignment of Request must be 8:
-// the maximum alignment of its fields.
-// Last 7 bytes of Request struct are not occupied by any fields.
-
-
-
-enum TestOption<T> {
- TestNone,
- TestSome(T),
-}
-
-pub struct Request {
- foo: TestOption<u64>,
- bar: u8,
-}
-
-fn default_instance() -> &'static Request {
- static instance: Request = Request {
- // LLVM does not allow to specify alignment of expressions, thus
- // alignment of `foo` in constant is 1, not 8.
- foo: TestOption::TestNone,
- bar: 17,
- // Space after last field is not occupied by any data, but it is
- // reserved to make struct aligned properly. If compiler does
- // not insert padding after last field when emitting constant,
- // size of struct may be not equal to size of struct, and
- // compiler crashes in internal assertion check.
- };
- &instance
-}
-
-fn non_default_instance() -> &'static Request {
- static instance: Request = Request {
- foo: TestOption::TestSome(0x1020304050607080),
- bar: 19,
- };
- &instance
-}
-
-pub fn main() {
- match default_instance() {
- &Request { foo: TestOption::TestNone, bar: 17 } => {},
- _ => panic!(),
- };
- match non_default_instance() {
- &Request { foo: TestOption::TestSome(0x1020304050607080), bar: 19 } => {},
- _ => panic!(),
- };
-}