6c bug with large constants

R=r
OCL=19056
CL=19056
This commit is contained in:
Ken Thompson 2008-11-11 18:15:36 -08:00
parent 6ee7fe5808
commit 902a4d5f29

View File

@ -642,6 +642,17 @@ gmove(Node *f, Node *t)
/*
* load
*/
if(ft == TVLONG || ft == TUVLONG)
if(f->op == OCONST)
if(f->vconst > 0x7fffffffLL || f->vconst < -0x7fffffffLL)
if(t->op != OREGISTER) {
regalloc(&nod, f, Z);
gmove(f, &nod);
gmove(&nod, t);
regfree(&nod);
return;
}
if(f->op == ONAME || f->op == OINDREG ||
f->op == OIND || f->op == OINDEX)
switch(ft) {