git: 9front

Download patch

ref: e3673148355d3adbc64419cdd67530ccc840db86
parent: 350a4acbb13a24d2bdb66267c243a237cc7a7bf3
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Mon Jun 24 15:25:13 EDT 2019

8c: skip 64-bit regpair allocation for OINDEX nodes in cgen64()

OINDEX can only return TLONG result on 386 so give it
a register instead of a regpair and let gmove() handle
the conversion.

--- a/sys/src/cmd/8c/cgen64.c
+++ b/sys/src/cmd/8c/cgen64.c
@@ -2526,7 +2526,7 @@
 	case OCAST:
 		l = n->left;
 		if(typev[l->type->etype]) {
-			if(!vaddr(l, 1)) {
+			if(!vaddr(l, 1) && l->op != OINDEX) {	// theres no 64 bit indexing
 				if(l->complex + 1 > nn->complex) {
 					d = regpair(Z, l);
 					sugen(l, d, 8);
--