Warning hunt on ego.

This commit is contained in:
Manoel Trapier 2013-03-19 18:45:41 +01:00 committed by Manoël Trapier
parent 25c717d9b3
commit 1b34c8cc9f
26 changed files with 232 additions and 206 deletions

View File

@ -278,7 +278,6 @@ static void bo_cleanproc(proc_p p)
loop_p lp; loop_p lp;
Lindex pi; Lindex pi;
bblock_p b;
for (pi = Lfirst(p->p_loops); pi != (Lindex) 0; for (pi = Lfirst(p->p_loops); pi != (Lindex) 0;
pi = Lnext(pi,p->p_loops)) { pi = Lnext(pi,p->p_loops)) {

View File

@ -161,7 +161,6 @@ static void new_name(char **s)
{ {
static int nn = 0; static int nn = 0;
char buf[20]; char buf[20];
int len = strlen(*s);
oldcore(*s, len+1); oldcore(*s, len+1);
buf[0] = '_'; buf[0] = '_';

View File

@ -26,6 +26,7 @@
#include "../share/get.h" #include "../share/get.h"
#include "../share/put.h" #include "../share/put.h"
#include "../share/def.h" #include "../share/def.h"
#include "../share/aux.h"
#include "cf.h" #include "cf.h"
#include "cf_succ.h" #include "cf_succ.h"
#include "cf_idom.h" #include "cf_idom.h"

View File

@ -56,7 +56,7 @@
static int Scj; /* number of optimizations found */ static int Scj; /* number of optimizations found */
static void showinstr(line_p lnp); /* static void showinstr(line_p lnp); */
#define DLINK(l1,l2) l1->l_next=l2; l2->l_prev=l1 #define DLINK(l1,l2) l1->l_next=l2; l2->l_prev=l1
@ -320,7 +320,7 @@ int main(int argc, char *argv[])
/****** /******
* Debugging stuff * Debugging stuff
*/ */
#if 0
extern char em_mnem[]; /* The mnemonics of the EM instructions. */ extern char em_mnem[]; /* The mnemonics of the EM instructions. */
static void showinstr(line_p lnp) static void showinstr(line_p lnp)
@ -350,3 +350,5 @@ static void showinstr(line_p lnp)
} }
printf("\n"); printf("\n");
} /* showinstr */ } /* showinstr */
#endif

View File

@ -24,43 +24,43 @@ STATIC struct inf_entity {
byte inf_used; /* Kind of entity used by key. */ byte inf_used; /* Kind of entity used by key. */
byte inf_size; /* Indication of the size. */ byte inf_size; /* Indication of the size. */
} inf_table[] = { } inf_table[] = {
op_adp, ENAOFFSETTED, PS, { op_adp, ENAOFFSETTED, PS },
op_dee, ENEXTERNAL, WS1, { op_dee, ENEXTERNAL, WS1 },
op_del, ENLOCAL, WS1, { op_del, ENLOCAL, WS1 },
op_ine, ENEXTERNAL, WS1, { op_ine, ENEXTERNAL, WS1 },
op_inl, ENLOCAL, WS1, { op_inl, ENLOCAL, WS1 },
op_lae, ENAEXTERNAL, PS, { op_lae, ENAEXTERNAL, PS },
op_lal, ENALOCAL, PS, { op_lal, ENALOCAL, PS },
op_lar, ENARRELEM, ARDESC3, { op_lar, ENARRELEM, ARDESC3 },
op_ldc, ENCONST, WS2, { op_ldc, ENCONST, WS2 },
op_lde, ENEXTERNAL, WS2, { op_lde, ENEXTERNAL, WS2 },
op_ldf, ENOFFSETTED, WS2, { op_ldf, ENOFFSETTED, WS2 },
op_ldl, ENLOCAL, WS2, { op_ldl, ENLOCAL, WS2 },
op_lil, ENINDIR, WS1, { op_lil, ENINDIR, WS1 },
op_lim, ENIGNMASK, WS1, { op_lim, ENIGNMASK, WS1 },
op_loc, ENCONST, WS1, { op_loc, ENCONST, WS1 },
op_loe, ENEXTERNAL, WS1, { op_loe, ENEXTERNAL, WS1 },
op_lof, ENOFFSETTED, WS1, { op_lof, ENOFFSETTED, WS1 },
op_loi, ENINDIR, ARGW, { op_loi, ENINDIR, ARGW },
op_lol, ENLOCAL, WS1, { op_lol, ENLOCAL, WS1 },
op_lpi, ENPROC, PS, { op_lpi, ENPROC, PS },
op_lxa, ENAARGBASE, PS, { op_lxa, ENAARGBASE, PS },
op_lxl, ENALOCBASE, PS, { op_lxl, ENALOCBASE, PS },
op_sar, ENARRELEM, ARDESC3, { op_sar, ENARRELEM, ARDESC3 },
op_sde, ENEXTERNAL, WS2, { op_sde, ENEXTERNAL, WS2 },
op_sdf, ENOFFSETTED, WS2, { op_sdf, ENOFFSETTED, WS2 },
op_sdl, ENLOCAL, WS2, { op_sdl, ENLOCAL, WS2 },
op_sil, ENINDIR, WS1, { op_sil, ENINDIR, WS1 },
op_sim, ENIGNMASK, WS1, { op_sim, ENIGNMASK, WS1 },
op_ste, ENEXTERNAL, WS1, { op_ste, ENEXTERNAL, WS1 },
op_stf, ENOFFSETTED, WS1, { op_stf, ENOFFSETTED, WS1 },
op_sti, ENINDIR, ARGW, { op_sti, ENINDIR, ARGW },
op_stl, ENLOCAL, WS1, { op_stl, ENLOCAL, WS1 },
op_zer, ENCONST, ARGW, { op_zer, ENCONST, ARGW },
op_zre, ENEXTERNAL, WS1, { op_zre, ENEXTERNAL, WS1 },
op_zrf, ENFZER, ARGW, { op_zrf, ENFZER, ARGW },
op_zrl, ENLOCAL, WS1, { op_zrl, ENLOCAL, WS1 },
op_nop /* Delimitor. */ { op_nop, 0, 0 } /* Delimitor. */
}; };
#define INFKEY(ip) (ip->inf_instr & BMASK) #define INFKEY(ip) (ip->inf_instr & BMASK)

View File

@ -38,140 +38,140 @@ static struct {
byte i_av; /* Idem for result of operators. */ byte i_av; /* Idem for result of operators. */
byte i_regtype; /* ANY, PTR, FLT. */ byte i_regtype; /* ANY, PTR, FLT. */
} info[] = { } info[] = {
XXX, XXX, XXX, XXX, XXX, { XXX, XXX, XXX, XXX, XXX },
/* aar */ TERNAIR_OP, XXX, XXX, PS, PTR, /* aar */ { TERNAIR_OP, XXX, XXX, PS, PTR },
/* adf */ BINAIR_OP, ARGW, ARGW, ARGW, FLT, /* adf */ { BINAIR_OP, ARGW, ARGW, ARGW, FLT },
/* adi */ BINAIR_OP, ARGW, ARGW, ARGW, ANY, /* adi */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* adp */ EXPENSIVE_LOAD, XXX, XXX, XXX, PTR, /* adp */ { EXPENSIVE_LOAD, XXX, XXX, XXX, PTR },
/* ads */ BINAIR_OP, PS, ARGW, PS, PTR, /* ads */ { BINAIR_OP, PS, ARGW, PS, PTR },
/* adu */ BINAIR_OP, ARGW, ARGW, ARGW, ANY, /* adu */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* and */ BINAIR_OP, ARGW, ARGW, ARGW, ANY, /* and */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* asp */ FIDDLE_STACK, XXX, XXX, XXX, XXX, /* asp */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* ass */ FIDDLE_STACK, XXX, XXX, XXX, XXX, /* ass */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* beq */ BBLOCK_END, XXX, XXX, XXX, XXX, /* beq */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* bge */ BBLOCK_END, XXX, XXX, XXX, XXX, /* bge */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* bgt */ BBLOCK_END, XXX, XXX, XXX, XXX, /* bgt */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* ble */ BBLOCK_END, XXX, XXX, XXX, XXX, /* ble */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* blm */ HOPELESS, XXX, XXX, XXX, XXX, /* blm */ { HOPELESS, XXX, XXX, XXX, XXX },
/* bls */ HOPELESS, XXX, XXX, XXX, XXX, /* bls */ { HOPELESS, XXX, XXX, XXX, XXX },
/* blt */ BBLOCK_END, XXX, XXX, XXX, XXX, /* blt */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* bne */ BBLOCK_END, XXX, XXX, XXX, XXX, /* bne */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* bra */ BBLOCK_END, XXX, XXX, XXX, XXX, /* bra */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* cai */ SIDE_EFFECTS, XXX, XXX, XXX, XXX, /* cai */ { SIDE_EFFECTS, XXX, XXX, XXX, XXX },
/* cal */ SIDE_EFFECTS, XXX, XXX, XXX, XXX, /* cal */ { SIDE_EFFECTS, XXX, XXX, XXX, XXX },
/* cff */ TERNAIR_OP, XXX, XXX, CVT, FLT, /* cff */ { TERNAIR_OP, XXX, XXX, CVT, FLT },
/* cfi */ TERNAIR_OP, XXX, XXX, CVT, ANY, /* cfi */ { TERNAIR_OP, XXX, XXX, CVT, ANY },
/* cfu */ TERNAIR_OP, XXX, XXX, CVT, ANY, /* cfu */ { TERNAIR_OP, XXX, XXX, CVT, ANY },
/* cif */ TERNAIR_OP, XXX, XXX, CVT, FLT, /* cif */ { TERNAIR_OP, XXX, XXX, CVT, FLT },
/* cii */ TERNAIR_OP, XXX, XXX, CVT, ANY, /* cii */ { TERNAIR_OP, XXX, XXX, CVT, ANY },
/* ciu */ TERNAIR_OP, XXX, XXX, CVT, ANY, /* ciu */ { TERNAIR_OP, XXX, XXX, CVT, ANY },
/* cmf */ BINAIR_OP, ARGW, ARGW, WS, ANY, /* cmf */ { BINAIR_OP, ARGW, ARGW, WS, ANY },
/* cmi */ BINAIR_OP, ARGW, ARGW, WS, ANY, /* cmi */ { BINAIR_OP, ARGW, ARGW, WS, ANY },
/* cmp */ BINAIR_OP, PS, PS, WS, ANY, /* cmp */ { BINAIR_OP, PS, PS, WS, ANY },
/* cms */ BINAIR_OP, ARGW, ARGW, WS, ANY, /* cms */ { BINAIR_OP, ARGW, ARGW, WS, ANY },
/* cmu */ BINAIR_OP, ARGW, ARGW, WS, ANY, /* cmu */ { BINAIR_OP, ARGW, ARGW, WS, ANY },
/* com */ UNAIR_OP, ARGW, XXX, ARGW, ANY, /* com */ { UNAIR_OP, ARGW, XXX, ARGW, ANY },
/* csa */ BBLOCK_END, XXX, XXX, XXX, XXX, /* csa */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* csb */ BBLOCK_END, XXX, XXX, XXX, XXX, /* csb */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* cuf */ TERNAIR_OP, XXX, XXX, CVT, FLT, /* cuf */ { TERNAIR_OP, XXX, XXX, CVT, FLT },
/* cui */ TERNAIR_OP, XXX, XXX, CVT, ANY, /* cui */ { TERNAIR_OP, XXX, XXX, CVT, ANY },
/* cuu */ TERNAIR_OP, XXX, XXX, CVT, ANY, /* cuu */ { TERNAIR_OP, XXX, XXX, CVT, ANY },
/* dch */ UNAIR_OP, PS, XXX, PS, PTR, /* dch */ { UNAIR_OP, PS, XXX, PS, PTR },
/* dec */ UNAIR_OP, WS, XXX, WS, ANY, /* dec */ { UNAIR_OP, WS, XXX, WS, ANY },
/* dee */ KILL_ENTITY, XXX, XXX, XXX, XXX, /* dee */ { KILL_ENTITY, XXX, XXX, XXX, XXX },
/* del */ KILL_ENTITY, XXX, XXX, XXX, XXX, /* del */ { KILL_ENTITY, XXX, XXX, XXX, XXX },
/* dup */ FIDDLE_STACK, XXX, XXX, XXX, XXX, /* dup */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* dus */ FIDDLE_STACK, XXX, XXX, XXX, XXX, /* dus */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* dvf */ BINAIR_OP, ARGW, ARGW, ARGW, FLT, /* dvf */ { BINAIR_OP, ARGW, ARGW, ARGW, FLT },
/* dvi */ BINAIR_OP, ARGW, ARGW, ARGW, ANY, /* dvi */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* dvu */ BINAIR_OP, ARGW, ARGW, ARGW, ANY, /* dvu */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* exg */ FIDDLE_STACK, XXX, XXX, XXX, XXX, /* exg */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* fef */ UNAIR_OP, ARGW, XXX, FEF, XXX, /* fef */ { UNAIR_OP, ARGW, XXX, FEF, XXX },
/* fif */ BINAIR_OP, ARGW, ARGW, FIF, XXX, /* fif */ { BINAIR_OP, ARGW, ARGW, FIF, XXX },
/* fil */ IGNORE, XXX, XXX, XXX, XXX, /* fil */ { IGNORE, XXX, XXX, XXX, XXX },
/* gto */ BBLOCK_END, XXX, XXX, XXX, XXX, /* gto */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* inc */ UNAIR_OP, WS, XXX, WS, ANY, /* inc */ { UNAIR_OP, WS, XXX, WS, ANY },
/* ine */ KILL_ENTITY, XXX, XXX, XXX, XXX, /* ine */ { KILL_ENTITY, XXX, XXX, XXX, XXX },
/* inl */ KILL_ENTITY, XXX, XXX, XXX, XXX, /* inl */ { KILL_ENTITY, XXX, XXX, XXX, XXX },
/* inn */ BINAIR_OP, ARGW, WS, WS, ANY, /* inn */ { BINAIR_OP, ARGW, WS, WS, ANY },
/* ior */ BINAIR_OP, ARGW, ARGW, ARGW, ANY, /* ior */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* lae */ SIMPLE_LOAD, XXX, XXX, XXX, XXX, /* lae */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lal */ SIMPLE_LOAD, XXX, XXX, XXX, XXX, /* lal */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lar */ LOAD_ARRAY, XXX, XXX, XXX, ANY, /* lar */ { LOAD_ARRAY, XXX, XXX, XXX, ANY },
/* ldc */ SIMPLE_LOAD, XXX, XXX, XXX, XXX, /* ldc */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lde */ SIMPLE_LOAD, XXX, XXX, XXX, XXX, /* lde */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* ldf */ EXPENSIVE_LOAD, XXX, XXX, XXX, ANY, /* ldf */ { EXPENSIVE_LOAD, XXX, XXX, XXX, ANY },
/* ldl */ SIMPLE_LOAD, XXX, XXX, XXX, XXX, /* ldl */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lfr */ FIDDLE_STACK, XXX, XXX, XXX, XXX, /* lfr */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* lil */ SIMPLE_LOAD, XXX, XXX, XXX, XXX, /* lil */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lim */ SIMPLE_LOAD, XXX, XXX, XXX, XXX, /* lim */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lin */ IGNORE, XXX, XXX, XXX, XXX, /* lin */ { IGNORE, XXX, XXX, XXX, XXX },
/* lni */ IGNORE, XXX, XXX, XXX, XXX, /* lni */ { IGNORE, XXX, XXX, XXX, XXX },
/* loc */ SIMPLE_LOAD, XXX, XXX, XXX, XXX, /* loc */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* loe */ SIMPLE_LOAD, XXX, XXX, XXX, XXX, /* loe */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lof */ EXPENSIVE_LOAD, XXX, XXX, XXX, ANY, /* lof */ { EXPENSIVE_LOAD, XXX, XXX, XXX, ANY },
/* loi */ EXPENSIVE_LOAD, XXX, XXX, XXX, ANY, /* loi */ { EXPENSIVE_LOAD, XXX, XXX, XXX, ANY },
/* lol */ SIMPLE_LOAD, XXX, XXX, XXX, XXX, /* lol */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lor */ SIMPLE_LOAD, XXX, XXX, XXX, XXX, /* lor */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* los */ FIDDLE_STACK, XXX, XXX, XXX, XXX, /* los */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* lpb */ UNAIR_OP, PS, XXX, PS, PTR, /* lpb */ { UNAIR_OP, PS, XXX, PS, PTR },
/* lpi */ SIMPLE_LOAD, XXX, XXX, XXX, XXX, /* lpi */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lxa */ EXPENSIVE_LOAD, XXX, XXX, XXX, PTR, /* lxa */ { EXPENSIVE_LOAD, XXX, XXX, XXX, PTR },
/* lxl */ EXPENSIVE_LOAD, XXX, XXX, XXX, PTR, /* lxl */ { EXPENSIVE_LOAD, XXX, XXX, XXX, PTR },
/* mlf */ BINAIR_OP, ARGW, ARGW, ARGW, FLT, /* mlf */ { BINAIR_OP, ARGW, ARGW, ARGW, FLT },
/* mli */ BINAIR_OP, ARGW, ARGW, ARGW, ANY, /* mli */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* mlu */ BINAIR_OP, ARGW, ARGW, ARGW, ANY, /* mlu */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* mon */ HOPELESS, XXX, XXX, XXX, XXX, /* mon */ { HOPELESS, XXX, XXX, XXX, XXX },
/* ngf */ UNAIR_OP, ARGW, XXX, ARGW, FLT, /* ngf */ { UNAIR_OP, ARGW, XXX, ARGW, FLT },
/* ngi */ UNAIR_OP, ARGW, XXX, ARGW, ANY, /* ngi */ { UNAIR_OP, ARGW, XXX, ARGW, ANY },
/* nop */ HOPELESS, XXX, XXX, XXX, XXX, /* nop */ { HOPELESS, XXX, XXX, XXX, XXX },
/* rck */ BBLOCK_END, XXX, XXX, XXX, XXX, /* rck */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* ret */ BBLOCK_END, XXX, XXX, XXX, XXX, /* ret */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* rmi */ BINAIR_OP, ARGW, ARGW, ARGW, ANY, /* rmi */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* rmu */ BINAIR_OP, ARGW, ARGW, ARGW, ANY, /* rmu */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* rol */ BINAIR_OP, ARGW, WS, ARGW, ANY, /* rol */ { BINAIR_OP, ARGW, WS, ARGW, ANY },
/* ror */ BINAIR_OP, ARGW, WS, ARGW, ANY, /* ror */ { BINAIR_OP, ARGW, WS, ARGW, ANY },
/* rtt */ BBLOCK_END, XXX, XXX, XXX, XXX, /* rtt */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* sar */ STORE_ARRAY, XXX, XXX, XXX, XXX, /* sar */ { STORE_ARRAY, XXX, XXX, XXX, XXX },
/* sbf */ BINAIR_OP, ARGW, ARGW, ARGW, FLT, /* sbf */ { BINAIR_OP, ARGW, ARGW, ARGW, FLT },
/* sbi */ BINAIR_OP, ARGW, ARGW, ARGW, ANY, /* sbi */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* sbs */ BINAIR_OP, PS, PS, ARGW, ANY, /* sbs */ { BINAIR_OP, PS, PS, ARGW, ANY },
/* sbu */ BINAIR_OP, ARGW, ARGW, ARGW, ANY, /* sbu */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* sde */ STORE_DIRECT, XXX, XXX, XXX, XXX, /* sde */ { STORE_DIRECT, XXX, XXX, XXX, XXX },
/* sdf */ STORE_INDIR, XXX, XXX, XXX, XXX, /* sdf */ { STORE_INDIR, XXX, XXX, XXX, XXX },
/* sdl */ STORE_DIRECT, XXX, XXX, XXX, XXX, /* sdl */ { STORE_DIRECT, XXX, XXX, XXX, XXX },
/* set */ UNAIR_OP, WS, XXX, ARGW, ANY, /* set */ { UNAIR_OP, WS, XXX, ARGW, ANY },
/* sig */ FIDDLE_STACK, XXX, XXX, XXX, XXX, /* sig */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* sil */ STORE_INDIR, XXX, XXX, XXX, XXX, /* sil */ { STORE_INDIR, XXX, XXX, XXX, XXX },
/* sim */ STORE_DIRECT, XXX, XXX, XXX, XXX, /* sim */ { STORE_DIRECT, XXX, XXX, XXX, XXX },
/* sli */ BINAIR_OP, ARGW, WS, ARGW, ANY, /* sli */ { BINAIR_OP, ARGW, WS, ARGW, ANY },
/* slu */ BINAIR_OP, ARGW, WS, ARGW, ANY, /* slu */ { BINAIR_OP, ARGW, WS, ARGW, ANY },
/* sri */ BINAIR_OP, ARGW, WS, ARGW, ANY, /* sri */ { BINAIR_OP, ARGW, WS, ARGW, ANY },
/* sru */ BINAIR_OP, ARGW, WS, ARGW, ANY, /* sru */ { BINAIR_OP, ARGW, WS, ARGW, ANY },
/* ste */ STORE_DIRECT, XXX, XXX, XXX, XXX, /* ste */ { STORE_DIRECT, XXX, XXX, XXX, XXX },
/* stf */ STORE_INDIR, XXX, XXX, XXX, XXX, /* stf */ { STORE_INDIR, XXX, XXX, XXX, XXX },
/* sti */ STORE_INDIR, XXX, XXX, XXX, XXX, /* sti */ { STORE_INDIR, XXX, XXX, XXX, XXX },
/* stl */ STORE_DIRECT, XXX, XXX, XXX, XXX, /* stl */ { STORE_DIRECT, XXX, XXX, XXX, XXX },
/* str */ HOPELESS, XXX, XXX, XXX, XXX, /* str */ { HOPELESS, XXX, XXX, XXX, XXX },
/* sts */ HOPELESS, XXX, XXX, XXX, XXX, /* sts */ { HOPELESS, XXX, XXX, XXX, XXX },
/* teq */ UNAIR_OP, WS, XXX, WS, ANY, /* teq */ { UNAIR_OP, WS, XXX, WS, ANY },
/* tge */ UNAIR_OP, WS, XXX, WS, ANY, /* tge */ { UNAIR_OP, WS, XXX, WS, ANY },
/* tgt */ UNAIR_OP, WS, XXX, WS, ANY, /* tgt */ { UNAIR_OP, WS, XXX, WS, ANY },
/* tle */ UNAIR_OP, WS, XXX, WS, ANY, /* tle */ { UNAIR_OP, WS, XXX, WS, ANY },
/* tlt */ UNAIR_OP, WS, XXX, WS, ANY, /* tlt */ { UNAIR_OP, WS, XXX, WS, ANY },
/* tne */ UNAIR_OP, WS, XXX, WS, ANY, /* tne */ { UNAIR_OP, WS, XXX, WS, ANY },
/* trp */ BBLOCK_END, XXX, XXX, XXX, XXX, /* trp */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* xor */ BINAIR_OP, ARGW, ARGW, ARGW, ANY, /* xor */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* zeq */ BBLOCK_END, XXX, XXX, XXX, XXX, /* zeq */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* zer */ SIMPLE_LOAD, XXX, XXX, XXX, XXX, /* zer */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* zge */ BBLOCK_END, XXX, XXX, XXX, XXX, /* zge */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* zgt */ BBLOCK_END, XXX, XXX, XXX, XXX, /* zgt */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* zle */ BBLOCK_END, XXX, XXX, XXX, XXX, /* zle */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* zlt */ BBLOCK_END, XXX, XXX, XXX, XXX, /* zlt */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* zne */ BBLOCK_END, XXX, XXX, XXX, XXX, /* zne */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* zre */ KILL_ENTITY, XXX, XXX, XXX, XXX, /* zre */ { KILL_ENTITY, XXX, XXX, XXX, XXX },
/* zrf */ SIMPLE_LOAD, XXX, XXX, XXX, XXX, /* zrf */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* zrl */ KILL_ENTITY, XXX, XXX, XXX, XXX /* zrl */ { KILL_ENTITY, XXX, XXX, XXX, XXX }
}; };
#define GROUP(n) (info[n].i_group) #define GROUP(n) (info[n].i_group)

View File

@ -15,6 +15,7 @@
#include "../share/lset.h" #include "../share/lset.h"
#include "cs.h" #include "cs.h"
#include "cs_aux.h" #include "cs_aux.h"
#include "cs_alloc.h"
#include "cs_debug.h" #include "cs_debug.h"
#include "cs_avail.h" #include "cs_avail.h"
#include "cs_partit.h" #include "cs_partit.h"

View File

@ -10,6 +10,9 @@
#include <em_path.h> #include <em_path.h>
#include <signal.h> #include <signal.h>
#include <system.h> #include <system.h>
#include <sys/types.h>
#include <sys/wait.h>
#include "../share/debug.h"
#define IC 1 #define IC 1
#define CF 2 #define CF 2
@ -89,7 +92,7 @@ static void cleanup()
register int i; register int i;
for (i = NTEMPS*2; i > 0; i--) { for (i = NTEMPS*2; i > 0; i--) {
register char *f = phargs[i]; char *f = phargs[i];
if (f != 0 && *f != '\0' && *f != '-') (void) unlink(f); if (f != 0 && *f != '\0' && *f != '-') (void) unlink(f);
} }
if (ddump[0] != '\0') (void) unlink(ddump); if (ddump[0] != '\0') (void) unlink(ddump);
@ -102,9 +105,9 @@ static void fatal(char *s, char *s2)
{ {
/* A fatal error occurred; exit gracefully */ /* A fatal error occurred; exit gracefully */
fprint(STDERR, "%s: ", prog_name); fprintf(stderr, "%s: ", prog_name);
fprint(STDERR, s, s2); fprintf(stderr, s, s2);
fprint(STDERR, "\n"); fprintf(stderr, "\n");
cleanup(); cleanup();
sys_stop(S_EXIT); sys_stop(S_EXIT);
/*NOTREACHED*/ /*NOTREACHED*/
@ -149,9 +152,9 @@ static void get_infiles()
{ {
/* Make output temps from previous phase input temps of next phase. */ /* Make output temps from previous phase input temps of next phase. */
register int i; int i;
register char **dst = &phargs[1]; char **dst = &phargs[1];
register char **src = &phargs[NTEMPS+1]; char **src = &phargs[NTEMPS+1];
for (i = 1; i <= NTEMPS; i++) { for (i = 1; i <= NTEMPS; i++) {
*dst++ = *src++; *dst++ = *src++;
@ -164,8 +167,8 @@ static void new_outfiles()
static int Bindex = 0; static int Bindex = 0;
static char dig1 = '1'; static char dig1 = '1';
static char dig2 = '0'; static char dig2 = '0';
register int i; int i;
register char **dst = &phargs[NTEMPS+1]; char **dst = &phargs[NTEMPS+1];
if (! Bindex) { if (! Bindex) {
Bindex = strrchr(tmpbufs[0], 'B') - tmpbufs[0]; Bindex = strrchr(tmpbufs[0], 'B') - tmpbufs[0];
@ -190,8 +193,8 @@ static void run_phase(int phase)
IC and CA. IC and CA.
*/ */
static int flags_added; static int flags_added;
register int argc; int argc;
register int i; int i;
char buf[256]; char buf[256];
int pid, status; int pid, status;
@ -242,10 +245,10 @@ static void run_phase(int phase)
register int i = 0; register int i = 0;
while (phargs[i]) { while (phargs[i]) {
fprint(STDERR, "%s ", phargs[i]); fprintf(stderr, "%s ", phargs[i]);
i++; i++;
} }
fprint(STDERR, "\n"); fprintf(stderr, "\n");
} }
(void) execv(phargs[0], phargs); (void) execv(phargs[0], phargs);
fatal("Could not exec %s", phargs[0]); fatal("Could not exec %s", phargs[0]);

View File

@ -18,6 +18,7 @@
#include "../share/map.h" #include "../share/map.h"
#include "ic.h" #include "ic.h"
#include "ic_lookup.h" #include "ic_lookup.h"
#include "ic_io.h"
#include "../share/alloc.h" #include "../share/alloc.h"

View File

@ -74,3 +74,5 @@ void cleandblocks(sym_p hash[], int n, int mask);
/* Make the names of all data blocks /* Make the names of all data blocks
* for which d_flags1&mask = 0 invisible * for which d_flags1&mask = 0 invisible
*/ */
void dump_dblocknames(sym_p hash[], int n, FILE *f);

View File

@ -8,6 +8,9 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <unistd.h>
#include <missing_proto.h>
#include <em_path.h> #include <em_path.h>
#include <em_mnem.h> #include <em_mnem.h>
#include <em_pseu.h> #include <em_pseu.h>
@ -20,9 +23,11 @@
#include "../share/files.h" #include "../share/files.h"
#include "../share/map.h" #include "../share/map.h"
#include "il_aux.h" #include "il_aux.h"
#include "il1_aux.h"
#include "il1_anal.h" #include "il1_anal.h"
#include "il2_aux.h" #include "il2_aux.h"
#include "il3_subst.h" #include "il3_subst.h"
#include "il3_change.h"
#include "../share/get.h" #include "../share/get.h"
#include "../share/put.h" #include "../share/put.h"
#include "../share/go.h" #include "../share/go.h"

View File

@ -18,6 +18,8 @@
#include "../share/global.h" #include "../share/global.h"
#include "../share/lset.h" #include "../share/lset.h"
#include "../share/aux.h" #include "../share/aux.h"
#include "../share/cset.h"
#include "il_aux.h"
#include "il1_aux.h" #include "il1_aux.h"
#include "il1_formal.h" #include "il1_formal.h"
#include "il1_cal.h" #include "il1_cal.h"

View File

@ -19,6 +19,7 @@
#include "../share/global.h" #include "../share/global.h"
#include "../share/lset.h" #include "../share/lset.h"
#include "il1_aux.h" #include "il1_aux.h"
#include "il_aux.h"
#include "../share/parser.h" #include "../share/parser.h"
static actual_p acts, *app; static actual_p acts, *app;

View File

@ -20,6 +20,7 @@
#include "il_aux.h" #include "il_aux.h"
#include "il2_aux.h" #include "il2_aux.h"
#include "../share/get.h" #include "../share/get.h"
#include "../share/cset.h"
#include "../share/aux.h" #include "../share/aux.h"
#define USE_INDIR(p) (p->p_use->u_flags & UF_INDIR) #define USE_INDIR(p) (p->p_use->u_flags & UF_INDIR)

View File

@ -52,3 +52,5 @@ long putcc(calcnt_p head, FILE *ccf);
/* Write call-count information to /* Write call-count information to
* file ccf. * file ccf.
*/ */
void remunit(short kind, proc_p p, line_p l);

View File

@ -19,12 +19,14 @@
#include "../share/get.h" #include "../share/get.h"
#include "../share/put.h" #include "../share/put.h"
#include "../share/lset.h" #include "../share/lset.h"
#include "../share/cset.h"
#include "../share/map.h" #include "../share/map.h"
#include "../share/alloc.h" #include "../share/alloc.h"
#include "../share/go.h" #include "../share/go.h"
#include "ra.h" #include "ra.h"
#include "ra_items.h" #include "ra_items.h"
#include "ra_allocl.h" #include "ra_allocl.h"
#include "ra_lifet.h"
#include "ra_profits.h" #include "ra_profits.h"
#include "ra_pack.h" #include "ra_pack.h"
#include "ra_xform.h" #include "ra_xform.h"

View File

@ -175,9 +175,9 @@ static bool lt_item(item_p a, item_p b)
*/ */
#if 0
static item_p items[NRITEMTYPES]; /* items[i] points to the list of type i */ static item_p items[NRITEMTYPES]; /* items[i] points to the list of type i */
#endif
static short reg_type(item_p item) static short reg_type(item_p item)

View File

@ -25,7 +25,8 @@
#include "ra_aux.h" #include "ra_aux.h"
#include "ra_items.h" #include "ra_items.h"
#include "ra_lifet.h" #include "ra_lifet.h"
#include "ra_interv.h"
#include "ra_profits.h"
#define MSG_OFF(l) aoff(ARG(l),2) #define MSG_OFF(l) aoff(ARG(l),2)
#define is_livemsg(l) (INSTR(l) == ps_mes && aoff(ARG(l),0) == ms_ego && \ #define is_livemsg(l) (INSTR(l) == ps_mes && aoff(ARG(l),0) == ms_ego && \

View File

@ -20,6 +20,7 @@
#include "ra.h" #include "ra.h"
#include "ra_aux.h" #include "ra_aux.h"
#include "ra_interv.h" #include "ra_interv.h"
#include "ra_profits.h"
short regs_occupied[NRREGTYPES]; /* #occupied registers for reg_pointer, short regs_occupied[NRREGTYPES]; /* #occupied registers for reg_pointer,

View File

@ -268,12 +268,12 @@ static void apply_alloc(bblock_p b, line_p l, alloc_p alloc)
static int loaditem_tab[NRITEMTYPES][2] = static int loaditem_tab[NRITEMTYPES][2] =
{ /* WS 2 * WS */ { /* WS 2 * WS */
/*LOCALVAR*/ op_lol, op_ldl, /*LOCALVAR*/ { op_lol, op_ldl },
/*LOCAL_ADDR*/ op_lal, op_lal, /*LOCAL_ADDR*/ { op_lal, op_lal },
/*GLOBL_ADDR*/ op_lae, op_lae, /*GLOBL_ADDR*/ { op_lae, op_lae },
/*PROC_ADDR*/ op_lpi, op_lpi, /*PROC_ADDR*/ { op_lpi, op_lpi },
/*CONST*/ op_loc, op_nop, /*CONST*/ { op_loc, op_nop },
/*DCONST*/ op_nop, op_ldc /*DCONST*/ { op_nop, op_ldc }
}; };

View File

@ -5,6 +5,8 @@
*/ */
/* D E B U G G I N G T O O L S */ /* D E B U G G I N G T O O L S */
#include "types.h"
/* TEMPORARY: */ /* TEMPORARY: */
/* #define DEBUG */ /* #define DEBUG */

View File

@ -9,9 +9,9 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include "debug.h"
FILE *openfile(name,mode) FILE *openfile(char *name, char *mode)
char *name,*mode;
{ {
FILE *f; FILE *f;

View File

@ -34,7 +34,7 @@ void convert(FILE *mnemfile, FILE *classfile)
newcl = TRUE; newcl = TRUE;
printf("struct class classtab[] = {\n"); printf("struct class classtab[] = {\n");
printf("\tNOCLASS,\tNOCLASS,\n"); printf("\t{ NOCLASS,\tNOCLASS },\n");
/* EM mnemonics start at 1, arrays in C at 0 */ /* EM mnemonics start at 1, arrays in C at 0 */
for (;;) { for (;;) {
fscanf(mnemfile,"%s%s%d",def,mnem1,&opc); fscanf(mnemfile,"%s%s%d",def,mnem1,&opc);
@ -51,10 +51,10 @@ void convert(FILE *mnemfile, FILE *classfile)
/* there is no line for this mnemonic, so /* there is no line for this mnemonic, so
* it has no class. * it has no class.
*/ */
printf("\tNOCLASS,\tNOCLASS,\n"); printf("\t { NOCLASS,\tNOCLASS },\n");
newcl = FALSE; newcl = FALSE;
} else { } else {
printf("\tCLASS%d,\t\tCLASS%d,\n",src,res); printf("\t { CLASS%d,\t\tCLASS%d },\n",src,res);
/* print a line like "CLASS8, CLASS1," */ /* print a line like "CLASS8, CLASS1," */
newcl = TRUE; newcl = TRUE;
} }

View File

@ -18,6 +18,7 @@
#include "lset.h" #include "lset.h"
#include "alloc.h" #include "alloc.h"
#include "put.h" #include "put.h"
#include "cset.h"
FILE *curoutp; FILE *curoutp;
@ -36,11 +37,8 @@ static void putstr(argb_p abp);
static void outlab(lab_id lid); static void outlab(lab_id lid);
static void outobject(obj_p obj); static void outobject(obj_p obj);
static void putstr(argb_p abp); static void putstr(argb_p abp);
void outshort(short i);
static void putstr(argb_p abp); static void putstr(argb_p abp);
static void putargs(arg_p ap) static void putargs(arg_p ap)
{ {
while (ap != (arg_p) 0) { while (ap != (arg_p) 0) {

View File

@ -4,7 +4,8 @@
* See the copyright notice in the ACK home directory, in the file "Copyright". * See the copyright notice in the ACK home directory, in the file "Copyright".
*/ */
/* I N T E R N A L D A T A S T R U C T U R E S O F E G O */ /* I N T E R N A L D A T A S T R U C T U R E S O F E G O */
#ifndef UTIL_EGO_SHARE_TYPES_H
#define UTIL_EGO_SHARE_TYPES_H
/* This file contains the definitions of the global data types. /* This file contains the definitions of the global data types.
*/ */
@ -422,3 +423,4 @@ struct cond_tab {
#define IN_0_63 2 #define IN_0_63 2
#define IN_0_8 3 #define IN_0_8 3
#endif /* UTIL_EGO_SHARE_TYPES_H */

View File

@ -23,6 +23,7 @@
#include "../share/aux.h" #include "../share/aux.h"
#include "sr_aux.h" #include "sr_aux.h"
#include "sr_iv.h" #include "sr_iv.h"
#include "sr_reduce.h"
/* Strength reduction tries to change expensive operators occurring /* Strength reduction tries to change expensive operators occurring
* in a loop into cheaper operators. The expensive operators considered * in a loop into cheaper operators. The expensive operators considered