aboutsummaryrefslogtreecommitdiff
path: root/tinycc/tests/tests2/109_float_struct_calling.c
diff options
context:
space:
mode:
Diffstat (limited to 'tinycc/tests/tests2/109_float_struct_calling.c')
-rw-r--r--tinycc/tests/tests2/109_float_struct_calling.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/tinycc/tests/tests2/109_float_struct_calling.c b/tinycc/tests/tests2/109_float_struct_calling.c
new file mode 100644
index 0000000..90fc045
--- /dev/null
+++ b/tinycc/tests/tests2/109_float_struct_calling.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+
+/* This test used to fail on x86_64 on linux with sse registers */
+
+struct Point {
+ float x;
+ float y;
+};
+
+struct Rect {
+ struct Point top_left;
+ struct Point size;
+};
+
+float foo(struct Point p, struct Rect r) {
+ return r.size.x;
+}
+
+int main(int argc, char **argv) {
+ struct Point p = {1, 2};
+ struct Rect r = {{3, 4}, {5, 6}};
+ printf("%f\n", foo(p, r));
+ return 0;
+}