i++; tp--;
}
if (tokpatlen>stackheight) {
+ int k;
stackpad = tokpatlen-stackheight;
- for (j=stackheight-1;j>=0;j--)
- fakestack[j+stackpad] = fakestack[j];
+ for (j=stackheight-1, k = j + stackpad;j>=0;j--, k--) {
+ fakestack[k] = fakestack[j];
+ /* fakestack[j+stackpad] = fakestack[j]; does not
+ compile under Xenix
+ */
+ }
for (j=0;j<stackpad;j++)
fakestack[j].t_token=0;
stackheight += stackpad;
do {
npos=exactmatch=0;
for(rpp=reglist[propno];rp= *rpp; rpp++)
- if (getrefcount(rp-machregs)==0) {
+ if (getrefcount(rp-machregs, FALSE)==0) {
pos[npos++] = rp-machregs;
if (eqtoken(&rp->r_contents,&token))
exactmatch++;
}
} else {
decision = forced;
- if (getrefcount(decision)!=0) {
+ if (getrefcount(decision, FALSE)!=0) {
totalcost = INFINITY;
BROKE();
}
}
for (i=0;i<repllen;i++) {
assert(stackheight<MAXFSTACK);
- fakestack[stackheight++] = reptoken[i];
+ fakestack[stackheight] = reptoken[i];
+ stackheight++;
+ /* do not combine previous two statements; that does not
+ compile under Xenix V3.2
+ */
}
for(i=0;i<nallreg;i++)
chrefcount(allreg[i],-1,FALSE);
emrepllen=(codep[-1]>>5)&07;
j=emp-emlines;
if (emrepllen>j) {
- assert(nemlines+emrepllen-j<MAXEMLINES);
- for (i=nemlines;i>=0;i--)
- emlines[i+emrepllen-j] = emlines[i];
+ int k = nemlines + emrepllen - j;
+ assert(k<MAXEMLINES);
+ for (i=nemlines;i>=0;i--, k--)
+ emlines[k] = emlines[i];
nemlines += emrepllen-j;
emp += emrepllen-j;
}
#endif
}
-getrefcount(regno) {
+getrefcount(regno, tflag) {
register struct reginfo *rp;
register i,maxcount;
#if MAXMEMBERS!=0
if (rp->r_members[0]==0)
#endif
- return(rp->r_refcount);
+ return(rp->r_refcount - (tflag ? rp->r_tcount : 0));
#if MAXMEMBERS!=0
else {
maxcount=0;
for (i=0;i<MAXMEMBERS;i++)
if (rp->r_members[i]!=0)
- maxcount=max(maxcount,getrefcount(rp->r_members[i]));
+ maxcount=max(maxcount,getrefcount(rp->r_members[i], tflag));
return(maxcount);
}
#endif
if (tp->t_token == -1) { /* register frame */
bitno = tp->t_att[0].ar+1;
if (tep->set_val[bitno>>4]&(1<<(bitno&017)))
- if (tep->set_val[0]&1 || getrefcount(tp->t_att[0].ar)<=1)
+ if (tep->set_val[0]&1 || getrefcount(tp->t_att[0].ar, FALSE)<=1)
goto oklabel;
return(0);
} else { /* token frame */
if (cp->c1_prop>=0) {
for (rpp=reglist[cp->c1_prop];
(rp = *rpp)!=0 &&
- getrefcount(rp-machregs)!=0;
+ getrefcount(rp-machregs, TRUE)!=0;
rpp++)
;
if (rp==0)