* src/mcs51/main.c: fixed sort order of mnemonics (thanks to Maarten
Brock for spotting this)
* src/ds390/gen.c (genEndFunction),
* src/mcs51/gen.c (genEndFunction): always save psw if function is an
interrupt handler and critical. Disable push/pop optimizations when
peephole optimizations disabled.
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3328
4a8a32a2-be11-0410-ad9d-
d568d2c75423
+2004-05-25 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
+
+ * src/ds390/main.c,
+ * src/mcs51/main.c: fixed sort order of mnemonics (thanks to Maarten
+ Brock for spotting this)
+ * src/ds390/gen.c (genEndFunction),
+ * src/mcs51/gen.c (genEndFunction): always save psw if function is an
+ interrupt handler and critical. Disable push/pop optimizations when
+ peephole optimizations disabled.
+
2004-05-25 Vangelis Rokas <vrokas AT otenet.gr>
Updated pic16 library sources and headers.
emitcode ("ret", "");
}
- if (!port->peep.getRegsRead || !port->peep.getRegsWritten)
+ if (!port->peep.getRegsRead || !port->peep.getRegsWritten || options.nopeep)
return;
/* If this was an interrupt handler using bank 0 that called another */
&& !bitVectBitValue (regsUsed, CND_IDX))
{
regsUsed = bitVectUnion (regsUsed, regsUsedPrologue);
- if (IFFUNC_ISISR (sym->type) && !FUNC_REGBANK(sym->type)
- && !sym->stack)
+ if (IFFUNC_ISISR (sym->type) && !FUNC_REGBANK (sym->type)
+ && !sym->stack && !FUNC_ISCRITICAL (sym->type))
bitVectUnSetBit (regsUsed, CND_IDX);
}
else
static ds390opcodedata ds390opcodeDataTable[] =
{
{"acall","j", "", "", ""},
- {"ajmp", "j", "", "", ""},
{"add", "", "w", "rw", "r"},
{"addc", "", "rw", "rw", "r"},
+ {"ajmp", "j", "", "", ""},
{"anl", "", "", "rw", "r"},
{"cjne", "j", "w", "r", "r"},
{"clr", "", "", "w", ""},
emitcode ("ret", "");
}
- if (!port->peep.getRegsRead || !port->peep.getRegsWritten)
+ if (!port->peep.getRegsRead || !port->peep.getRegsWritten || options.nopeep)
return;
/* If this was an interrupt handler using bank 0 that called another */
&& !bitVectBitValue (regsUsed, CND_IDX))
{
regsUsed = bitVectUnion (regsUsed, regsUsedPrologue);
- if (IFFUNC_ISISR (sym->type) && !FUNC_REGBANK(sym->type)
- && !sym->stack)
+ if (IFFUNC_ISISR (sym->type) && !FUNC_REGBANK (sym->type)
+ && !sym->stack && !FUNC_ISCRITICAL (sym->type))
bitVectUnSetBit (regsUsed, CND_IDX);
}
else
static mcs51opcodedata mcs51opcodeDataTable[] =
{
{"acall","j", "", "", ""},
- {"ajmp", "j", "", "", ""},
{"add", "", "w", "rw", "r"},
{"addc", "", "rw", "rw", "r"},
+ {"ajmp", "j", "", "", ""},
{"anl", "", "", "rw", "r"},
{"cjne", "j", "w", "r", "r"},
{"clr", "", "", "w", ""},