p1_subr_ret(expptr retexp) #endif { p1put (P1_SUBR_RET); p1_expr (cpexpr(retexp)); } /* p1_subr_ret */
p1_for(expptr init, expptr test, expptr inc) #endif { p1put (P1_FOR); p1_expr (init); p1_expr (test); p1_expr (inc); } /* p1_for */
void enddcl(Void) { register struct Entrypoint *ep; struct Entrypoint *ep0; chainp cp; extern char *err_proc; static char comblks[] = "common blocks"; err_proc = comblks; docommon(); /* Now the hash table entries for fields of common blocks have STGCOMMON, vdcldone, voffset, and varno. And the common blocks themselves have their full sizes in extleng. */ err_proc = "equivalences"; doequiv(); err_proc = comblks; docomleng(); /* This implies that entry points in the declarations are buffered in entries but not written out */ err_proc = "entries"; if (ep = ep0 = (struct Entrypoint *)revchain((chainp)entries)) { /* entries could be 0 in case of an error */ do doentry(ep); while(ep = ep->entnextp); entries = (struct Entrypoint *)revchain((chainp)ep0); } err_proc = 0; parstate = INEXEC; p1put(P1_PROCODE); freetemps(); if (earlylabs) { for(cp = earlylabs = revchain(earlylabs); cp; cp = cp->nextp) p1_label((long)cp->datap); frchain(&earlylabs); } p1_line_number(lineno); /* for files that start with a MAIN program */ /* that starts with an executable statement */ }
p1comp_goto(expptr index, int count, struct Labelblock **labels) #endif { struct Constblock c; int i; register struct Labelblock *L; p1put (P1_COMP_GOTO); p1_expr (index); /* Write out a P1_LIST directly, to avoid the overhead of allocating a list before it's needed HACK HACK HACK */ p1putddd (P1_LIST, TLIST, TYUNKNOWN, count); c.vtype = TYLONG; c.vleng = 0; for (i = 0; i < count; i++) { L = labels[i]; L->labused = 1; c.Const.ci = L->stateno; p1_const(&c); } /* for i = 0 */ } /* p1comp_goto */
void p1for_end(Void) { p1put (P1_ENDFOR); } /* p1for_end */
void p1else_end(Void) { p1put (P1_ENDELSE); } /* p1else_end */
void p1_endif(Void) { p1put (P1_ENDIF); } /* p1_endif */
void p1_else(Void) { p1put (P1_ELSE); } /* p1_else */
p1_elif(expptr expr) #endif { p1put (P1_ELIF); p1_expr (expr); } /* p1_elif */
p1_asgoto(Addrp addrp) #endif { p1put (P1_ASGOTO); p1_addr (addrp); } /* p1_asgoto */