if (np->opcode == MESH || np->opcode == ick_ONESPOT || np->opcode == ick_TAIL)
np->width = 16;
else if (np->opcode == ick_TWOSPOT || np->opcode == ick_HYBRID
- || np->opcode == MINGLE || np->opcode == MESH32)
+ || np->opcode == MINGLE || np->opcode == MESH32
+ || np->opcode == UNKNOWNOP /* AIS */)
np->width = 32;
else if (np->opcode == AND || np->opcode == OR || np->opcode == XOR ||
np->opcode == FIN ||
np->width = np->rval->width;
else if (np->opcode == SELECT)
np->width = np->rval->width; /* n-bit select has an n-bit result */
- else if (np->opcode == UNKNOWNOP || np->opcode == INTERSECTION) /* AIS */
+ else if (np->opcode == INTERSECTION) /* AIS */
np->width = (np->rval ?
np->lval ? np->rval->width == 16 ? np->lval->width : 32 :
np->rval->width : np->lval ? np->lval->width : 32);
/*@observer@*/ char* errstr)
{
int st;
+ uint32_t rv;
st = ick_jicmatch(unopstr);
if(st)
{
ick_oo_twospots[vi3]=icd[2].accessors;
ick_global_createdata=icd;
ick_dogoto(st, emitlineno, 1);
+ rv = og3(ick_twospots[vi3]);
ick_retrieve(ick_twospots+vi1, ick_TWOSPOT, vi1,
ick_twoforget[vi1], ick_oo_twospots);
ick_retrieve(ick_twospots+vi2, ick_TWOSPOT, vi2,
}
else
ick_lose(IE000, emitlineno, errstr);
- return og3(ick_twospots[vi3]);
+ return rv;
}
/* Do a NEXT or goto. Gotos don't work with an empty NEXT stack, but that's
if(!firstslat) firstslat=$1;
else prevslat->nextslat=$1;
$1->nextslat=$3; prevslat=$3;
- $3->nextslat=0;
+ $3->nextslat=0; opoverused=1;
intern(ick_TWOSPOT, 1601);
intern(ick_TWOSPOT, 1602);
intern(ick_TWOSPOT, 1603);}}
if(!firstslat) firstslat=$1;
else prevslat->nextslat=$1;
$1->nextslat=$3; prevslat=$3;
- $3->nextslat=0;
+ $3->nextslat=0; opoverused=1;
intern(ick_TWOSPOT, 1601);
intern(ick_TWOSPOT, 1602);
intern(ick_TWOSPOT, 1603);}}
if(!firstslat) firstslat=$1;
else prevslat->nextslat=$1;
$1->nextslat=$3; prevslat=$3;
- $3->nextslat=0;
+ $3->nextslat=0; opoverused=1;
intern(ick_TWOSPOT, 1601);
intern(ick_TWOSPOT, 1602);
intern(ick_TWOSPOT, 1603);}}