summaryrefslogtreecommitdiffstats
path: root/src/test/ui/layout/hexagon-enum.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/layout/hexagon-enum.rs')
-rw-r--r--src/test/ui/layout/hexagon-enum.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/test/ui/layout/hexagon-enum.rs b/src/test/ui/layout/hexagon-enum.rs
new file mode 100644
index 000000000..4c58537e3
--- /dev/null
+++ b/src/test/ui/layout/hexagon-enum.rs
@@ -0,0 +1,34 @@
+// compile-flags: --target hexagon-unknown-linux-musl
+// needs-llvm-components: hexagon
+//
+// Verify that the hexagon targets implement the repr(C) for enums correctly.
+//
+// See #82100
+#![feature(never_type, rustc_attrs, no_core, lang_items)]
+#![crate_type = "lib"]
+#![no_core]
+
+#[lang="sized"]
+trait Sized {}
+
+#[rustc_layout(debug)]
+#[repr(C)]
+enum A { Apple } //~ ERROR: layout_of
+
+#[rustc_layout(debug)]
+#[repr(C)]
+enum B { Banana = 255, } //~ ERROR: layout_of
+
+#[rustc_layout(debug)]
+#[repr(C)]
+enum C { Chaenomeles = 256, } //~ ERROR: layout_of
+
+#[rustc_layout(debug)]
+#[repr(C)]
+enum P { Peach = 0x1000_0000isize, } //~ ERROR: layout_of
+
+const TANGERINE: usize = 0x8100_0000; // hack to get negative numbers without negation operator!
+
+#[rustc_layout(debug)]
+#[repr(C)]
+enum T { Tangerine = TANGERINE as isize } //~ ERROR: layout_of