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;
Lindex pi;
bblock_p b;
for (pi = Lfirst(p->p_loops); pi != (Lindex) 0;
pi = Lnext(pi,p->p_loops)) {

View File

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

View File

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

View File

@ -56,7 +56,7 @@
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
@ -320,7 +320,7 @@ int main(int argc, char *argv[])
/******
* Debugging stuff
*/
#if 0
extern char em_mnem[]; /* The mnemonics of the EM instructions. */
static void showinstr(line_p lnp)
@ -350,3 +350,5 @@ static void showinstr(line_p lnp)
}
printf("\n");
} /* showinstr */
#endif

View File

@ -24,43 +24,43 @@ STATIC struct inf_entity {
byte inf_used; /* Kind of entity used by key. */
byte inf_size; /* Indication of the size. */
} inf_table[] = {
op_adp, ENAOFFSETTED, PS,
op_dee, ENEXTERNAL, WS1,
op_del, ENLOCAL, WS1,
op_ine, ENEXTERNAL, WS1,
op_inl, ENLOCAL, WS1,
op_lae, ENAEXTERNAL, PS,
op_lal, ENALOCAL, PS,
op_lar, ENARRELEM, ARDESC3,
op_ldc, ENCONST, WS2,
op_lde, ENEXTERNAL, WS2,
op_ldf, ENOFFSETTED, WS2,
op_ldl, ENLOCAL, WS2,
op_lil, ENINDIR, WS1,
op_lim, ENIGNMASK, WS1,
op_loc, ENCONST, WS1,
op_loe, ENEXTERNAL, WS1,
op_lof, ENOFFSETTED, WS1,
op_loi, ENINDIR, ARGW,
op_lol, ENLOCAL, WS1,
op_lpi, ENPROC, PS,
op_lxa, ENAARGBASE, PS,
op_lxl, ENALOCBASE, PS,
op_sar, ENARRELEM, ARDESC3,
op_sde, ENEXTERNAL, WS2,
op_sdf, ENOFFSETTED, WS2,
op_sdl, ENLOCAL, WS2,
op_sil, ENINDIR, WS1,
op_sim, ENIGNMASK, WS1,
op_ste, ENEXTERNAL, WS1,
op_stf, ENOFFSETTED, WS1,
op_sti, ENINDIR, ARGW,
op_stl, ENLOCAL, WS1,
op_zer, ENCONST, ARGW,
op_zre, ENEXTERNAL, WS1,
op_zrf, ENFZER, ARGW,
op_zrl, ENLOCAL, WS1,
op_nop /* Delimitor. */
{ op_adp, ENAOFFSETTED, PS },
{ op_dee, ENEXTERNAL, WS1 },
{ op_del, ENLOCAL, WS1 },
{ op_ine, ENEXTERNAL, WS1 },
{ op_inl, ENLOCAL, WS1 },
{ op_lae, ENAEXTERNAL, PS },
{ op_lal, ENALOCAL, PS },
{ op_lar, ENARRELEM, ARDESC3 },
{ op_ldc, ENCONST, WS2 },
{ op_lde, ENEXTERNAL, WS2 },
{ op_ldf, ENOFFSETTED, WS2 },
{ op_ldl, ENLOCAL, WS2 },
{ op_lil, ENINDIR, WS1 },
{ op_lim, ENIGNMASK, WS1 },
{ op_loc, ENCONST, WS1 },
{ op_loe, ENEXTERNAL, WS1 },
{ op_lof, ENOFFSETTED, WS1 },
{ op_loi, ENINDIR, ARGW },
{ op_lol, ENLOCAL, WS1 },
{ op_lpi, ENPROC, PS },
{ op_lxa, ENAARGBASE, PS },
{ op_lxl, ENALOCBASE, PS },
{ op_sar, ENARRELEM, ARDESC3 },
{ op_sde, ENEXTERNAL, WS2 },
{ op_sdf, ENOFFSETTED, WS2 },
{ op_sdl, ENLOCAL, WS2 },
{ op_sil, ENINDIR, WS1 },
{ op_sim, ENIGNMASK, WS1 },
{ op_ste, ENEXTERNAL, WS1 },
{ op_stf, ENOFFSETTED, WS1 },
{ op_sti, ENINDIR, ARGW },
{ op_stl, ENLOCAL, WS1 },
{ op_zer, ENCONST, ARGW },
{ op_zre, ENEXTERNAL, WS1 },
{ op_zrf, ENFZER, ARGW },
{ op_zrl, ENLOCAL, WS1 },
{ op_nop, 0, 0 } /* Delimitor. */
};
#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_regtype; /* ANY, PTR, FLT. */
} info[] = {
XXX, XXX, XXX, XXX, XXX,
/* aar */ TERNAIR_OP, XXX, XXX, PS, PTR,
/* adf */ BINAIR_OP, ARGW, ARGW, ARGW, FLT,
/* adi */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
/* adp */ EXPENSIVE_LOAD, XXX, XXX, XXX, PTR,
/* ads */ BINAIR_OP, PS, ARGW, PS, PTR,
/* adu */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
/* and */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
/* asp */ FIDDLE_STACK, XXX, XXX, XXX, XXX,
/* ass */ FIDDLE_STACK, XXX, XXX, XXX, XXX,
/* beq */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* bge */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* bgt */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* ble */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* blm */ HOPELESS, XXX, XXX, XXX, XXX,
/* bls */ HOPELESS, XXX, XXX, XXX, XXX,
/* blt */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* bne */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* bra */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* cai */ SIDE_EFFECTS, XXX, XXX, XXX, XXX,
/* cal */ SIDE_EFFECTS, XXX, XXX, XXX, XXX,
/* cff */ TERNAIR_OP, XXX, XXX, CVT, FLT,
/* cfi */ TERNAIR_OP, XXX, XXX, CVT, ANY,
/* cfu */ TERNAIR_OP, XXX, XXX, CVT, ANY,
/* cif */ TERNAIR_OP, XXX, XXX, CVT, FLT,
/* cii */ TERNAIR_OP, XXX, XXX, CVT, ANY,
/* ciu */ TERNAIR_OP, XXX, XXX, CVT, ANY,
/* cmf */ BINAIR_OP, ARGW, ARGW, WS, ANY,
/* cmi */ BINAIR_OP, ARGW, ARGW, WS, ANY,
/* cmp */ BINAIR_OP, PS, PS, WS, ANY,
/* cms */ BINAIR_OP, ARGW, ARGW, WS, ANY,
/* cmu */ BINAIR_OP, ARGW, ARGW, WS, ANY,
/* com */ UNAIR_OP, ARGW, XXX, ARGW, ANY,
/* csa */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* csb */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* cuf */ TERNAIR_OP, XXX, XXX, CVT, FLT,
/* cui */ TERNAIR_OP, XXX, XXX, CVT, ANY,
/* cuu */ TERNAIR_OP, XXX, XXX, CVT, ANY,
/* dch */ UNAIR_OP, PS, XXX, PS, PTR,
/* dec */ UNAIR_OP, WS, XXX, WS, ANY,
/* dee */ KILL_ENTITY, XXX, XXX, XXX, XXX,
/* del */ KILL_ENTITY, XXX, XXX, XXX, XXX,
/* dup */ FIDDLE_STACK, XXX, XXX, XXX, XXX,
/* dus */ FIDDLE_STACK, XXX, XXX, XXX, XXX,
/* dvf */ BINAIR_OP, ARGW, ARGW, ARGW, FLT,
/* dvi */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
/* dvu */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
/* exg */ FIDDLE_STACK, XXX, XXX, XXX, XXX,
/* fef */ UNAIR_OP, ARGW, XXX, FEF, XXX,
/* fif */ BINAIR_OP, ARGW, ARGW, FIF, XXX,
/* fil */ IGNORE, XXX, XXX, XXX, XXX,
/* gto */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* inc */ UNAIR_OP, WS, XXX, WS, ANY,
/* ine */ KILL_ENTITY, XXX, XXX, XXX, XXX,
/* inl */ KILL_ENTITY, XXX, XXX, XXX, XXX,
/* inn */ BINAIR_OP, ARGW, WS, WS, ANY,
/* ior */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
/* lae */ SIMPLE_LOAD, XXX, XXX, XXX, XXX,
/* lal */ SIMPLE_LOAD, XXX, XXX, XXX, XXX,
/* lar */ LOAD_ARRAY, XXX, XXX, XXX, ANY,
/* ldc */ SIMPLE_LOAD, XXX, XXX, XXX, XXX,
/* lde */ SIMPLE_LOAD, XXX, XXX, XXX, XXX,
/* ldf */ EXPENSIVE_LOAD, XXX, XXX, XXX, ANY,
/* ldl */ SIMPLE_LOAD, XXX, XXX, XXX, XXX,
/* lfr */ FIDDLE_STACK, XXX, XXX, XXX, XXX,
/* lil */ SIMPLE_LOAD, XXX, XXX, XXX, XXX,
/* lim */ SIMPLE_LOAD, XXX, XXX, XXX, XXX,
/* lin */ IGNORE, XXX, XXX, XXX, XXX,
/* lni */ IGNORE, XXX, XXX, XXX, XXX,
/* loc */ SIMPLE_LOAD, XXX, XXX, XXX, XXX,
/* loe */ SIMPLE_LOAD, XXX, XXX, XXX, XXX,
/* lof */ EXPENSIVE_LOAD, XXX, XXX, XXX, ANY,
/* loi */ EXPENSIVE_LOAD, XXX, XXX, XXX, ANY,
/* lol */ SIMPLE_LOAD, XXX, XXX, XXX, XXX,
/* lor */ SIMPLE_LOAD, XXX, XXX, XXX, XXX,
/* los */ FIDDLE_STACK, XXX, XXX, XXX, XXX,
/* lpb */ UNAIR_OP, PS, XXX, PS, PTR,
/* lpi */ SIMPLE_LOAD, XXX, XXX, XXX, XXX,
/* lxa */ EXPENSIVE_LOAD, XXX, XXX, XXX, PTR,
/* lxl */ EXPENSIVE_LOAD, XXX, XXX, XXX, PTR,
/* mlf */ BINAIR_OP, ARGW, ARGW, ARGW, FLT,
/* mli */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
/* mlu */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
/* mon */ HOPELESS, XXX, XXX, XXX, XXX,
/* ngf */ UNAIR_OP, ARGW, XXX, ARGW, FLT,
/* ngi */ UNAIR_OP, ARGW, XXX, ARGW, ANY,
/* nop */ HOPELESS, XXX, XXX, XXX, XXX,
/* rck */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* ret */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* rmi */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
/* rmu */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
/* rol */ BINAIR_OP, ARGW, WS, ARGW, ANY,
/* ror */ BINAIR_OP, ARGW, WS, ARGW, ANY,
/* rtt */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* sar */ STORE_ARRAY, XXX, XXX, XXX, XXX,
/* sbf */ BINAIR_OP, ARGW, ARGW, ARGW, FLT,
/* sbi */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
/* sbs */ BINAIR_OP, PS, PS, ARGW, ANY,
/* sbu */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
/* sde */ STORE_DIRECT, XXX, XXX, XXX, XXX,
/* sdf */ STORE_INDIR, XXX, XXX, XXX, XXX,
/* sdl */ STORE_DIRECT, XXX, XXX, XXX, XXX,
/* set */ UNAIR_OP, WS, XXX, ARGW, ANY,
/* sig */ FIDDLE_STACK, XXX, XXX, XXX, XXX,
/* sil */ STORE_INDIR, XXX, XXX, XXX, XXX,
/* sim */ STORE_DIRECT, XXX, XXX, XXX, XXX,
/* sli */ BINAIR_OP, ARGW, WS, ARGW, ANY,
/* slu */ BINAIR_OP, ARGW, WS, ARGW, ANY,
/* sri */ BINAIR_OP, ARGW, WS, ARGW, ANY,
/* sru */ BINAIR_OP, ARGW, WS, ARGW, ANY,
/* ste */ STORE_DIRECT, XXX, XXX, XXX, XXX,
/* stf */ STORE_INDIR, XXX, XXX, XXX, XXX,
/* sti */ STORE_INDIR, XXX, XXX, XXX, XXX,
/* stl */ STORE_DIRECT, XXX, XXX, XXX, XXX,
/* str */ HOPELESS, XXX, XXX, XXX, XXX,
/* sts */ HOPELESS, XXX, XXX, XXX, XXX,
/* teq */ UNAIR_OP, WS, XXX, WS, ANY,
/* tge */ UNAIR_OP, WS, XXX, WS, ANY,
/* tgt */ UNAIR_OP, WS, XXX, WS, ANY,
/* tle */ UNAIR_OP, WS, XXX, WS, ANY,
/* tlt */ UNAIR_OP, WS, XXX, WS, ANY,
/* tne */ UNAIR_OP, WS, XXX, WS, ANY,
/* trp */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* xor */ BINAIR_OP, ARGW, ARGW, ARGW, ANY,
/* zeq */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* zer */ SIMPLE_LOAD, XXX, XXX, XXX, XXX,
/* zge */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* zgt */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* zle */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* zlt */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* zne */ BBLOCK_END, XXX, XXX, XXX, XXX,
/* zre */ KILL_ENTITY, XXX, XXX, XXX, XXX,
/* zrf */ SIMPLE_LOAD, XXX, XXX, XXX, XXX,
/* zrl */ KILL_ENTITY, XXX, XXX, XXX, XXX
{ XXX, XXX, XXX, XXX, XXX },
/* aar */ { TERNAIR_OP, XXX, XXX, PS, PTR },
/* adf */ { BINAIR_OP, ARGW, ARGW, ARGW, FLT },
/* adi */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* adp */ { EXPENSIVE_LOAD, XXX, XXX, XXX, PTR },
/* ads */ { BINAIR_OP, PS, ARGW, PS, PTR },
/* adu */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* and */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* asp */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* ass */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* beq */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* bge */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* bgt */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* ble */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* blm */ { HOPELESS, XXX, XXX, XXX, XXX },
/* bls */ { HOPELESS, XXX, XXX, XXX, XXX },
/* blt */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* bne */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* bra */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* cai */ { SIDE_EFFECTS, XXX, XXX, XXX, XXX },
/* cal */ { SIDE_EFFECTS, XXX, XXX, XXX, XXX },
/* cff */ { TERNAIR_OP, XXX, XXX, CVT, FLT },
/* cfi */ { TERNAIR_OP, XXX, XXX, CVT, ANY },
/* cfu */ { TERNAIR_OP, XXX, XXX, CVT, ANY },
/* cif */ { TERNAIR_OP, XXX, XXX, CVT, FLT },
/* cii */ { TERNAIR_OP, XXX, XXX, CVT, ANY },
/* ciu */ { TERNAIR_OP, XXX, XXX, CVT, ANY },
/* cmf */ { BINAIR_OP, ARGW, ARGW, WS, ANY },
/* cmi */ { BINAIR_OP, ARGW, ARGW, WS, ANY },
/* cmp */ { BINAIR_OP, PS, PS, WS, ANY },
/* cms */ { BINAIR_OP, ARGW, ARGW, WS, ANY },
/* cmu */ { BINAIR_OP, ARGW, ARGW, WS, ANY },
/* com */ { UNAIR_OP, ARGW, XXX, ARGW, ANY },
/* csa */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* csb */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* cuf */ { TERNAIR_OP, XXX, XXX, CVT, FLT },
/* cui */ { TERNAIR_OP, XXX, XXX, CVT, ANY },
/* cuu */ { TERNAIR_OP, XXX, XXX, CVT, ANY },
/* dch */ { UNAIR_OP, PS, XXX, PS, PTR },
/* dec */ { UNAIR_OP, WS, XXX, WS, ANY },
/* dee */ { KILL_ENTITY, XXX, XXX, XXX, XXX },
/* del */ { KILL_ENTITY, XXX, XXX, XXX, XXX },
/* dup */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* dus */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* dvf */ { BINAIR_OP, ARGW, ARGW, ARGW, FLT },
/* dvi */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* dvu */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* exg */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* fef */ { UNAIR_OP, ARGW, XXX, FEF, XXX },
/* fif */ { BINAIR_OP, ARGW, ARGW, FIF, XXX },
/* fil */ { IGNORE, XXX, XXX, XXX, XXX },
/* gto */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* inc */ { UNAIR_OP, WS, XXX, WS, ANY },
/* ine */ { KILL_ENTITY, XXX, XXX, XXX, XXX },
/* inl */ { KILL_ENTITY, XXX, XXX, XXX, XXX },
/* inn */ { BINAIR_OP, ARGW, WS, WS, ANY },
/* ior */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* lae */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lal */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lar */ { LOAD_ARRAY, XXX, XXX, XXX, ANY },
/* ldc */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lde */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* ldf */ { EXPENSIVE_LOAD, XXX, XXX, XXX, ANY },
/* ldl */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lfr */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* lil */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lim */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lin */ { IGNORE, XXX, XXX, XXX, XXX },
/* lni */ { IGNORE, XXX, XXX, XXX, XXX },
/* loc */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* loe */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lof */ { EXPENSIVE_LOAD, XXX, XXX, XXX, ANY },
/* loi */ { EXPENSIVE_LOAD, XXX, XXX, XXX, ANY },
/* lol */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lor */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* los */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* lpb */ { UNAIR_OP, PS, XXX, PS, PTR },
/* lpi */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* lxa */ { EXPENSIVE_LOAD, XXX, XXX, XXX, PTR },
/* lxl */ { EXPENSIVE_LOAD, XXX, XXX, XXX, PTR },
/* mlf */ { BINAIR_OP, ARGW, ARGW, ARGW, FLT },
/* mli */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* mlu */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* mon */ { HOPELESS, XXX, XXX, XXX, XXX },
/* ngf */ { UNAIR_OP, ARGW, XXX, ARGW, FLT },
/* ngi */ { UNAIR_OP, ARGW, XXX, ARGW, ANY },
/* nop */ { HOPELESS, XXX, XXX, XXX, XXX },
/* rck */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* ret */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* rmi */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* rmu */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* rol */ { BINAIR_OP, ARGW, WS, ARGW, ANY },
/* ror */ { BINAIR_OP, ARGW, WS, ARGW, ANY },
/* rtt */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* sar */ { STORE_ARRAY, XXX, XXX, XXX, XXX },
/* sbf */ { BINAIR_OP, ARGW, ARGW, ARGW, FLT },
/* sbi */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* sbs */ { BINAIR_OP, PS, PS, ARGW, ANY },
/* sbu */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* sde */ { STORE_DIRECT, XXX, XXX, XXX, XXX },
/* sdf */ { STORE_INDIR, XXX, XXX, XXX, XXX },
/* sdl */ { STORE_DIRECT, XXX, XXX, XXX, XXX },
/* set */ { UNAIR_OP, WS, XXX, ARGW, ANY },
/* sig */ { FIDDLE_STACK, XXX, XXX, XXX, XXX },
/* sil */ { STORE_INDIR, XXX, XXX, XXX, XXX },
/* sim */ { STORE_DIRECT, XXX, XXX, XXX, XXX },
/* sli */ { BINAIR_OP, ARGW, WS, ARGW, ANY },
/* slu */ { BINAIR_OP, ARGW, WS, ARGW, ANY },
/* sri */ { BINAIR_OP, ARGW, WS, ARGW, ANY },
/* sru */ { BINAIR_OP, ARGW, WS, ARGW, ANY },
/* ste */ { STORE_DIRECT, XXX, XXX, XXX, XXX },
/* stf */ { STORE_INDIR, XXX, XXX, XXX, XXX },
/* sti */ { STORE_INDIR, XXX, XXX, XXX, XXX },
/* stl */ { STORE_DIRECT, XXX, XXX, XXX, XXX },
/* str */ { HOPELESS, XXX, XXX, XXX, XXX },
/* sts */ { HOPELESS, XXX, XXX, XXX, XXX },
/* teq */ { UNAIR_OP, WS, XXX, WS, ANY },
/* tge */ { UNAIR_OP, WS, XXX, WS, ANY },
/* tgt */ { UNAIR_OP, WS, XXX, WS, ANY },
/* tle */ { UNAIR_OP, WS, XXX, WS, ANY },
/* tlt */ { UNAIR_OP, WS, XXX, WS, ANY },
/* tne */ { UNAIR_OP, WS, XXX, WS, ANY },
/* trp */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* xor */ { BINAIR_OP, ARGW, ARGW, ARGW, ANY },
/* zeq */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* zer */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* zge */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* zgt */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* zle */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* zlt */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* zne */ { BBLOCK_END, XXX, XXX, XXX, XXX },
/* zre */ { KILL_ENTITY, XXX, XXX, XXX, XXX },
/* zrf */ { SIMPLE_LOAD, XXX, XXX, XXX, XXX },
/* zrl */ { KILL_ENTITY, XXX, XXX, XXX, XXX }
};
#define GROUP(n) (info[n].i_group)

View File

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

View File

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

View File

@ -18,6 +18,7 @@
#include "../share/map.h"
#include "ic.h"
#include "ic_lookup.h"
#include "ic_io.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
* 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 <stdio.h>
#include <string.h>
#include <unistd.h>
#include <missing_proto.h>
#include <em_path.h>
#include <em_mnem.h>
#include <em_pseu.h>
@ -20,9 +23,11 @@
#include "../share/files.h"
#include "../share/map.h"
#include "il_aux.h"
#include "il1_aux.h"
#include "il1_anal.h"
#include "il2_aux.h"
#include "il3_subst.h"
#include "il3_change.h"
#include "../share/get.h"
#include "../share/put.h"
#include "../share/go.h"

View File

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

View File

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

View File

@ -20,6 +20,7 @@
#include "il_aux.h"
#include "il2_aux.h"
#include "../share/get.h"
#include "../share/cset.h"
#include "../share/aux.h"
#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
* file ccf.
*/
void remunit(short kind, proc_p p, line_p l);

View File

@ -19,12 +19,14 @@
#include "../share/get.h"
#include "../share/put.h"
#include "../share/lset.h"
#include "../share/cset.h"
#include "../share/map.h"
#include "../share/alloc.h"
#include "../share/go.h"
#include "ra.h"
#include "ra_items.h"
#include "ra_allocl.h"
#include "ra_lifet.h"
#include "ra_profits.h"
#include "ra_pack.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 */
#endif
static short reg_type(item_p item)

View File

@ -25,7 +25,8 @@
#include "ra_aux.h"
#include "ra_items.h"
#include "ra_lifet.h"
#include "ra_interv.h"
#include "ra_profits.h"
#define MSG_OFF(l) aoff(ARG(l),2)
#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_aux.h"
#include "ra_interv.h"
#include "ra_profits.h"
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] =
{ /* WS 2 * WS */
/*LOCALVAR*/ op_lol, op_ldl,
/*LOCAL_ADDR*/ op_lal, op_lal,
/*GLOBL_ADDR*/ op_lae, op_lae,
/*PROC_ADDR*/ op_lpi, op_lpi,
/*CONST*/ op_loc, op_nop,
/*DCONST*/ op_nop, op_ldc
/*LOCALVAR*/ { op_lol, op_ldl },
/*LOCAL_ADDR*/ { op_lal, op_lal },
/*GLOBL_ADDR*/ { op_lae, op_lae },
/*PROC_ADDR*/ { op_lpi, op_lpi },
/*CONST*/ { op_loc, op_nop },
/*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 */
#include "types.h"
/* TEMPORARY: */
/* #define DEBUG */

View File

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

View File

@ -34,7 +34,7 @@ void convert(FILE *mnemfile, FILE *classfile)
newcl = TRUE;
printf("struct class classtab[] = {\n");
printf("\tNOCLASS,\tNOCLASS,\n");
printf("\t{ NOCLASS,\tNOCLASS },\n");
/* EM mnemonics start at 1, arrays in C at 0 */
for (;;) {
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
* it has no class.
*/
printf("\tNOCLASS,\tNOCLASS,\n");
printf("\t { NOCLASS,\tNOCLASS },\n");
newcl = FALSE;
} 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," */
newcl = TRUE;
}

View File

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

View File

@ -4,7 +4,8 @@
* 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 */
#ifndef UTIL_EGO_SHARE_TYPES_H
#define UTIL_EGO_SHARE_TYPES_H
/* 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_8 3
#endif /* UTIL_EGO_SHARE_TYPES_H */

View File

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