about summary refs log tree commit diff
path: root/src/test/codegen
diff options
context:
space:
mode:
authorPetr Sumbera <petr.sumbera@oracle.com>2022-02-24 13:46:34 +0100
committerPetr Sumbera <petr.sumbera@oracle.com>2022-02-24 13:46:34 +0100
commit992c27c601db490d4b1f76a6e0e51475b871d315 (patch)
tree7a711a9b6904f641b4bf91b3ade464d633b0a97e /src/test/codegen
parent0d200116d3e8188ee7c8c997f31f54cb4d978612 (diff)
downloadrust-992c27c601db490d4b1f76a6e0e51475b871d315.tar.gz
rust-992c27c601db490d4b1f76a6e0e51475b871d315.zip
Add test for nested structures.
Diffstat (limited to 'src/test/codegen')
-rw-r--r--src/test/codegen/sparc-struct-abi.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/test/codegen/sparc-struct-abi.rs b/src/test/codegen/sparc-struct-abi.rs
index b531dba4607..e8816e4f303 100644
--- a/src/test/codegen/sparc-struct-abi.rs
+++ b/src/test/codegen/sparc-struct-abi.rs
@@ -81,3 +81,23 @@ pub struct FloatLongFloat {
 pub extern "C" fn structfloatlongfloat() -> FloatLongFloat {
     FloatLongFloat { f: 0.1, i: 123, g: 3.14 }
 }
+
+#[repr(C)]
+pub struct FloatFloat {
+    f: f32,
+    g: f32,
+}
+
+#[repr(C)]
+pub struct NestedStructs {
+    a: FloatFloat,
+    b: FloatFloat,
+}
+
+// CHECK: define inreg { float, float, float, float } @structnestestructs()
+// CHECK-NEXT: start:
+// CHECK-NEXT: ret { float, float, float, float } { float 0x3FB99999A0000000, float 0x3FF19999A0000000, float 0x40019999A0000000, float 0x400A666660000000 }
+#[no_mangle]
+pub extern "C" fn structnestestructs() -> NestedStructs {
+    NestedStructs { a: FloatFloat { f: 0.1, g: 1.1 }, b: FloatFloat { f: 2.2, g: 3.3 } }
+}