aboutsummaryrefslogtreecommitdiffstats
path: root/test/regression
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@college-de-france.fr>2020-02-19 13:00:49 +0100
committerXavier Leroy <xavierleroy@users.noreply.github.com>2020-02-21 13:29:39 +0100
commit8f8a4135be4786a04b781bdf669e642d8383d91a (patch)
tree33be757eb89a4a07e55fe9bb0201b972182967b6 /test/regression
parent28f235806aa0918499b2ef162110f513ebe4db30 (diff)
downloadcompcert-kvx-8f8a4135be4786a04b781bdf669e642d8383d91a.tar.gz
compcert-kvx-8f8a4135be4786a04b781bdf669e642d8383d91a.zip
Add interoperability test for functions returning small integer types
Diffstat (limited to 'test/regression')
-rw-r--r--test/regression/Results/interop18
-rw-r--r--test/regression/interop1.c15
2 files changed, 23 insertions, 0 deletions
diff --git a/test/regression/Results/interop1 b/test/regression/Results/interop1
index 990dfe9d..6e32c1cb 100644
--- a/test/regression/Results/interop1
+++ b/test/regression/Results/interop1
@@ -1,4 +1,8 @@
--- CompCert calling native:
+si8u: 177
+si8s: -79
+si16u: 64305
+si16s: -1231
s1: { a = 'a' }
s2: { a = 'a', b = 'b' }
s3: { a = 'a', b = 'b', c = ' c' }
@@ -44,6 +48,10 @@ ru6: { a = 55555, b = 666 }
ru7: { a = -10001, b = -789, c = 'z' }
ru8: { a = 'x', b = 12345 }
--- native calling CompCert:
+si8u: 177
+si8s: -79
+si16u: 64305
+si16s: -1231
s1: { a = 'a' }
s2: { a = 'a', b = 'b' }
s3: { a = 'a', b = 'b', c = ' c' }
diff --git a/test/regression/interop1.c b/test/regression/interop1.c
index a39f449c..6836b89e 100644
--- a/test/regression/interop1.c
+++ b/test/regression/interop1.c
@@ -195,6 +195,17 @@ RETURN(ru6,U6,init_U6)
RETURN(ru7,U7,init_U7)
RETURN(ru8,U8,init_U8)
+/* Returning small integers */
+
+#define SMALLINT(name,ty) \
+extern ty THEM(name)(int); \
+ty US(name)(int x) { return x * x; }
+
+SMALLINT(si8u, unsigned char)
+SMALLINT(si8s, signed char)
+SMALLINT(si16u, unsigned short)
+SMALLINT(si16s, signed short)
+
/* Test function, calling the functions compiled by the other compiler */
#define CALLPRINT(name,ty,init) \
@@ -207,6 +218,10 @@ RETURN(ru8,U8,init_U8)
extern void THEM(test) (void);
void US(test) (void)
{
+ printf("si8u: %d\n", THEM(si8u)(12345));
+ printf("si8s: %d\n", THEM(si8s)(12345));
+ printf("si16u: %d\n", THEM(si16u)(1234567));
+ printf("si16s: %d\n", THEM(si16s)(1234567));
CALLPRINT(s1,S1,init_S1)
CALLPRINT(s2,S2,init_S2)
CALLPRINT(s3,S3,init_S3)