|
@@ -9,7 +9,6 @@
|
|
|
*
|
|
|
*/
|
|
|
|
|
|
-
|
|
|
#include <stdio.h>
|
|
|
#include "types.h"
|
|
|
#include "debug.h"
|
|
@@ -22,54 +21,52 @@
|
|
|
#include "alloc.h"
|
|
|
#include "go.h"
|
|
|
|
|
|
-
|
|
|
-STATIC bool report_flag = FALSE; /* report #optimizations found? */
|
|
|
+STATIC bool report_flag = FALSE; /* report #optimizations found? */
|
|
|
#ifdef DEBUG
|
|
|
-STATIC bool core_flag = FALSE; /* report core usage? */
|
|
|
+STATIC bool core_flag = FALSE; /* report core usage? */
|
|
|
#endif
|
|
|
|
|
|
-
|
|
|
-STATIC mach_init(machfile,phase_machinit)
|
|
|
- char *machfile;
|
|
|
- int (*phase_machinit)();
|
|
|
+STATIC mach_init(machfile, phase_machinit) char* machfile;
|
|
|
+int (*phase_machinit)();
|
|
|
{
|
|
|
/* Read target machine dependent information */
|
|
|
|
|
|
- FILE *f;
|
|
|
+ FILE* f;
|
|
|
|
|
|
- f = openfile(machfile,"r");
|
|
|
- fscanf(f,"%d",&ws);
|
|
|
- fscanf(f,"%d",&ps);
|
|
|
- if (ws != ps && ps != 2*ws) error("illegal pointer size");
|
|
|
+ f = openfile(machfile, "r");
|
|
|
+ fscanf(f, "%d", &ws);
|
|
|
+ fscanf(f, "%d", &ps);
|
|
|
+ if (ws != ps && ps != 2 * ws)
|
|
|
+ error("illegal pointer size");
|
|
|
(*phase_machinit)(f);
|
|
|
fclose(f);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-go(argc,argv,initialize,optimize,phase_machinit,proc_flag)
|
|
|
- int argc;
|
|
|
- char *argv[];
|
|
|
- int (*initialize)();
|
|
|
- int (*optimize)();
|
|
|
- int (*phase_machinit)();
|
|
|
- int (*proc_flag)();
|
|
|
+go(argc, argv, initialize, optimize, phase_machinit, proc_flag) int argc;
|
|
|
+char* argv[];
|
|
|
+int (*initialize)();
|
|
|
+int (*optimize)();
|
|
|
+int (*phase_machinit)();
|
|
|
+int (*proc_flag)();
|
|
|
{
|
|
|
- FILE *f, *gf, *f2, *gf2; /* The EM input and output and
|
|
|
+ FILE* f, *gf, *f2, *gf2; /* The EM input and output and
|
|
|
* the basic block graphs input and output
|
|
|
*/
|
|
|
bblock_p g;
|
|
|
line_p l;
|
|
|
short kind;
|
|
|
int i;
|
|
|
- char *p;
|
|
|
+ char* p;
|
|
|
bool time_opt = TRUE;
|
|
|
|
|
|
linecount = 0;
|
|
|
- for (i = ARGSTART; i < argc; i++) {
|
|
|
+ for (i = ARGSTART; i < argc; i++)
|
|
|
+ {
|
|
|
p = argv[i];
|
|
|
- if (*p++ != '-') error("illegal argument");
|
|
|
- switch(*p) {
|
|
|
+ if (*p++ != '-')
|
|
|
+ error("illegal argument");
|
|
|
+ switch (*p)
|
|
|
+ {
|
|
|
case 'S':
|
|
|
time_opt = FALSE;
|
|
|
break;
|
|
@@ -78,7 +75,7 @@ go(argc,argv,initialize,optimize,phase_machinit,proc_flag)
|
|
|
break;
|
|
|
case 'M':
|
|
|
p++;
|
|
|
- mach_init(p,phase_machinit);
|
|
|
+ mach_init(p, phase_machinit);
|
|
|
break;
|
|
|
case 'C':
|
|
|
#ifdef DEBUG
|
|
@@ -98,31 +95,34 @@ go(argc,argv,initialize,optimize,phase_machinit,proc_flag)
|
|
|
}
|
|
|
time_space_ratio = (time_opt ? 100 : 0);
|
|
|
fproc = getptable(pname); /* proc table */
|
|
|
- fdblock = getdtable(dname); /* data block table */
|
|
|
+ fdblock = getdtable(dname); /* data block table */
|
|
|
(*initialize)();
|
|
|
- if (optimize == no_action) return;
|
|
|
- f = openfile(lname,"r");
|
|
|
- gf = openfile(bname,"r");
|
|
|
- f2 = openfile(lname2,"w");
|
|
|
- gf2 = openfile(bname2,"w");
|
|
|
+ if (optimize == no_action)
|
|
|
+ return;
|
|
|
+ f = openfile(lname, "r");
|
|
|
+ gf = openfile(bname, "r");
|
|
|
+ f2 = openfile(lname2, "w");
|
|
|
+ gf2 = openfile(bname2, "w");
|
|
|
mesregs = Lempty_set();
|
|
|
- while (getunit(gf,f,&kind,&g,&l,&curproc,TRUE)) {
|
|
|
+ while (getunit(gf, f, &kind, &g, &l, &curproc, TRUE))
|
|
|
+ {
|
|
|
/* Read the control flow graph and EM text of
|
|
|
* one procedure and optimize it.
|
|
|
*/
|
|
|
- if (kind == LDATA) {
|
|
|
- putunit(LDATA, (proc_p) 0, l, gf2, f2);
|
|
|
+ if (kind == LDATA)
|
|
|
+ {
|
|
|
+ putunit(LDATA, (proc_p)0, l, gf2, f2);
|
|
|
continue;
|
|
|
}
|
|
|
- OUTTRACE("flow graph of proc %d read",curproc->p_id);
|
|
|
+ OUTTRACE("flow graph of proc %d read", curproc->p_id);
|
|
|
curproc->p_start = g;
|
|
|
/* The global variable curproc points to the
|
|
|
* current procedure. It is set by getgraph
|
|
|
*/
|
|
|
(*optimize)(curproc);
|
|
|
- putunit(LTEXT,curproc,(line_p) 0,gf2,f2);
|
|
|
+ putunit(LTEXT, curproc, (line_p)0, gf2, f2);
|
|
|
/* output control flow graph + text */
|
|
|
- OUTTRACE("graph of proc %d outputted",curproc->p_id);
|
|
|
+ OUTTRACE("graph of proc %d outputted", curproc->p_id);
|
|
|
Ldeleteset(mesregs);
|
|
|
mesregs = Lempty_set();
|
|
|
}
|
|
@@ -130,34 +130,34 @@ go(argc,argv,initialize,optimize,phase_machinit,proc_flag)
|
|
|
fclose(f2);
|
|
|
fclose(gf);
|
|
|
fclose(gf2);
|
|
|
- f = openfile(dname2,"w");
|
|
|
- putdtable(fdblock,f);
|
|
|
+ f = openfile(dname2, "w");
|
|
|
+ putdtable(fdblock, f);
|
|
|
/* fclose(f); done by putdtable */
|
|
|
- f = openfile(pname2,"w");
|
|
|
- putptable(fproc,f,TRUE);
|
|
|
+ f = openfile(pname2, "w");
|
|
|
+ putptable(fproc, f, TRUE);
|
|
|
/* fclose(f); done by putptable */
|
|
|
core_usage();
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-no_action() { }
|
|
|
+no_action() {}
|
|
|
|
|
|
core_usage()
|
|
|
{
|
|
|
#ifdef DEBUG
|
|
|
- if (core_flag) {
|
|
|
+ if (core_flag)
|
|
|
+ {
|
|
|
coreusage();
|
|
|
}
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
-report(s,n)
|
|
|
- char *s;
|
|
|
- int n;
|
|
|
+report(s, n) char* s;
|
|
|
+int n;
|
|
|
{
|
|
|
/* Report number of optimizations found, if report_flag is set */
|
|
|
|
|
|
- if (report_flag) {
|
|
|
- fprintf(stderr,"%s: %d\n",s,n);
|
|
|
+ if (report_flag)
|
|
|
+ {
|
|
|
+ fprintf(stderr, "%s: %d\n", s, n);
|
|
|
}
|
|
|
}
|