aboutsummaryrefslogtreecommitdiff
path: root/arm-gen.c
diff options
context:
space:
mode:
Diffstat (limited to 'arm-gen.c')
-rw-r--r--arm-gen.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/arm-gen.c b/arm-gen.c
index 3e86d9e..03262aa 100644
--- a/arm-gen.c
+++ b/arm-gen.c
@@ -800,6 +800,19 @@ int assign_fpreg(struct avail_regs *avregs, int align, int size)
}
#endif
+/* Return 1 if this function returns via an sret pointer, 0 otherwise */
+ST_FUNC int gfunc_sret(CType *vt, CType *ret, int *align) {
+ size = type_size(vt, &align);
+ if (size > 4) {
+ return 1;
+ } else {
+ *align = 4;
+ ret->ref = NULL;
+ ret->t = VT_INT;
+ }
+ return 0;
+}
+
/* Generate function call. The function address is pushed first, then
all the parameters in call order. This functions pops all the
parameters and the function address. */