6 changes: 0 additions & 6 deletions src/backend/gloop.c
Original file line number Diff line number Diff line change
Expand Up @@ -1030,8 +1030,6 @@ STATIC void markinvar(elem *n,vec_t rd)
case OPld_d: case OPd_ld:
case OPld_u64:
case OPc_r: case OPc_i:
case OParraylength:
case OPnullcheck:
case OPu16_32:
case OPu16_d: case OPd_u16:
case OPs8_16: case OP16_8:
Expand Down Expand Up @@ -1111,9 +1109,6 @@ STATIC void markinvar(elem *n,vec_t rd)
case OPord: case OPnlg: case OPnleg: case OPnule:
case OPnul: case OPnuge: case OPnug: case OPnue:

case OPinstanceof:
case OPfinalinstanceof:
case OPcheckcast:
case OPcomma:
case OPpair:
case OPrpair:
Expand Down Expand Up @@ -1210,7 +1205,6 @@ STATIC void markinvar(elem *n,vec_t rd)
case OPstring:
case OPrelconst:
case OPconst: /* constants are always LI */
case OPhstring:
case OPframeptr:
makeLI(n);
break;
Expand Down
48 changes: 16 additions & 32 deletions src/backend/gother.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,14 +86,10 @@ STATIC void elemdatafree(Elemdata **plist)
*plist = NULL;
}

static Elemdata *arraylist = NULL; // list of Elemdata's of OParray elems
static Elemdata *eqeqlist = NULL; // list of Elemdata's of OPeqeq & OPne elems
static Elemdata *rellist = NULL; // list of Elemdata's of relop elems
static Elemdata *inclist = NULL; // list of Elemdata's of increment elems

enum Rdtype { RDarraybounds, RDconstprop };
static Rdtype rdtype;

/*************************** Constant Propagation ***************************/


Expand All @@ -104,7 +100,6 @@ static Rdtype rdtype;

void constprop()
{
rdtype = RDconstprop;
rd_compute();
intranges(); // compute integer ranges
#if 0
Expand All @@ -130,7 +125,7 @@ STATIC void rd_compute()
flowrd(); /* compute reaching definitions (rd) */
if (deftop == 0) /* if no reaching defs */
return;
assert(rellist == NULL && inclist == NULL && eqeqlist == NULL && arraylist == NULL);
assert(rellist == NULL && inclist == NULL && eqeqlist == NULL);
block_clearvisit();
for (i = 0; i < dfotop; i++) /* for each block */
{ block *b = dfo[i];
Expand Down Expand Up @@ -230,8 +225,7 @@ STATIC void conpropwalk(elem *n,vec_t IN)
if (t->Eoper == OPvar)
{
// Note that the following ignores OPnegass
if (rdtype == RDconstprop &&
OTopeq(op) && sytab[t->EV.sp.Vsym->Sclass] & SCRD)
if (OTopeq(op) && sytab[t->EV.sp.Vsym->Sclass] & SCRD)
{ elem *e;
list_t rdl;

Expand Down Expand Up @@ -278,8 +272,7 @@ STATIC void conpropwalk(elem *n,vec_t IN)
case OPle:
case OPge:
// Collect compare elems and their rd's in the rellist list
if (rdtype == RDconstprop &&
tyintegral(n->E1->Ety) &&
if (tyintegral(n->E1->Ety) &&
tyintegral(n->E2->Ety)
)
{
Expand All @@ -295,8 +288,7 @@ STATIC void conpropwalk(elem *n,vec_t IN)
case OPpostinc:
case OPpostdec:
// Collect increment elems and their rd's in the inclist list
if (rdtype == RDconstprop &&
tyintegral(n->E1->Ety))
if (tyintegral(n->E1->Ety))
{
//dbg_printf("appending to inclist\n"); elem_print(n);
pdata = Elemdata::ctor(n,thisblock,listrds(IN,n->E1,NULL));
Expand All @@ -308,8 +300,7 @@ STATIC void conpropwalk(elem *n,vec_t IN)
case OPne:
case OPeqeq:
// Collect compare elems and their rd's in the rellist list
if (rdtype == RDconstprop &&
tyintegral(n->E1->Ety))
if (tyintegral(n->E1->Ety))
{ //dbg_printf("appending to eqeqlist\n"); elem_print(n);
pdata = Elemdata::ctor(n,thisblock,listrds(IN,n->E1,NULL));
pdata->next = eqeqlist;
Expand All @@ -330,21 +321,18 @@ STATIC void conpropwalk(elem *n,vec_t IN)

//printf("const prop: %s\n", n->EV.sp.Vsym->Sident);
rdl = listrds(IN,n,NULL);
if (rdtype == RDconstprop)
{ elem *e;

if (!(config.flags & CFGnowarning)) // if warnings are enabled
chkrd(n,rdl);
e = chkprop(n,rdl);
if (e)
{ tym_t nty;

nty = n->Ety;
el_copy(n,e);
n->Ety = nty; // retain original type
}
list_free(&rdl);

if (!(config.flags & CFGnowarning)) // if warnings are enabled
chkrd(n,rdl);
elem *e = chkprop(n,rdl);
if (e)
{ tym_t nty;

nty = n->Ety;
el_copy(n,e);
n->Ety = nty; // retain original type
}
list_free(&rdl);
}
}

Expand Down Expand Up @@ -1402,10 +1390,6 @@ STATIC void accumda(elem *n,vec_t DEAD, vec_t POSS)
// of possibly dead ones
break;

case OPnewarray:
case OPmultinewarray:
case OParray:
case OPfield:
case OPstrcat:
case OPstrcmp:
case OPmemcmp:
Expand Down
24 changes: 0 additions & 24 deletions src/backend/oper.h
Original file line number Diff line number Diff line change
Expand Up @@ -232,19 +232,6 @@ enum OPER
OPvector, // SIMD vector operations
OPvecsto, // SIMD vector store operations

// Jupiter operators
OParray, // access Jupiter array, left is handle, right is index
OParraylength, // evaluates array handle into array length
OPfield, // access Jupiter object field, left is handle, right is offset
OPnewarray, // allocate Jupiter array, left is dimension, right is type
OPmultinewarray, // allocate multidimensional Jupiter array
// left is dimensions, right is (numdims,type signature)
OPinstanceof, // left is class id, right is handle
OPfinalinstanceof, // left is class id, right is handle
OPcheckcast, // left is class id, right is handle
OPhstring, // handle to static string
OPnullcheck, // check if pointer is null

#if TX86
OPinp, /* input from I/O port */
OPoutp, /* output to I/O port */
Expand Down Expand Up @@ -317,7 +304,6 @@ extern unsigned char rel_unord[];
* OTrel2 < <= > >= operators
* OTdef definition operator (assign call post asm)
* OTae potential common subexpression operator
* OTexp expression elem
* OTboolnop operation is a nop if boolean result is desired
*/

Expand All @@ -341,7 +327,6 @@ extern const unsigned char opcost[OPMAX];
#define _OTassign 0x10
#define _OTdef 0x20
#define _OTae 0x40
#define _OTexp 0x80

// optab3[]
#define _OTboolnop 1
Expand All @@ -368,7 +353,6 @@ extern const unsigned char opcost[OPMAX];
#define OTrel2(op) ((op) >= OPle && (op) <= OPge)
#define OTdef(op) (optab2[op]&_OTdef)
#define OTae(op) (optab2[op]&_OTae)
#define OTexp(op) (optab2[op]&_OTexp)
#define OTboolnop(op) (optab3[op]&_OTboolnop)
#define OTcalldef(op) (OTcall(op) || (op) == OPstrcpy || (op) == OPstrcat || (op) == OPmemcpy)

Expand All @@ -392,17 +376,9 @@ extern const unsigned char opcost[OPMAX];

/* ERTOL(e) is moved to el.c */

#if KEEPBITFIELDS
#define Elvalue(e) (((e)->E1->Eoper == OPbit) ? (e)->E1->E1 : (e)->E1)
#define Eunambig(e) (OTassign((e)->Eoper) && \
((e)->E1->Eoper == OPvar || \
((e)->E1->Eoper == OPbit && \
(e)->E1->E1->Eoper == OPvar)))
#else
#define Elvalue(e) ((e)->E1)
#define Eunambig(e) (OTassign((e)->Eoper) && \
(e)->E1->Eoper == OPvar)
#endif

#define EOP(e) (!OTleaf((e)->Eoper))

Expand Down
67 changes: 9 additions & 58 deletions src/backend/optabgen.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,7 @@ int _binary[] =
OPbit,OPbrack,OParrowstar,OPmemcpy,OPmemcmp,OPmemset,
OPunord,OPlg,OPleg,OPule,OPul,OPuge,OPug,OPue,OPngt,OPnge,
OPnlt,OPnle,OPord,OPnlg,OPnleg,OPnule,OPnul,OPnuge,OPnug,OPnue,
OPinfo,OParray,OPfield,OPnewarray,OPmultinewarray,OPinstanceof,OPfinalinstanceof,
OPcheckcast,OPpair,OPrpair,
OPinfo,OPpair,OPrpair,
OPbt,OPbtc,OPbtr,OPbts,OPror,OProl,OPbtst,
OPremquo,OPcmpxchg,
#if TX86
Expand All @@ -51,7 +50,7 @@ int _unary[] =
{OPnot,OPcom,OPind,OPaddr,OPneg,OPuadd,
OPabs,OPrndtol,OPrint,
OPpreinc,OPpredec,
OPbool,OPstrlen,OPnullcheck,
OPbool,OPstrlen,
OPb_8,OPs16_32,OPu16_32,OPd_s32,OPd_u32,
OPs32_d,OPu32_d,OPd_s16,OPs16_d,OP32_16,
OPd_f,OPf_d,OPu8_16,OPs8_16,OP16_8,
Expand All @@ -61,7 +60,7 @@ int _unary[] =
OP128_64,OPs64_128,OPu64_128,
OPucall,OPucallns,OPstrpar,OPstrctor,OPu16_d,OPd_u16,
OParrow,OPnegass,
OPctor,OPdtor,OPsetjmp,OPvoid,OParraylength,
OPctor,OPdtor,OPsetjmp,OPvoid,
OPbsf,OPbsr,OPbswap,OPpopcnt,
OPddtor,
OPvector,
Expand Down Expand Up @@ -111,16 +110,15 @@ int _def[] = {OPstreq,OPeq,OPaddass,OPminass,OPmulass,OPdivass,OPmodass,
OPshrass,OPashrass,OPshlass,OPandass,OPxorass,OPorass,
OPpostinc,OPpostdec,
OPcall,OPucall,OPasm,OPstrcpy,OPmemcpy,OPmemset,OPstrcat,
OPnegass,OPnewarray,OPmultinewarray,
OPnegass,
OPbtc,OPbtr,OPbts,
OPvecsto,OPcmpxchg,
};
int _sideff[] = {OPasm,OPucall,OPstrcpy,OPmemcpy,OPmemset,OPstrcat,
OPcall,OPeq,OPstreq,OPpostinc,OPpostdec,
OPaddass,OPminass,OPmulass,OPdivass,OPmodass,OPandass,
OPorass,OPxorass,OPshlass,OPshrass,OPashrass,
OPnegass,OPctor,OPdtor,OPmark,OPvoid,OPnewarray,
OPmultinewarray,OPcheckcast,OPnullcheck,
OPnegass,OPctor,OPdtor,OPmark,OPvoid,
OPbtc,OPbtr,OPbts,
OPhalt,OPdctor,OPddtor,
OPcmpxchg,
Expand Down Expand Up @@ -151,8 +149,8 @@ int _ae[] = {OPvar,OPconst,OPrelconst,OPneg,
OPu32_64,OPs32_64,OP64_32,OPmsw,
OPd_s64,OPs64_d,OPd_u64,OPu64_d,OPld_u64,
OP128_64,OPs64_128,OPu64_128,
OPsizeof,OParray,OPfield,OPinstanceof,OPfinalinstanceof,OPcheckcast,OParraylength,
OPcallns,OPucallns,OPnullcheck,OPpair,OPrpair,
OPsizeof,
OPcallns,OPucallns,OPpair,OPrpair,
OPbsf,OPbsr,OPbt,OPbswap,OPb_8,OPbtst,OPpopcnt,
OPgot,OPremquo,
OPnullptr,
Expand All @@ -164,36 +162,6 @@ int _ae[] = {OPvar,OPconst,OPrelconst,OPneg,
OPvp_fp,OPcvp_fp,OPnp_fp,OPnp_f16p,OPf16p_np,OPoffset,
#endif
};
int _exp[] = {OPvar,OPconst,OPrelconst,OPneg,OPabs,OPrndtol,OPrint,
OPstrlen,OPstrcmp,OPind,OPaddr,
OPnot,OPbool,OPcom,OPadd,OPmin,OPmul,OPand,OPor,OPstring,
OPxor,OPdiv,OPmod,OPshl,OPshr,OPashr,OPeqeq,OPne,OPle,OPlt,OPge,OPgt,
OPunord,OPlg,OPleg,OPule,OPul,OPuge,OPug,OPue,OPngt,OPnge,
OPnlt,OPnle,OPord,OPnlg,OPnleg,OPnule,OPnul,OPnuge,OPnug,OPnue,
OPcomma,OPasm,OPsizeof,OPmemcmp,
OPs16_32,OPu16_32,OPd_s32,OPd_u32,OPu16_d,OPd_u16,
OPs32_d,OPu32_d,OPd_s16,OPs16_d,OP32_16,
OPd_f,OPf_d,OPu8_16,OPs8_16,OP16_8,
OPd_ld, OPld_d,OPc_r,OPc_i,
OPu32_64,OPs32_64,OP64_32,OPmsw,
OPd_s64,OPs64_d,OPd_u64,OPu64_d,OPld_u64,
OP128_64,OPs64_128,OPu64_128,
OPbit,OPind,OPucall,OPucallns,OPnullcheck,
OParray,OPfield,OPinstanceof,OPfinalinstanceof,OPcheckcast,OParraylength,OPhstring,
OPcall,OPcallns,OPeq,OPstreq,OPpostinc,OPpostdec,
OPaddass,OPminass,OPmulass,OPdivass,OPmodass,OPandass,
OPorass,OPxorass,OPshlass,OPshrass,OPashrass,OPoror,OPandand,OPcond,
OPbsf,OPbsr,OPbt,OPbtc,OPbtr,OPbts,OPbswap,OPbtst,OPpopcnt,
OProl,OPror,OPvector,
OPpair,OPrpair,OPframeptr,OPgot,OPremquo,OPcmpxchg,
OPcolon,OPcolon2,OPasm,OPstrcpy,OPmemcpy,OPmemset,OPstrcat,OPnegass,
#if TX86
OPsqrt,OPsin,OPcos,OPscale,OPyl2x,OPyl2xp1,
#endif
#if TARGET_SEGMENTED
OPvp_fp,OPcvp_fp,OPoffset,OPnp_fp,OPnp_f16p,OPf16p_np,
#endif
};
int _boolnop[] = {OPuadd,OPbool,OPs16_32,OPu16_32,
OPs16_d,
OPf_d,OPu8_16,OPs8_16,
Expand All @@ -206,8 +174,7 @@ int _boolnop[] = {OPuadd,OPbool,OPs16_32,OPu16_32,
OPnp_fp,OPvp_fp,OPcvp_fp,
#endif
};
int _lvalue[] = {OPvar,OPind,OPcomma,OPbit,
OPfield,OParray};
int _lvalue[] = {OPvar,OPind,OPcomma,OPbit};

FILE *fdeb;

Expand Down Expand Up @@ -243,14 +210,11 @@ int cost(unsigned op)
case OPshl:
case OPashr:
case OPshr: c += 2; break;
case OPnewarray:
case OPmultinewarray:
case OPcall:
case OPucall:
case OPcallns:
case OPucallns:
c += 10; break; // very high cost for function calls
case OParray: c = 5; break;
}
return c;
}
Expand Down Expand Up @@ -280,7 +244,6 @@ void dooptab()
X2(_assign,_OTassign);
X2(_def,_OTdef);
X2(_ae,_OTae);
X2(_exp,_OTexp);

X3(_boolnop,_OTboolnop);

Expand Down Expand Up @@ -485,17 +448,6 @@ void dotab()
case OPpair: X("pair", elpair, cdpair);
case OPrpair: X("rpair", elpair, cdpair);

case OPnewarray: X("newarray", elnewarray,cderr);
case OPmultinewarray: X("mnewarray", elmultinewarray,cderr);
case OPinstanceof: X("instanceof", elinstanceof,cderr);
case OPfinalinstanceof: X("finalinstanceof", elfinalinstanceof,cderr);
case OPcheckcast: X("checkcast", elcheckcast,cderr);
case OParraylength: X("length", elarraylength,cderr);
case OParray: X("array", elarray,cderr);
case OPfield: X("field", elfield,cderr);
case OPhstring: X("hstring", elhstring,cderr);
case OPnullcheck: X("nullcheck", elnullcheck,cdnullcheck);

case OPor: X("|", elor, cdorth);
case OPoror: X("||", eloror, cdloglog);
case OPandand: X("&&", elandand,cdloglog);
Expand Down Expand Up @@ -837,7 +789,7 @@ void fltables()

void dotytab()
{
static tym_t _ptr[] = { TYjhandle,TYnptr };
static tym_t _ptr[] = { TYnptr };
#if TARGET_SEGMENTED
static tym_t _ptr_nflat[]= { TYsptr,TYcptr,TYf16ptr,TYfptr,TYhptr,TYvptr };
#endif
Expand Down Expand Up @@ -960,7 +912,6 @@ void dotytab()
"long long[2]", TYllong2, TYullong2, TYllong2, 16, 0, 0,
"unsigned long long[2]", TYullong2, TYullong2, TYullong2, 16, 0, 0,

"__near *", TYjhandle, TYjhandle, TYjhandle, 2, 0x20, 0x100,
"nullptr_t", TYnullptr, TYnullptr, TYptr, 2, 0x20, 0x100,
"*", TYnptr, TYnptr, TYnptr, 2, 0x20, 0x100,
"&", TYref, TYref, TYref, -1, 0, 0,
Expand Down
1 change: 0 additions & 1 deletion src/backend/platform_stub.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,6 @@ code* cdmul (elem* e, regm_t* pretregs) { assert(0); return NULL; }
code* cdmulass (elem* e, regm_t* pretregs) { assert(0); return NULL; }
code* cdneg (elem* e, regm_t* pretregs) { assert(0); return NULL; }
code* cdnot (elem* e, regm_t* pretregs) { assert(0); return NULL; }
code* cdnullcheck(elem* e, regm_t* pretregs) { assert(0); return NULL; }
code* cdorth (elem* e, regm_t* pretregs) { assert(0); return NULL; }
code* cdpair (elem* e, regm_t* pretregs) { assert(0); return NULL; }
code* cdpopcnt (elem* e, regm_t* pretregs) { assert(0); return NULL; }
Expand Down
5 changes: 0 additions & 5 deletions src/backend/ty.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@
#ifndef TY_H
#define TY_H 1

//#define TYjhandle TYnptr // use for Jupiter handle

/*****************************************
* Data types.
* (consists of basic type + modifier bits)
Expand Down Expand Up @@ -62,9 +60,6 @@ enum TYM
TYcdouble = 0x19,
TYcldouble = 0x1A,

TYjhandle = 0x1B, // Jupiter handle type, equals TYnptr except
// that the debug type is different so the
// debugger can distinguish them
TYnullptr = 0x1C,
TYnptr = 0x1D, // data segment relative pointer
TYref = 0x24, // reference to another type
Expand Down
2 changes: 1 addition & 1 deletion src/backend/var.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ linkage_t linkage;
int linkage_spec = 0; /* using the default */

/* Function types */
/* LINK_MAXDIM = C,C++,Pascal,FORTRAN,syscall,stdcall,Jupiter */
/* LINK_MAXDIM = C,C++,Pascal,FORTRAN,syscall,stdcall,Mars */
#if MEMMODELS == 1
tym_t functypetab[LINK_MAXDIM] =
{
Expand Down
2 changes: 1 addition & 1 deletion src/eh.c
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,7 @@ void except_fillInEHTable(symbol *s)
{
block *bcatch = b->nthSucc(i);

pdt = dtxoff(pdt,bcatch->Bcatchtype,0,TYjhandle);
pdt = dtxoff(pdt,bcatch->Bcatchtype,0,TYnptr);

pdt = dtsize_t(pdt,cod3_bpoffset(b->jcatchvar)); // EBP offset

Expand Down