]> git.gag.com Git - fw/sdcc/commitdiff
(genFunction): avoid excess "inc sp"
authorbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 2 Dec 2001 20:27:50 +0000 (20:27 +0000)
committerbernhardheld <bernhardheld@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 2 Dec 2001 20:27:50 +0000 (20:27 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1657 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/mcs51/gen.c

index 5a54654898920d43e98fb08c202a43dc45a704d3..d7f3d45a1f028d2bf2147b53775606ed1ae6f862 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2001-12-02  Bernhard Held  <bernhard@bernhardheld.de>
+
+       * src/mcs51/gen.c (genFunction): avoid excess "inc sp"
+
 2001-11-25  Michael Hope  <michaelh@juju.net.nz>
        * support/regression/tests/bug-485362.c: Added.
 
index 7a2c5f303feaa5b4056041539b3026d67b9944bd..d91f0d4c205b7719bfe38176ed57b333aca7cd70 100644 (file)
@@ -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--)