+2006-12-21 Maarten Brock <sourceforge.brock AT dse.nl>
+
+ * src/z80/gen.c (assignResultValue): fixed bug when registers overlap,
+ with this z80 passes printf float test when enabled
+ * support/regression/tests/bug1057979.c: typo disabled ds390 float test
+
2006-12-28 Borut Razem <borut.razem AT siol.net>
* support/cpp2/config.in, support/cpp2/configure.in,
};
static char *_z80_return[] =
-{"l", "h", "e", "d"};
+ {"l", "h", "e", "d"};
static char *_gbz80_return[] =
-{"e", "d", "l", "h"};
+ {"e", "d", "l", "h"};
static char *_fReceive[] =
{ "c", "b", "e", "d" };
}
else
{
+ if ((AOP_TYPE (oper) == AOP_REG) && (AOP_SIZE (oper) == 4) &&
+ !strcmp (AOP (oper)->aopu.aop_reg[size-1]->name, _fReturn[size-2]))
+ {
+ size--;
+ _emitMove ("a", _fReturn[size-1]);
+ _emitMove (_fReturn[size-1], _fReturn[size]);
+ _emitMove (_fReturn[size], "a");
+ aopPut (AOP (oper), _fReturn[size], size-1);
+ size--;
+ }
while (size--)
{
aopPut (AOP (oper), _fReturn[size], size);
spilt live range, if there is an ifx statement
following this pop then the if statement might
be using some of the registers being popped which
- would destory the contents of the register so
+ would destroy the contents of the register so
we need to check for this condition and handle it */
if (ic->next &&
ic->next->op == IFX &&
ASSERT( 0 == strcmp( s, "ab " ) );
#endif
-#if defined(SDCC__ds390) || defined(PORT_HOST)
+#if defined(SDCC_ds390) || defined(PORT_HOST)
//and from bug 1358192
sprintf( s, "%f", 10.1 );
LOG((s));