set limit on optimization passes to prevent loop

in optimizer in case of bad table.
This commit is contained in:
em 1986-09-09 13:10:15 +00:00
parent d7716c5e5a
commit c685aa11b5

View file

@ -609,7 +609,9 @@ basicblock(alpp) line_p *alpp; {
register byte *bp; register byte *bp;
int i; int i;
short index; short index;
int npasses;
npasses = 0;
do { /* make pass over basicblock */ do { /* make pass over basicblock */
lpp = alpp; madeopt = FALSE; lpp = alpp; madeopt = FALSE;
while ((*lpp) != (line_p) 0 && ((*lpp)->l_instr&BMASK) != op_lab) { while ((*lpp) != (line_p) 0 && ((*lpp)->l_instr&BMASK) != op_lab) {
@ -648,5 +650,6 @@ basicblock(alpp) line_p *alpp; {
} }
lpp = next; lpp = next;
} }
} while(madeopt); /* as long as there is progress */ } while(madeopt && ++npasses<5000); /* as long as there is progress */
assert(!madeopt);
} }