* src/pic16/pcoderegs.c (pCodeOptime2pCodes): reenabled optimization
authortecodev <tecodev@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 22 Jan 2005 01:47:18 +0000 (01:47 +0000)
committertecodev <tecodev@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 22 Jan 2005 01:47:18 +0000 (01:47 +0000)
* (OptimizeRegUsage): make sure that there is really no other flow where
  the first pCode is used

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3645 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/pic16/pcoderegs.c

index f8a3f7fbdce588f53491a7444cf74d6359548c93..75a82ee52d2522aacbc9a4f05efa594894a6ee6b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-01-22 Daniel Winkler <post AT danielwinkler.de>
+
+       * src/pic16/pcoderegs.c (pCodeOptime2pCodes): reenabled optimization
+       * (OptimizeRegUsage): make sure that there is really no other flow where
+         the first pCode is used
+
 2005-01-22 Raphael Neider <rneider AT web.de>
 
        * src/pic16/pcoderegs.c (pCodeOptime2pCodes): disabled optimization
index 844c83363e4b020e15df9c9d3c39a504138bf92f..807d9c043558bdc39a156a180e5acc1f74790808 100644 (file)
@@ -431,7 +431,6 @@ static void Remove2pcodes(pCode *pcflow, pCode *pc1, pCode *pc2, regs *reg, int
 /*-----------------------------------------------------------------*
  *
  *-----------------------------------------------------------------*/
-#if 0
 static int regUsedinRange(pCode *pc1, pCode *pc2, regs *reg)
 {
   int i=0;
@@ -466,10 +465,6 @@ static int regUsedinRange(pCode *pc1, pCode *pc2, regs *reg)
  *-----------------------------------------------------------------*/
 static int pCodeOptime2pCodes(pCode *pc1, pCode *pc2, pCode *pcfl_used, regs *reg, int can_free, int optimize_level)
 {
-  // pc1 and pc2 have to given in execution order -- this not guaranteed.
-  // The check on pcX->seq does not help much as (nearly) all seq's are
-  // zero at the moment...
-
   pCode *pct1, *pct2;
   regs  *reg1, *reg2;
 
@@ -670,14 +665,6 @@ static int pCodeOptime2pCodes(pCode *pc1, pCode *pc2, pCode *pcfl_used, regs *re
 
   return (total_registers_saved != t);
 }
-#else
-
-static int pCodeOptime2pCodes(pCode *pc1, pCode *pc2, pCode *pcfl_used, regs *reg, int can_free, int optimize_level)
-{
-  return 0;
-}
-
-#endif
 
 /*-----------------------------------------------------------------*
  * void pCodeRegOptimeRegUsage(pBlock *pb) 
@@ -735,7 +722,7 @@ static void OptimizeRegUsage(set *fregs, int optimize_multi_uses, int optimize_l
        */
 
        //fprintf(stderr," used only twice\n");
-       if(pcfl_used->seq == pcfl_assigned->seq) {
+       if(pcfl_used->seq == pcfl_assigned->seq && !(setNextItem(reg->reglives.usedpFlows)) && !(setNextItem(reg->reglives.assignedpFlows))) {
 
          //fprintf(stderr, "  and used in same flow\n");