Fix bad code generation due to not correctly flushing the stack before

comparisons.
This commit is contained in:
David Given 2019-02-12 22:19:07 +01:00
parent a2b5202081
commit f4b45f1ed7
2 changed files with 47 additions and 27 deletions

View file

@ -2048,6 +2048,7 @@ gen xra a
#ifdef USE_I80_RSTS #ifdef USE_I80_RSTS
pat lol zeq sfit($1, 8) pat lol zeq sfit($1, 8)
with STACK
uses hlreg, areg uses hlreg, areg
gen gen
rst {const1, 3} rst {const1, 3}
@ -2070,6 +2071,7 @@ pat lol zeq
#ifdef USE_I80_RSTS #ifdef USE_I80_RSTS
pat lol zne sfit($1, 8) pat lol zne sfit($1, 8)
with STACK
uses hlreg, areg uses hlreg, areg
gen gen
rst {const1, 3} rst {const1, 3}

View file

@ -56,7 +56,7 @@ void demo2(int lval, va_list ap)
ASSERT(strcmp(ptmp, "35") == 0); ASSERT(strcmp(ptmp, "35") == 0);
} }
void doit1(char *x, ...) void doit1a(char *x, ...)
{ {
va_list ptr; va_list ptr;
va_start(ptr, x); va_start(ptr, x);
@ -64,7 +64,15 @@ void doit1(char *x, ...)
va_end(ptr); va_end(ptr);
} }
void doit2(char *x, ...) void doit1b(char *x, ...)
{
va_list ptr;
va_start(ptr, x);
demo(1,ptr);
va_end(ptr);
}
void doit2a(char *x, ...)
{ {
va_list ptr; va_list ptr;
va_start(ptr, x); va_start(ptr, x);
@ -72,10 +80,20 @@ void doit2(char *x, ...)
va_end(ptr); va_end(ptr);
} }
void doit2b(char *x, ...)
{
va_list ptr;
va_start(ptr, x);
demo2(1,ptr);
va_end(ptr);
}
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
doit1("", 35); doit1a("", 35);
doit2("", 35); doit1b("", 35L);
doit2a("", 35);
doit2b("", 35L);
finished(); finished();
return 0; return 0;
} }