gesamt: vars richtig poppen!
authorBernhard Urban <lewurm@gmail.com>
Mon, 7 Jun 2010 08:45:43 +0000 (10:45 +0200)
committerBernhard Urban <lewurm@gmail.com>
Mon, 7 Jun 2010 08:45:43 +0000 (10:45 +0200)
gesamt/code.bfe
gesamt/parser.y

index 1c6c410014eae27dbfd9d6a9be359a16df438d07..76175ab861406e4a53d3926abe98321e77bf09f0 100644 (file)
@@ -195,7 +195,7 @@ void make_call(struct treenode *bnode)
                printf("\txchg %%%s, %d(%%rsp)\n", param_reg(j), j*8);
        }
        printf("\t//vars pushen\n");
-       for(j = 6; j > 6 - bnode->vars - 1; j--) {
+       for(j = 6; j > 6 - bnode->vars; j--) {
                printf("\tpushq %%%s\n", param_reg(j));
        }
 
@@ -217,7 +217,7 @@ void make_call(struct treenode *bnode)
        }
 
        /* vars poppen */
-       for(j = 6 - bnode->vars; j < 6+1; j++) {
+       for(j = 7 - bnode->vars; j < 7; j++) {
                printf("\tpopq %%%s\n", param_reg(j));
        }
 
index f564b151b3383dd35b8d5c3075d4275206d32795..2d42baaaec617b9d9ccd1fc00d8869ddd8e3ea7e 100644 (file)
@@ -182,7 +182,6 @@ Statement:
                lblcountinout()
 
                @i @Statement.vars_out@ = @Statement.vars_in@ + 1;
-               @i @Expr.vars_in@ = @Statement.vars_in@ - 1;
 
                xxputsin(@Expr.s@,)