summary refs log tree commit diff
path: root/rv64
diff options
context:
space:
mode:
Diffstat (limited to 'rv64')
-rw-r--r--rv64/abi.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/rv64/abi.c b/rv64/abi.c
index 0baaa67..3a97a6a 100644
--- a/rv64/abi.c
+++ b/rv64/abi.c
@@ -220,12 +220,13 @@ selret(Blk *b, Fn *fn)
 
 	if (j == Jretc) {
 		typclass(&cr, &typ[fn->retty], 1, gpreg, fpreg);
-		cty = (cr.nfp << 2) | cr.ngp;
 		if (cr.class & Cptr) {
 			assert(rtype(fn->retr) == RTmp);
 			blit0(fn->retr, r, cr.type->size, fn);
+			cty = 0;
 		} else {
 			ldregs(&cr, r, fn);
+			cty = (cr.nfp << 2) | cr.ngp;
 		}
 	} else {
 		k = j - Jretw;