Skip to content

Commit

Permalink
Merge pull request #5070 from WalterBright/params
Browse files Browse the repository at this point in the history
cod1.c: remove old dead code
  • Loading branch information
MartinNowak authored and WalterBright committed Sep 14, 2015
1 parent 6206711 commit 60e246e
Showing 1 changed file with 12 additions and 38 deletions.
50 changes: 12 additions & 38 deletions src/backend/cod1.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ enum MF
};
code * genf2(code *c,unsigned op,unsigned rm);

targ_size_t paramsize(elem *e,unsigned stackalign);
targ_size_t paramsize(elem *e);
STATIC code * funccall (elem *,unsigned,unsigned,regm_t *,regm_t);

/* array to convert from index register to r/m field */
Expand Down Expand Up @@ -2901,7 +2901,7 @@ code *cdfunc(elem *e,regm_t *pretregs)
for (int i = np; --i >= 0;)
{
elem *ep = parameters[i].e;
unsigned psize = paramsize(ep, stackalign);
unsigned psize = align(stackalign, paramsize(ep)); // align on stack boundary
if (config.exe == EX_WIN64)
{
//printf("[%d] size = %u, numpara = %d ep = %p ", i, psize, numpara, ep); WRTYxx(ep->Ety); printf("\n");
Expand Down Expand Up @@ -3531,20 +3531,13 @@ STATIC code * funccall(elem *e,unsigned numpara,unsigned numalign,regm_t *pretre
}

/***************************
* Determine size of everything that will be pushed.
* Determine size of argument e that will be pushed.
*/

targ_size_t paramsize(elem *e,unsigned stackalign)
targ_size_t paramsize(elem *e)
{
targ_size_t psize = 0;
assert(e->Eoper != OPparam);
targ_size_t szb;

while (e->Eoper == OPparam) /* if more params */
{
elem *e2 = e->E2;
psize += paramsize(e->E1,stackalign); // push them backwards
e = e2;
}
tym_t tym = tybasic(e->Ety);
if (tyscalar(tym))
szb = size(tym);
Expand All @@ -3555,21 +3548,18 @@ targ_size_t paramsize(elem *e,unsigned stackalign)
WRTYxx(tym);
assert(0);
}
psize += align(stackalign,szb); /* align on word stack boundary */
return psize;
return szb;
}

/***************************
* Generate code to push parameter list.
* Generate code to push argument e on the stack.
* stackpush is incremented by stackalign for each PUSH.
*/

code *params(elem *e,unsigned stackalign)
{ code *c,*ce,cs;
code *cp;
unsigned reg;
targ_size_t szb; // size before alignment
targ_size_t sz; // size after alignment
tym_t tym;
regm_t retregs;
elem *e1;
Expand All @@ -3578,36 +3568,20 @@ code *params(elem *e,unsigned stackalign)
int fl;

//printf("params(e = %p, stackalign = %d)\n", e, stackalign);
//printf("params()\n"); elem_print(e);
cp = NULL;
stackchanged = 1;
assert(e);
while (e->Eoper == OPparam) /* if more params */
{
e2 = e->E2;
cp = cat(cp,params(e->E1,stackalign)); // push them backwards
freenode(e);
e = e2;
}
//printf("params()\n"); elem_print(e);
assert(e && e->Eoper != OPparam);

tym = tybasic(e->Ety);
if (tyfloating(tym))
objmod->fltused();

int grex = I64 ? REX_W << 16 : 0;

/* sz = number of bytes pushed */
if (tyscalar(tym))
szb = size(tym);
else if (tym == TYstruct || tym == TYarray)
szb = type_size(e->ET);
else
{
WRTYxx(tym);
assert(0);
}
sz = align(stackalign,szb); /* align on word stack boundary */
assert((sz & (stackalign - 1)) == 0); /* ensure that alignment worked */
targ_size_t szb = paramsize(e); // size before alignment
targ_size_t sz = align(stackalign,szb); // size after alignment
assert((sz & (stackalign - 1)) == 0); // ensure that alignment worked
assert((sz & (REGSIZE - 1)) == 0);

c = CNIL;
Expand Down

0 comments on commit 60e246e

Please sign in to comment.