1
0
mirror of https://github.com/golang/go synced 2024-09-24 03:00:12 -06:00

fix possible infinite recursion in eqtype.

don't use intermediate register to move
32-or-fewer-bit immediate constants
into memory.

R=ken
OCL=23726
CL=23726
This commit is contained in:
Russ Cox 2009-01-28 16:42:26 -08:00
parent 3ec4675220
commit 282bf8cc8c
2 changed files with 5 additions and 3 deletions

View File

@ -554,7 +554,9 @@ gmove(Node *f, Node *t)
goto st;
st:
if(f->op == OCONST) {
// 64-bit immediates only allowed for move into registers.
// this is not a move into a register.
if(f->op == OCONST || (f->op == OLITERAL && !t64)) {
gins(a, f, t);
return;
}

View File

@ -1707,7 +1707,7 @@ eqtype(Type *t1, Type *t2, int d)
return 0;
if(ta->etype != TFIELD || tb->etype != TFIELD)
return 0;
if(!eqtype(ta->type, tb->type, 0))
if(!eqtype(ta->type, tb->type, d+1))
return 0;
ta = ta->down;
tb = tb->down;