summaryrefslogtreecommitdiffstats
path: root/tests/codegen/link_section.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/codegen/link_section.rs')
-rw-r--r--tests/codegen/link_section.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/codegen/link_section.rs b/tests/codegen/link_section.rs
new file mode 100644
index 000000000..88b8692b0
--- /dev/null
+++ b/tests/codegen/link_section.rs
@@ -0,0 +1,35 @@
+// ignore-emscripten default visibility is hidden
+// compile-flags: -C no-prepopulate-passes
+
+#![crate_type = "lib"]
+
+// CHECK: @VAR1 = constant <{ [4 x i8] }> <{ [4 x i8] c"\01\00\00\00" }>, section ".test_one"
+#[no_mangle]
+#[link_section = ".test_one"]
+#[cfg(target_endian = "little")]
+pub static VAR1: u32 = 1;
+
+#[no_mangle]
+#[link_section = ".test_one"]
+#[cfg(target_endian = "big")]
+pub static VAR1: u32 = 0x01000000;
+
+pub enum E {
+ A(u32),
+ B(f32)
+}
+
+// CHECK: @VAR2 = constant {{.*}}, section ".test_two"
+#[no_mangle]
+#[link_section = ".test_two"]
+pub static VAR2: E = E::A(666);
+
+// CHECK: @VAR3 = constant {{.*}}, section ".test_three"
+#[no_mangle]
+#[link_section = ".test_three"]
+pub static VAR3: E = E::B(1.);
+
+// CHECK: define void @fn1() {{.*}} section ".test_four" {
+#[no_mangle]
+#[link_section = ".test_four"]
+pub fn fn1() {}