From 7a517d31cdd5cdb768bf2130228911e9d39537a5 Mon Sep 17 00:00:00 2001 From: epetrich Date: Tue, 25 May 2004 22:30:39 +0000 Subject: [PATCH] * 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. git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3328 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 10 ++++++++++ src/ds390/gen.c | 6 +++--- src/ds390/main.c | 2 +- src/mcs51/gen.c | 6 +++--- src/mcs51/main.c | 2 +- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 958e2c1f..38af63f1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-05-25 Erik Petrich + + * 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 Updated pic16 library sources and headers. diff --git a/src/ds390/gen.c b/src/ds390/gen.c index 0e077df1..1f67805c 100644 --- a/src/ds390/gen.c +++ b/src/ds390/gen.c @@ -3453,7 +3453,7 @@ genEndFunction (iCode * ic) 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 */ @@ -3499,8 +3499,8 @@ genEndFunction (iCode * ic) && !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 diff --git a/src/ds390/main.c b/src/ds390/main.c index 27e4f5fc..6ffe1f23 100644 --- a/src/ds390/main.c +++ b/src/ds390/main.c @@ -630,9 +630,9 @@ ds390opcodedata; 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", ""}, diff --git a/src/mcs51/gen.c b/src/mcs51/gen.c index 861f4fc7..3e9b341c 100644 --- a/src/mcs51/gen.c +++ b/src/mcs51/gen.c @@ -3050,7 +3050,7 @@ genEndFunction (iCode * ic) 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 */ @@ -3090,8 +3090,8 @@ genEndFunction (iCode * ic) && !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 diff --git a/src/mcs51/main.c b/src/mcs51/main.c index 84730284..bfdd26d9 100644 --- a/src/mcs51/main.c +++ b/src/mcs51/main.c @@ -483,9 +483,9 @@ mcs51opcodedata; 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", ""}, -- 2.30.2