mirror of
https://github.com/golang/go
synced 2024-11-22 15:24:42 -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:
parent
fb88a01cc2
commit
f61639d4e2
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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--;
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user