Fix: sometimes did not reserve space for local on a mes ms_gto
This commit is contained in:
parent
09a80e9e13
commit
46f084d660
|
@ -78,7 +78,7 @@ prolog(nlocals) full nlocals; {
|
|||
break;
|
||||
default:
|
||||
#endif
|
||||
fprintf(codefile, "\tsub\tesp,%ld\n",nlocals);
|
||||
fprintf(codefile, "sub\tesp,%ld\n",nlocals);
|
||||
#ifdef NOTDEF
|
||||
break;
|
||||
}
|
||||
|
@ -112,10 +112,12 @@ i_regsave()
|
|||
|
||||
f_regsave()
|
||||
{
|
||||
if (si_off == -lbytes) lbytes -= 4;
|
||||
if (di_off == -lbytes) lbytes -= 4;
|
||||
if (si_off == -lbytes) lbytes -= 4;
|
||||
if (lbytes) fprintf(codefile, "\tsub\tesp,%ld\n",(long) lbytes);
|
||||
if (si_off != di_off) {
|
||||
if (si_off == -lbytes) lbytes -= 4;
|
||||
if (di_off == -lbytes) lbytes -= 4;
|
||||
if (si_off == -lbytes) lbytes -= 4;
|
||||
}
|
||||
if (lbytes) fprintf(codefile, "sub\tesp,%ld\n",(long) lbytes);
|
||||
if (firstreg == 1) {
|
||||
fputs("push edi\n", codefile);
|
||||
if (si_off != -1) fputs("push esi\n", codefile);
|
||||
|
|
|
@ -103,9 +103,11 @@ i_regsave()
|
|||
|
||||
f_regsave()
|
||||
{
|
||||
if (di_off == -lbytes) lbytes -= 2;
|
||||
if (si_off == -lbytes) lbytes -= 2;
|
||||
if (di_off == -lbytes) lbytes -= 2;
|
||||
if (si_off != di_off) {
|
||||
if (di_off == -lbytes) lbytes -= 2;
|
||||
if (si_off == -lbytes) lbytes -= 2;
|
||||
if (di_off == -lbytes) lbytes -= 2;
|
||||
}
|
||||
switch (lbytes) {
|
||||
case 4: fputs("\tpush\tax\n", codefile);
|
||||
case 2: fputs("\tpush\tax\n", codefile);
|
||||
|
|
Loading…
Reference in a new issue