Added local optimization of lin to lni.
authorbruce <none@none>
Mon, 9 Feb 1987 17:55:46 +0000 (17:55 +0000)
committerbruce <none@none>
Mon, 9 Feb 1987 17:55:46 +0000 (17:55 +0000)
modules/src/em_opt/mkcalls.c

index 71bf9bf..69c70a6 100644 (file)
@@ -4,6 +4,8 @@ static char rcsid[] = "$Header$";
 
 #include "nopt.h"
 
+static Linenumber = 0; /* Local optimization of lin to lni if possible */
+
 OO_mkcalls(p)
        struct instr *p;
 {
@@ -108,6 +110,7 @@ OO_mkcalls(p)
        case op_fif:
                O_fif(p->acst); break;
        case op_fil:
+               Linenumber = 0;
                if(p->argtype==nof_ptyp) O_fil_dlb(p->adlb, p->anoff);
                else O_fil_dnam(p->adnam, p->asoff); break;
        case op_gto:
@@ -125,6 +128,7 @@ OO_mkcalls(p)
        case op_ior:
                O_ior(p->acst); break;
        case op_lab:
+               Linenumber = 0;
                O_df_ilb(p->alab); break;
        case op_lae:
                if(p->argtype==nof_ptyp) O_lae_dlb(p->adlb, p->anoff);
@@ -149,9 +153,18 @@ OO_mkcalls(p)
        case op_lim:
                O_lim(); break;
        case op_lin:
-               O_lin(p->acst); break;
+               if(Linenumber && p->acst == ++Linenumber) {
+                       O_lni();
+               }
+               else {
+                       O_lin(p->acst);
+                       Linenumber = p->acst;
+               }
+               break;
        case op_lni:
-               O_lni(); break;
+               O_lni();
+               Linenumber++;
+               break;
        case op_loc:
                O_loc(p->acst); break;
        case op_loe: