]> git.lizzy.rs Git - rust.git/blobdiff - src/test/run-make/extern-fn-struct-passing-abi/test.c
Fix pairs of doubles using an illegal <8 x i8> vector.
[rust.git] / src / test / run-make / extern-fn-struct-passing-abi / test.c
index 4253767ee76a962ee0604693fe6d9e97e2b3da3b..4e09928edc6d1c7972fd6629f69b1a4fd982b159 100644 (file)
@@ -38,6 +38,11 @@ struct Huge {
     int32_t e;
 };
 
+struct FloatPoint {
+    double x;
+    double y;
+};
+
 // System V x86_64 ABI:
 // a, b, c, d, e should be in registers
 // s should be byval pointer
@@ -258,3 +263,17 @@ struct Huge huge_struct(struct Huge s) {
 
     return s;
 }
+
+// System V x86_64 ABI:
+// p should be in registers
+// return should be in registers
+//
+// Win64 ABI:
+// p should be a byval pointer
+// return should be in a hidden sret pointer
+struct FloatPoint float_point(struct FloatPoint p) {
+    assert(p.x == 5.);
+    assert(p.y == -3.);
+
+    return p;
+}