From 55ea6d3fc175b0e01e2e946ca9b319c1fbe8aa67 Mon Sep 17 00:00:00 2001 From: James Lyon Date: Fri, 19 Apr 2013 00:40:48 +0100 Subject: x86-64 ABI fixes. abitest now passes; however test1-3 fail in init_test. All other tests pass. I need to re-test Win32 and Linux-x86. I've added a dummy implementation of gfunc_sret to c67-gen.c so it should now compile, and I think it should behave as before I created gfunc_sret. --- arm-gen.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'arm-gen.c') diff --git a/arm-gen.c b/arm-gen.c index 03262aa..0f70062 100644 --- a/arm-gen.c +++ b/arm-gen.c @@ -801,16 +801,21 @@ 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) { +ST_FUNC int gfunc_sret(CType *vt, CType *ret, int *ret_align) { +#if TCC_ARM_EABI + int size, align; size = type_size(vt, &align); if (size > 4) { return 1; } else { - *align = 4; + *ret_align = 4; ret->ref = NULL; ret->t = VT_INT; + return 0; } - return 0; +#else + return 1; +#endif } /* Generate function call. The function address is pushed first, then -- cgit v1.3.1