From: bernhardheld Date: Sun, 2 Dec 2001 20:27:50 +0000 (+0000) Subject: (genFunction): avoid excess "inc sp" X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=0f56d12998f229e0397c9b0198e23a8a00ebc6d1;p=fw%2Fsdcc (genFunction): avoid excess "inc sp" git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1657 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index 5a546548..d7f3d45a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2001-12-02 Bernhard Held + + * src/mcs51/gen.c (genFunction): avoid excess "inc sp" + 2001-11-25 Michael Hope * support/regression/tests/bug-485362.c: Added. diff --git a/src/mcs51/gen.c b/src/mcs51/gen.c index 7a2c5f30..d91f0d4c 100644 --- a/src/mcs51/gen.c +++ b/src/mcs51/gen.c @@ -2416,6 +2416,18 @@ genFunction (iCode * ic) emitcode ("add", "a,#0x%02x", ((char) sym->stack & 0xff)); emitcode ("mov", "sp,a"); + } + else if (i > 5) + { + + /* ISRs will be handled by the code above, because they + can't have parameters. Therefore it's save to use r0 */ + emitcode ("mov", "r0,a"); + emitcode ("mov", "a,sp"); + emitcode ("add", "a,#0x%02x", ((char) sym->stack & 0xff)); + emitcode ("mov", "sp,a"); + emitcode ("mov", "a,r0"); + } else while (i--)