Bell 32V release
[unix-history] / usr / src / cmd / f77 / exec.c
index 1351ad6..dc7cfd6 100644 (file)
@@ -64,8 +64,7 @@ else if(ctlstack->ctltype == CTLELSE)
        popctl();
        }
 
        popctl();
        }
 
-else
-       execerr("endif out of place", 0);
+else   execerr("endif out of place", 0);
 }
 
 
 }
 
 
@@ -89,6 +88,7 @@ LOCAL popctl()
 if( ctlstack-- < ctls )
        fatal("control stack empty");
 --blklevel;
 if( ctlstack-- < ctls )
        fatal("control stack empty");
 --blklevel;
+poplab();
 }
 
 
 }
 
 
@@ -453,7 +453,6 @@ while(here == dorange)
                }
 
        popctl();
                }
 
        popctl();
-       poplab();
        dorange = 0;
        for(q = ctlstack ; q>=ctls ; --q)
                if(q->ctltype == CTLDO)
        dorange = 0;
        for(q = ctlstack ; q>=ctls ; --q)
                if(q->ctltype == CTLDO)
@@ -524,8 +523,6 @@ putgoto(l1);
 exreturn(p)
 register expptr p;
 {
 exreturn(p)
 register expptr p;
 {
-if(procclass != CLPROC)
-       warn("RETURN statement in main or block data");
 if(p && (proctype!=TYSUBR || procclass!=CLPROC) )
        {
        err("alternate return in nonsubroutine");
 if(p && (proctype!=TYSUBR || procclass!=CLPROC) )
        {
        err("alternate return in nonsubroutine");
@@ -538,7 +535,7 @@ if(p)
        putgoto(retlabel);
        }
 else
        putgoto(retlabel);
        }
 else
-       putgoto(proctype==TYSUBR ? ret0label : retlabel);
+       putgoto(procclass==TYSUBR ? ret0label : retlabel);
 }
 
 
 }