1
0
mirror of https://github.com/golang/go synced 2024-11-22 19:44:57 -07:00

6g return struct fix:

make t->width of funarg struct be width of struct.

emit MOVSL for 4-byte copy.

R=ken
OCL=24108
CL=24111
This commit is contained in:
Russ Cox 2009-02-02 13:41:38 -08:00
parent fb88a01cc2
commit f61639d4e2
3 changed files with 10 additions and 9 deletions

View File

@ -68,7 +68,12 @@ widstruct(Type *t, uint32 o, int flag)
// final width is rounded
if(flag)
o = rnd(o, maxround);
t->width = o;
// type width only includes back to first field's offset
if(t->type == T)
t->width = 0;
else
t->width = o - t->type->width;
return o;
}

View File

@ -906,11 +906,9 @@ sgen(Node *n, Node *ns, int32 w)
}
if(c >= 4) {
gconreg(AMOVQ, c, D_CX);
gins(AREP, N, N); // repeat
gins(AMOVSB, N, N); // MOVB *(SI)+,*(DI)+
} else
gins(AMOVSL, N, N); // MOVL *(SI)+,*(DI)+
c -= 4;
}
while(c > 0) {
gins(AMOVSB, N, N); // MOVB *(SI)+,*(DI)+
c--;

View File

@ -1887,11 +1887,9 @@ lsort(Sig *l, int(*f)(Sig*, Sig*))
void
setmaxarg(Type *t)
{
Type *to;
int32 w;
to = *getoutarg(t);
w = to->width;
w = t->argwid;
if(w > maxarg)
maxarg = w;
}