Run through clang-format.

This commit is contained in:
David Given 2016-08-21 19:53:14 +02:00
parent 671bf250f5
commit 44b6421519

View file

@ -29,41 +29,36 @@
#include "../share/put.h" #include "../share/put.h"
#include "../share/aux.h" #include "../share/aux.h"
/* Global variables */ /* Global variables */
dblock_p db;
dblock_p hol0_db; /* dblock for ABS block */
char* curhol; /* name of hol block in current scope */
dblock_p ldblock; /* last dblock */
proc_p lproc; /* last proc */
short tabval; /* used by table1, table2 and table3 */
offset tabval2;
char string[IDL + 1];
line_p firstline; /* first line of current procedure */
line_p lastline; /* last line read */
int labelcount; /* # labels in current procedure */
short fragm_type = DUNKNOWN; /* fragm. type: DCON, DROM or DUNKNOWN */
short fragm_nr = 0; /* fragment number */
obj_id lastoid = 0;
proc_id lastpid = 0;
dblock_id lastdid = 0;
lab_id lastlid = 0;
dblock_p db; offset mespar = UNKNOWN_SIZE;
dblock_p hol0_db; /* dblock for ABS block */ /* argumument of ps_par message of current procedure */
char *curhol; /* name of hol block in current scope */
dblock_p ldblock; /* last dblock */
proc_p lproc; /* last proc */
short tabval; /* used by table1, table2 and table3 */
offset tabval2;
char string[IDL+1];
line_p firstline; /* first line of current procedure */
line_p lastline; /* last line read */
int labelcount; /* # labels in current procedure */
short fragm_type = DUNKNOWN; /* fragm. type: DCON, DROM or DUNKNOWN */
short fragm_nr = 0; /* fragment number */
obj_id lastoid = 0;
proc_id lastpid = 0;
dblock_id lastdid = 0;
lab_id lastlid = 0;
offset mespar = UNKNOWN_SIZE; extern process_lines();
/* argumument of ps_par message of current procedure */ extern int readline();
extern line_p readoperand();
extern line_p inpseudo();
main(argc, argv) int argc;
extern process_lines(); char* argv[];
extern int readline();
extern line_p readoperand();
extern line_p inpseudo();
main(argc,argv)
int argc;
char *argv[];
{ {
/* The input files must be legal EM Compact /* The input files must be legal EM Compact
* Assembly Language files, as produced by the EM Peephole * Assembly Language files, as produced by the EM Peephole
@ -77,25 +72,26 @@ main(argc,argv)
* - ddump: the names of all data blocks * - ddump: the names of all data blocks
*/ */
FILE *lfile, *dfile, *pfile, *pdump, *ddump; FILE* lfile, *dfile, *pfile, *pdump, *ddump;
lfile = openfile(lname2,"w"); lfile = openfile(lname2, "w");
pdump = openfile(argv[1],"w"); pdump = openfile(argv[1], "w");
ddump = openfile(argv[2],"w"); ddump = openfile(argv[2], "w");
hol0_db = block_of_lab((char *) 0); hol0_db = block_of_lab((char*)0);
while (next_file(argc,argv) != NULL) { while (next_file(argc, argv) != NULL)
{
/* Read all EM input files, process the code /* Read all EM input files, process the code
* and concatenate all output. * and concatenate all output.
*/ */
curhol = (char *) 0; curhol = (char*)0;
process_lines(lfile); process_lines(lfile);
dump_procnames(prochash,NPROCHASH,pdump); dump_procnames(prochash, NPROCHASH, pdump);
dump_dblocknames(symhash,NSYMHASH,ddump); dump_dblocknames(symhash, NSYMHASH, ddump);
/* Save the names of all procedures that were /* Save the names of all procedures that were
* first come accross in this file. * first come accross in this file.
*/ */
cleanprocs(prochash,NPROCHASH,PF_EXTERNAL); cleanprocs(prochash, NPROCHASH, PF_EXTERNAL);
cleandblocks(symhash,NSYMHASH,DF_EXTERNAL); cleandblocks(symhash, NSYMHASH, DF_EXTERNAL);
/* Make all procedure names that were internal /* Make all procedure names that were internal
* in this input file invisible. * in this input file invisible.
*/ */
@ -104,29 +100,25 @@ main(argc,argv)
fclose(pdump); fclose(pdump);
fclose(ddump); fclose(ddump);
/* remove the remainder of the hashing tables */ /* remove the remainder of the hashing tables */
cleanprocs(prochash,NPROCHASH,0); cleanprocs(prochash, NPROCHASH, 0);
cleandblocks(symhash,NSYMHASH,0); cleandblocks(symhash, NSYMHASH, 0);
/* Now write the datablock table and the proctable */ /* Now write the datablock table and the proctable */
dfile = openfile(dname2,"w"); dfile = openfile(dname2, "w");
putdtable(fdblock, dfile); putdtable(fdblock, dfile);
pfile = openfile(pname2,"w"); pfile = openfile(pname2, "w");
putptable(fproc, pfile,FALSE); putptable(fproc, pfile, FALSE);
exit(0); exit(0);
} }
/* Value returned by readline */ /* Value returned by readline */
#define NORMAL 0 #define NORMAL 0
#define WITH_OPERAND 1 #define WITH_OPERAND 1
#define EOFILE 2 #define EOFILE 2
#define PRO_INSTR 3 #define PRO_INSTR 3
#define END_INSTR 4 #define END_INSTR 4
#define DELETED_INSTR 5 #define DELETED_INSTR 5
STATIC add_end() STATIC add_end()
{ {
@ -137,13 +129,12 @@ STATIC add_end()
lastline->l_instr = ps_end; lastline->l_instr = ps_end;
} }
process_lines(fout) process_lines(fout)
FILE *fout; FILE* fout;
{ {
line_p lnp; line_p lnp;
short instr; short instr;
bool eof; bool eof;
/* Read and process the code contained in the current file, /* Read and process the code contained in the current file,
* on a per procedure basis. * on a per procedure basis.
@ -162,20 +153,23 @@ process_lines(fout)
*/ */
eof = FALSE; eof = FALSE;
firstline = (line_p) 0; firstline = (line_p)0;
lastline = (line_p) 0; lastline = (line_p)0;
while (!eof) { while (!eof)
linecount++; /* for error messages */ {
switch(readline(&instr, &lnp)) { linecount++; /* for error messages */
switch (readline(&instr, &lnp))
{
/* read one line, see what kind it is */ /* read one line, see what kind it is */
case WITH_OPERAND: case WITH_OPERAND:
/* instruction with operand, e.g. LOL 10 */ /* instruction with operand, e.g. LOL 10 */
lnp = readoperand(instr); lnp = readoperand(instr);
lnp->l_instr = instr; lnp->l_instr = instr;
/* Fall through! */ /* Fall through! */
case NORMAL: case NORMAL:
VL(lnp); VL(lnp);
if (lastline != (line_p) 0) { if (lastline != (line_p)0)
{
lastline->l_next = lnp; lastline->l_next = lnp;
} }
lastline = lnp; lastline = lnp;
@ -183,21 +177,23 @@ process_lines(fout)
case EOFILE: case EOFILE:
eof = TRUE; eof = TRUE;
fragm_type = DUNKNOWN; fragm_type = DUNKNOWN;
if (firstline != (line_p) 0) { if (firstline != (line_p)0)
{
add_end(); add_end();
putlines(firstline,fout); putlines(firstline, fout);
firstline = (line_p) 0; firstline = (line_p)0;
} }
break; break;
case PRO_INSTR: case PRO_INSTR:
VL(lnp); VL(lnp);
labelcount = 0; labelcount = 0;
if (firstline != lnp) { if (firstline != lnp)
{
/* If PRO is not the first /* If PRO is not the first
* instruction: * instruction:
*/ */
add_end(); add_end();
putlines(firstline,fout); putlines(firstline, fout);
firstline = lnp; firstline = lnp;
} }
lastline = lnp; lastline = lnp;
@ -205,12 +201,12 @@ process_lines(fout)
case END_INSTR: case END_INSTR:
curproc->p_nrformals = mespar; curproc->p_nrformals = mespar;
mespar = UNKNOWN_SIZE; mespar = UNKNOWN_SIZE;
assert(lastline != (line_p) 0); assert(lastline != (line_p)0);
lastline->l_next = lnp; lastline->l_next = lnp;
putlines(firstline,fout); putlines(firstline, fout);
/* write and delete code */ /* write and delete code */
firstline = (line_p) 0; firstline = (line_p)0;
lastline = (line_p) 0; lastline = (line_p)0;
cleaninstrlabs(); cleaninstrlabs();
/* scope of instruction labels ends here, /* scope of instruction labels ends here,
* so forget about them. * so forget about them.
@ -226,11 +222,8 @@ process_lines(fout)
} }
} }
int readline(instr_out, lnp_out) short* instr_out;
line_p* lnp_out;
int readline(instr_out, lnp_out)
short *instr_out;
line_p *lnp_out;
{ {
register line_p lnp; register line_p lnp;
short n; short n;
@ -241,9 +234,10 @@ int readline(instr_out, lnp_out)
* return the instruction code via instr_out. * return the instruction code via instr_out.
*/ */
VA((short *) instr_out); VA((short*)instr_out);
VA((short *) lnp_out); VA((short*)lnp_out);
switch(table1()) { switch (table1())
{
/* table1 sets string, tabval or tabval2 and /* table1 sets string, tabval or tabval2 and
* returns an indication of what was read. * returns an indication of what was read.
*/ */
@ -259,10 +253,11 @@ int readline(instr_out, lnp_out)
db = block_of_lab(string); db = block_of_lab(string);
/* global variable, used by inpseudo */ /* global variable, used by inpseudo */
lnp = newline(OPSHORT); lnp = newline(OPSHORT);
SHORT(lnp) = (short) db->d_id; SHORT(lnp) = (short)db->d_id;
lnp->l_instr = ps_sym; lnp->l_instr = ps_sym;
*lnp_out = lnp; *lnp_out = lnp;
if (firstline == (line_p) 0) { if (firstline == (line_p)0)
{
firstline = lnp; firstline = lnp;
/* only a pseudo (e.g. PRO) or data label /* only a pseudo (e.g. PRO) or data label
* can be the first instruction. * can be the first instruction.
@ -280,43 +275,47 @@ int readline(instr_out, lnp_out)
case PSEU: case PSEU:
n = tabval; n = tabval;
lnp = inpseudo(n); /* read a pseudo */ lnp = inpseudo(n); /* read a pseudo */
if (n == ps_hol) n = ps_bss; if (n == ps_hol)
if (lnp == (line_p) 0) return DELETED_INSTR; n = ps_bss;
if (lnp == (line_p)0)
return DELETED_INSTR;
*lnp_out = lnp; *lnp_out = lnp;
lnp->l_instr = n; lnp->l_instr = n;
if (firstline == (line_p) 0) { if (firstline == (line_p)0)
{
firstline = lnp; firstline = lnp;
/* only a pseudo (e.g. PRO) or data label /* only a pseudo (e.g. PRO) or data label
* can be the first instruction. * can be the first instruction.
*/ */
} }
if (n == ps_end) return END_INSTR; if (n == ps_end)
if (n == ps_pro) return PRO_INSTR; return END_INSTR;
if (n == ps_pro)
return PRO_INSTR;
return NORMAL; return NORMAL;
} }
/* NOTREACHED */ /* NOTREACHED */
} }
line_p readoperand(instr) short instr;
line_p readoperand(instr)
short instr;
{ {
/* Read the operand of the given instruction. /* Read the operand of the given instruction.
* Create a line struct and return a pointer to it. * Create a line struct and return a pointer to it.
*/ */
register line_p lnp; register line_p lnp;
short flag; short flag;
VI(instr); VI(instr);
flag = em_flag[ instr - sp_fmnem] & EM_PAR; flag = em_flag[instr - sp_fmnem] & EM_PAR;
if (flag == PAR_NO) { if (flag == PAR_NO)
{
return (newline(OPNO)); return (newline(OPNO));
} }
switch(table2()) { switch (table2())
{
case sp_cend: case sp_cend:
return(newline(OPNO)); return (newline(OPNO));
case CSTX1: case CSTX1:
/* constant */ /* constant */
/* If the instruction has the address /* If the instruction has the address
@ -327,31 +326,31 @@ line_p readoperand(instr)
* Similarly, the instruction may have * Similarly, the instruction may have
* an instruction label as argument. * an instruction label as argument.
*/ */
switch(flag) { switch (flag)
case PAR_G: {
lnp = newline(OPOBJECT); case PAR_G:
OBJ(lnp) = lnp = newline(OPOBJECT);
object(curhol,(offset) tabval, OBJ(lnp) = object(curhol, (offset)tabval,
opr_size(instr)); opr_size(instr));
break; break;
case PAR_B: case PAR_B:
lnp = newline(OPINSTRLAB); lnp = newline(OPINSTRLAB);
INSTRLAB(lnp) = instr_lab(tabval); INSTRLAB(lnp) = instr_lab(tabval);
break; break;
default: default:
lnp = newline(OPSHORT); lnp = newline(OPSHORT);
SHORT(lnp) = tabval; SHORT(lnp) = tabval;
break; break;
} }
break; break;
#ifdef LONGOFF #ifdef LONGOFF
case CSTX2: case CSTX2:
/* double constant */ /* double constant */
if (flag == PAR_G) { if (flag == PAR_G)
{
lnp = newline(OPOBJECT); lnp = newline(OPOBJECT);
OBJ(lnp) = OBJ(lnp) = object(curhol, tabval2,
object(curhol, tabval2, opr_size(instr));
opr_size(instr));
break; break;
} }
lnp = newline(OPOFFSET); lnp = newline(OPOFFSET);
@ -366,24 +365,24 @@ line_p readoperand(instr)
case DLBX: case DLBX:
/* applied occurrence data label */ /* applied occurrence data label */
lnp = newline(OPOBJECT); lnp = newline(OPOBJECT);
OBJ(lnp) = object(string, (offset) 0, OBJ(lnp) = object(string, (offset)0,
opr_size(instr) ); opr_size(instr));
break; break;
case VALX1: case VALX1:
lnp = newline(OPOBJECT); lnp = newline(OPOBJECT);
OBJ(lnp) = object(string, (offset) tabval, OBJ(lnp) = object(string, (offset)tabval,
opr_size(instr) ); opr_size(instr));
break; break;
#ifdef LONGOFF #ifdef LONGOFF
case VALX2: case VALX2:
lnp = newline(OPOBJECT); lnp = newline(OPOBJECT);
OBJ(lnp) = object(string,tabval2, OBJ(lnp) = object(string, tabval2,
opr_size(instr) ); opr_size(instr));
break; break;
#endif #endif
case sp_pnam: case sp_pnam:
lnp = newline(OPPROC); lnp = newline(OPPROC);
PROC(lnp) = proclookup(string,OCCURRING); PROC(lnp) = proclookup(string, OCCURRING);
VP(PROC(lnp)); VP(PROC(lnp));
break; break;
default: default:
@ -392,36 +391,35 @@ line_p readoperand(instr)
return lnp; return lnp;
} }
static char* hol_label()
static char *hol_label()
{ {
static int holno; static int holno;
line_p lnp; line_p lnp;
extern char *lastname; extern char* lastname;
/* Create a label for a hol pseudo, so that it can be converted /* Create a label for a hol pseudo, so that it can be converted
* into a bss. The label is appended to the list of instructions. * into a bss. The label is appended to the list of instructions.
*/ */
sprintf(string, "_HH%d", ++holno); sprintf(string, "_HH%d", ++holno);
symlookup(string, OCCURRING); /* to make it exa */ symlookup(string, OCCURRING); /* to make it exa */
db = block_of_lab(string); db = block_of_lab(string);
lnp = newline(OPSHORT); lnp = newline(OPSHORT);
SHORT(lnp) = (short) db->d_id; SHORT(lnp) = (short)db->d_id;
lnp->l_instr = ps_sym; lnp->l_instr = ps_sym;
if (firstline == (line_p) 0) { if (firstline == (line_p)0)
{
firstline = lnp; firstline = lnp;
} }
if (lastline != (line_p) 0) { if (lastline != (line_p)0)
{
lastline->l_next = lnp; lastline->l_next = lnp;
} }
lastline = lnp; lastline = lnp;
return lastname; return lastname;
} }
line_p inpseudo(n) short n;
line_p inpseudo(n)
short n;
{ {
int m; int m;
line_p lnp; line_p lnp;
@ -436,45 +434,50 @@ line_p inpseudo(n)
* be recorded in the datablock or procedure table. * be recorded in the datablock or procedure table.
*/ */
switch (n)
switch(n) { {
case ps_hol: case ps_hol:
/* hol pseudos are carefully converted into bss /* hol pseudos are carefully converted into bss
* pseudos, so that the IL phase will not be * pseudos, so that the IL phase will not be
* bothered by this. Also, references to the ABS * bothered by this. Also, references to the ABS
* block will still work when passed through EGO. * block will still work when passed through EGO.
*/ */
if (lastline != (line_p) 0 && is_datalabel(lastline)) { if (lastline != (line_p)0 && is_datalabel(lastline))
extern char *lastname; {
extern char* lastname;
curhol = lastname; curhol = lastname;
} }
else { else
{
curhol = hol_label(); curhol = hol_label();
} }
n = ps_bss; n = ps_bss;
/* fall through */ /* fall through */
case ps_bss: case ps_bss:
case ps_rom: case ps_rom:
case ps_con: case ps_con:
if (lastline == (line_p) 0 || !is_datalabel(lastline)) { if (lastline == (line_p)0 || !is_datalabel(lastline))
assert(lastline != (line_p) 0); {
assert(lastline != (line_p)0);
nlast = INSTR(lastline); nlast = INSTR(lastline);
if (n == nlast && if (n == nlast && (n == ps_rom || n == ps_con))
(n == ps_rom || n == ps_con)) { {
/* Two successive roms/cons are /* Two successive roms/cons are
* combined into one data block * combined into one data block
* if the second is not preceded by * if the second is not preceded by
* a data label. * a data label.
*/ */
lnp = arglist(0); lnp = arglist(0);
pseu = (byte) (n == ps_rom?DROM:DCON); pseu = (byte)(n == ps_rom ? DROM : DCON);
combine(db,lastline,lnp,pseu); combine(db, lastline, lnp, pseu);
oldline(lnp); oldline(lnp);
return (line_p) 0; return (line_p)0;
} else { }
error("datablock without label"); else
{
error("datablock without label");
} }
} }
VD(db); VD(db);
@ -483,14 +486,16 @@ line_p inpseudo(n)
/* Read the arguments, 3 for hol or bss and a list /* Read the arguments, 3 for hol or bss and a list
* of undetermined length for rom and con. * of undetermined length for rom and con.
*/ */
dblockdef(db,n,lnp); dblockdef(db, n, lnp);
/* Fill in d_pseudo, d_size and d_values fields of db */ /* Fill in d_pseudo, d_size and d_values fields of db */
if (fragm_type != db->d_pseudo) { if (fragm_type != db->d_pseudo)
{
/* Keep track of fragment numbers, /* Keep track of fragment numbers,
* enter a new fragment. * enter a new fragment.
*/ */
fragm_nr++; fragm_nr++;
switch(db->d_pseudo) { switch (db->d_pseudo)
{
case DCON: case DCON:
case DROM: case DROM:
fragm_type = db->d_pseudo; fragm_type = db->d_pseudo;
@ -511,16 +516,16 @@ line_p inpseudo(n)
* the EM visibility rules). * the EM visibility rules).
* The result (a dblock pointer) is voided. * The result (a dblock pointer) is voided.
*/ */
return (line_p) 0; return (line_p)0;
case ps_inp: case ps_inp:
getproc(DEFINING); /* same idea */ getproc(DEFINING); /* same idea */
return (line_p) 0; return (line_p)0;
case ps_exa: case ps_exa:
getsym(OCCURRING); getsym(OCCURRING);
return (line_p) 0; return (line_p)0;
case ps_exp: case ps_exp:
getproc(OCCURRING); getproc(OCCURRING);
return (line_p) 0; return (line_p)0;
case ps_pro: case ps_pro:
curproc = getproc(DEFINING); curproc = getproc(DEFINING);
/* This is a real defining occurrence of a proc */ /* This is a real defining occurrence of a proc */
@ -531,7 +536,7 @@ line_p inpseudo(n)
*/ */
lnp = newline(OPPROC); lnp = newline(OPPROC);
PROC(lnp) = curproc; PROC(lnp) = curproc;
lnp->l_instr = (byte) ps_pro; lnp->l_instr = (byte)ps_pro;
return lnp; return lnp;
case ps_end: case ps_end:
curproc->p_nrlabels = labelcount; curproc->p_nrlabels = labelcount;
@ -543,27 +548,28 @@ line_p inpseudo(n)
return lnp; return lnp;
case ps_mes: case ps_mes:
lnp = arglist(0); lnp = arglist(0);
switch((int) aoff(ARG(lnp),0)) { switch ((int)aoff(ARG(lnp), 0))
case ms_err: {
error("ms_err encountered"); case ms_err:
case ms_opt: error("ms_err encountered");
error("ms_opt encountered"); case ms_opt:
case ms_emx: error("ms_opt encountered");
ws = aoff(ARG(lnp),1); case ms_emx:
ps = aoff(ARG(lnp),2); ws = aoff(ARG(lnp), 1);
break; ps = aoff(ARG(lnp), 2);
case ms_ext: break;
case ms_ext:
/* this message was already processed /* this message was already processed
* by the lib package * by the lib package
*/ */
case ms_src: case ms_src:
/* Don't bother about linecounts */ /* Don't bother about linecounts */
oldline(lnp); oldline(lnp);
return (line_p) 0; return (line_p)0;
case ms_par: case ms_par:
mespar = aoff(ARG(lnp),1); mespar = aoff(ARG(lnp), 1);
/* #bytes of parameters of current proc */ /* #bytes of parameters of current proc */
break; break;
} }
return lnp; return lnp;
default: default: