diff --git a/compiler/libpc300/sc.h b/compiler/libpc300/sc.h index 26a13e46..a2353b70 100755 --- a/compiler/libpc300/sc.h +++ b/compiler/libpc300/sc.h @@ -578,7 +578,6 @@ SC_FUNC void startfunc(char *fname); SC_FUNC void endfunc(void); SC_FUNC void alignframe(int numbytes); SC_FUNC void rvalue(value *lval); -SC_FUNC void dereference(void); SC_FUNC void address(symbol *ptr,regid reg); SC_FUNC void store(value *lval); SC_FUNC void storereg(cell address,regid reg); @@ -599,7 +598,6 @@ SC_FUNC void ffabort(int reason); SC_FUNC void ffbounds(cell size); SC_FUNC void jumplabel(int number); SC_FUNC void defstorage(void); -SC_FUNC void getfrm(void); SC_FUNC void modstk(int delta); SC_FUNC void setstk(cell value); SC_FUNC void modheap(int delta); diff --git a/compiler/libpc300/sc1.c b/compiler/libpc300/sc1.c index 43e2c347..6599cc23 100755 --- a/compiler/libpc300/sc1.c +++ b/compiler/libpc300/sc1.c @@ -5327,22 +5327,6 @@ static symbol *fetchlab(char *name) return sym; } -/* isvariadic - * - * Checks if the function is variadic. - */ -static int isvariadic(symbol *sym) -{ - int i; - for (i=0; curfunc->dim.arglist[i].ident!=0; i++) { - /* check whether this is a variadic function */ - if (curfunc->dim.arglist[i].ident==iVARARGS) { - return TRUE; - } /* if */ - } /* for */ - return FALSE; -} - /* doreturn * * Global references: rettype (altered) @@ -5447,19 +5431,7 @@ static void doreturn(void) * it stays on the heap for the moment, and it is removed -usually- at * the end of the expression/statement, see expression() in SC3.C) */ - if (isvariadic(sub)) { - pushreg(sPRI); /* save source address stored in PRI */ - sub->addr=2*sizeof(cell); - address(sub,sALT); /* get the number of arguments */ - getfrm(); - addconst(3*sizeof(cell)); - ob_add(); - dereference(); - swap1(); - popreg(sALT); /* ALT = destination */ - } else { - address(sub,sALT); /* ALT = destination */ - } /* if */ + address(sub,sALT); /* ALT = destination */ arraysize=calc_arraysize(dim,numdim,0); memcopy(arraysize*sizeof(cell)); /* source already in PRI */ /* moveto1(); is not necessary, callfunction() does a popreg() */ diff --git a/compiler/libpc300/sc4.c b/compiler/libpc300/sc4.c index 076a828e..7cdb4feb 100755 --- a/compiler/libpc300/sc4.c +++ b/compiler/libpc300/sc4.c @@ -410,16 +410,6 @@ SC_FUNC void rvalue(value *lval) } /* if */ } -/* dereference - * - * Get a cell from a memory address stored in the primary register - */ -SC_FUNC void dereference(void) -{ - stgwrite("\tload.i\n"); - code_idx+=opcodes(1); -} - /* Get the address of a symbol into the primary or alternate register (used * for arrays, and for passing arguments by reference). */ @@ -839,17 +829,6 @@ SC_FUNC void defstorage(void) stgwrite("dump "); } -/* - * Copies frame address to primary register - */ - -SC_FUNC void getfrm(void) -{ - stgwrite("\tlctrl 5\n"); - code_idx+=opcodes(1)+opargs(1); -} - - /** * Inclrement/decrement stack pointer. Note that this routine does * nothing if the delta is zero.