set limit on optimization passes to prevent loop
authorem <none@none>
Tue, 9 Sep 1986 13:10:15 +0000 (13:10 +0000)
committerem <none@none>
Tue, 9 Sep 1986 13:10:15 +0000 (13:10 +0000)
in optimizer in case of bad table.

util/opt/peephole.c

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