Warning hunt on ego.
This commit is contained in:
parent
25c717d9b3
commit
1b34c8cc9f
@ -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)) {
|
||||
|
||||
@ -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] = '_';
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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]);
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
#include "../share/map.h"
|
||||
#include "ic.h"
|
||||
#include "ic_lookup.h"
|
||||
#include "ic_io.h"
|
||||
#include "../share/alloc.h"
|
||||
|
||||
|
||||
|
||||
@ -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);
|
||||
@ -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"
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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);
|
||||
@ -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"
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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 && \
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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 }
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -5,6 +5,8 @@
|
||||
*/
|
||||
/* D E B U G G I N G T O O L S */
|
||||
|
||||
#include "types.h"
|
||||
|
||||
/* TEMPORARY: */
|
||||
/* #define DEBUG */
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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 */
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user