aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/iamcu/test_basic_returning.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.target/i386/iamcu/test_basic_returning.c')
-rw-r--r--gcc/testsuite/gcc.target/i386/iamcu/test_basic_returning.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/iamcu/test_basic_returning.c b/gcc/testsuite/gcc.target/i386/iamcu/test_basic_returning.c
new file mode 100644
index 00000000000..23efa6e5c01
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/iamcu/test_basic_returning.c
@@ -0,0 +1,52 @@
+#include "defines.h"
+#include "macros.h"
+#include "args.h"
+
+char
+fun_test_returning_char (void)
+{
+ volatile_var++;
+ return 64;
+}
+
+short
+fun_test_returning_short (void)
+{
+ volatile_var++;
+ return 65;
+}
+
+int
+fun_test_returning_int (void)
+{
+ volatile_var++;
+ return 66;
+}
+
+long
+fun_test_returning_long (void)
+{
+ volatile_var++;
+ return 67;
+}
+
+float
+fun_test_returning_float (void)
+{
+ volatile_var++;
+ return 68;
+}
+
+#define def_test_returning_type(fun, type, ret, reg) \
+ { type var = WRAP_RET (fun) (); \
+ assert (ret == (type) reg && ret == var); }
+int
+main (void)
+{
+ def_test_returning_type(fun_test_returning_char, char, 64, eax);
+ def_test_returning_type(fun_test_returning_short, short, 65, eax);
+ def_test_returning_type(fun_test_returning_int, int, 66, eax);
+ def_test_returning_type(fun_test_returning_long, long, 67, eax);
+ def_test_returning_type(fun_test_returning_float, float, 68, eax);
+ return 0;
+}