X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=uebersetzerbau-ss10.git;a=blobdiff_plain;f=gesamt%2Fcode.bfe;h=14121c9cff5246867efc17004f3175f0975943f5;hp=9390e228a9b5da702e34a1028f892d40fff046ac;hb=f8a6a326d88ce84fb401b75c5adc881016d60995;hpb=44877c321c25632b8ad9a1d43024271544ba3192 diff --git a/gesamt/code.bfe b/gesamt/code.bfe index 9390e22..14121c9 100644 --- a/gesamt/code.bfe +++ b/gesamt/code.bfe @@ -187,15 +187,12 @@ void assign_var(struct treenode *bnode) printf("\tsub $%d, %%%s\n", KIDKID_VAL(0,1), KID_REG(1)); } -/* dirty...*/ -static short xchg_param[7] = {0}; void make_call(struct treenode *bnode) { int j; printf("\t//params pushen\n"); for(j = 0; j < bnode->soffset; j++) { - if(xchg_param[j] == 1) - printf("\txchg %%%s, %d(%%rsp)\n", param_reg(j), j*8); + printf("\txchg %%%s, %d(%%rsp)\n", param_reg(j), j*8); } printf("\t//vars pushen\n"); for(j = VARBEGIN; j > VARBEGIN - bnode->vars; j--) { @@ -233,7 +230,6 @@ void make_call(struct treenode *bnode) void prep_arg(struct treenode *bnode, int moveit) { printf("\t//args-nr-> %i (%%%s) [moveit= %i]\n", bnode->soffset, param_reg(bnode->soffset), moveit); - xchg_param[bnode->soffset] = 1; if(moveit) { /* expr */ if((BN_REG == (char *) NULL) || (bnode->kids[1] != TREENULL && bnode->kids[1]->op == O_ID && bnode->kids[1]->kids[0] == TREENULL && bnode->kids[1]->kids[1] == TREENULL)) { if(bnode->kids[1]->name != (char *) NULL && strcmp(bnode->kids[1]->name,"this")!=0) { @@ -241,7 +237,6 @@ void prep_arg(struct treenode *bnode, int moveit) printf("\tpushq %%%s\n", KID_REG(1)); } else { printf("\tpushq %%%s\n", param_reg(bnode->soffset)); - xchg_param[bnode->soffset] = 0; } } else { printf("\tpushq %%%s\n", BN_REG); @@ -249,9 +244,6 @@ void prep_arg(struct treenode *bnode, int moveit) } else { /* just O_ID */ KIDREG2PARM(0); printf("\tpushq %%%s\n", KID_REG(0)); - if(strcmp(KID_REG(0), param_reg(bnode->soffset)) == 0) { - xchg_param[bnode->soffset] = 0; - } } }