summaryrefslogtreecommitdiffstats
path: root/src/test/ui/repr/aligned_enum_cast.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:18:25 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:18:25 +0000
commit5363f350887b1e5b5dd21a86f88c8af9d7fea6da (patch)
tree35ca005eb6e0e9a1ba3bb5dbc033209ad445dc17 /src/test/ui/repr/aligned_enum_cast.rs
parentAdding debian version 1.66.0+dfsg1-1. (diff)
downloadrustc-5363f350887b1e5b5dd21a86f88c8af9d7fea6da.tar.xz
rustc-5363f350887b1e5b5dd21a86f88c8af9d7fea6da.zip
Merging upstream version 1.67.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/repr/aligned_enum_cast.rs')
-rw-r--r--src/test/ui/repr/aligned_enum_cast.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/test/ui/repr/aligned_enum_cast.rs b/src/test/ui/repr/aligned_enum_cast.rs
new file mode 100644
index 000000000..1ddf12717
--- /dev/null
+++ b/src/test/ui/repr/aligned_enum_cast.rs
@@ -0,0 +1,25 @@
+// run-pass
+// allows aligned custom discriminant enums to cast into other types
+// See the issue #92464 for more info
+#[allow(dead_code)]
+#[repr(align(8))]
+enum Aligned {
+ Zero = 0,
+ One = 1,
+}
+
+fn main() {
+ let aligned = Aligned::Zero;
+ let fo = aligned as u8;
+ println!("foo {}", fo);
+ assert_eq!(fo, 0);
+ println!("{}", tou8(Aligned::Zero));
+ assert_eq!(tou8(Aligned::Zero), 0);
+}
+
+#[inline(never)]
+fn tou8(al: Aligned) -> u8 {
+ // Cast behind a function call so ConstProp does not see it
+ // (so that we can test codegen).
+ al as u8
+}