Patch from Jim Hawkridge that prevents stack registers from being optimized away.
authorsdattalo <sdattalo@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 30 Apr 2003 04:44:04 +0000 (04:44 +0000)
committersdattalo <sdattalo@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 30 Apr 2003 04:44:04 +0000 (04:44 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2577 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/pic/pcoderegs.c

index 61df7cddeddd6ed82bd62f776a3fe55daea85ede..6304203795bb01ffaed6a8f05565afe44ff3e210 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2003-04-29  Scott Dattalo  <scott@dattalo.com>
+
+       * src/pic/pcoderegs.c Applied patch from Jim Hawkridge <jim@jimhawkridge.uk.eu.org>
+       that tame's the PIC's over-aggressive optimizer.
+
 2003-04-29  Jesus Calvino-Fraga <jesusc@ece.ubc.ca>
 
         * src.dsw, link/z80/aslink.h, link/z80/linkz80.dsp: z80 linker
index b3e35cb322a5ea4cabe03dbb8c864cdc703f28bd..633e8df50fde076d9c402afc99e5171818bb7499 100644 (file)
@@ -317,7 +317,7 @@ void  RemoveRegsFromSet(set *regset)
 
        pc = setFirstItem(reg->reglives.usedpCodes);
 
-       if(reg->type == REG_SFR) {
+       if(reg->type == REG_SFR || reg->type == REG_STK) {
          //fprintf(stderr, "not removing SFR reg %s even though used only once\n",reg->name);
          continue;
        }
@@ -660,7 +660,7 @@ void OptimizeRegUsage(set *fregs, int optimize_multi_uses, int optimize_level)
     reg = fregs->item;
     fregs = fregs->next;
 
-    if(reg->type == REG_SFR) {
+    if(reg->type == REG_SFR || reg->type == REG_STK) {
       //fprintf(stderr,"skipping SFR: %s\n",reg->name);
       continue;
     }