#include "pcoderegs.h"
#include "pcodeflow.h"
+
+#define DEBUG_REMOVE1PCODE 0
+#define HAVE_DBGREGUSAGE 0
+
+
extern void pic16_pCodeInsertAfter(pCode *pc1, pCode *pc2);
extern pCode * pic16_findPrevInstruction(pCode *pci);
extern pBranch * pic16_pBranchAppend(pBranch *h, pBranch *n);
/*-----------------------------------------------------------------*
*
*-----------------------------------------------------------------*/
-#if 0
+
+#if HAVE_DBGREGUSAGE
static void dbg_regusage(set *fregs)
{
regs *reg;
}
}
}
-#endif
/*-----------------------------------------------------------------*
*
*-----------------------------------------------------------------*/
-#if 0
-static void dbg_dumpregusage(void)
+
+//static
+void dbg_dumpregusage(void)
{
fprintf(stderr,"*** Register Usage ***\n");
if(PCC_REGISTER & PCI(pc)->outCond)
addSetIfnotP(& (reg->reglives.assignedpFlows), pcfl);
- addSetIfnotP(& (reg->reglives.usedpCodes), pc);
+ addSetIfnotP(& (reg->reglives.usedpCodes), pc);
+
+// reg->wasUsed=1;
#if 1
/* check to see if this pCode has 2 memory operands,
addSetIfnotP(& (reg->reglives.assignedpFlows), pcfl);
addSetIfnotP(& (reg->reglives.usedpCodes), pc);
+
+// reg->wasUsed=1;
}
}
#endif
}
#endif
-// dbg_dumpregusage();
+#if HAVE_DBGREGUSAGE
+ dbg_dumpregusage();
+#endif
}
deleteSetItem (&(reg->reglives.usedpCodes),pc);
-#if 0
+#if DEBUG_REMOVE1PCODE
fprintf(stderr,"removing instruction:\n");
pc->print(stderr,pc);
#endif
if(pcn) {
if(PCI(pcn)->cline) {
-#if 0
+
+#if DEBUG_REMOVE1PCODE
fprintf(stderr, "source line has been optimized completely out\n");
pc->print(stderr,pc);
#endif
+
} else {
PCI(pcn)->cline = PCI(pc)->cline;
}
if(used == 0) {
-// fprintf(stderr,"%s:%d: getting rid of reg %s\n",__FILE__, __LINE__, reg->name);
+// fprintf(stderr,"%s:%d: getting rid of reg %s\n",__FILE__, __LINE__, reg->name);
reg->isFree = 1;
reg->wasUsed = 0;
fprintf(stderr,"reg %s, type =%d\n",r->name, r->type);
}
-
- pc->print(stderr, pc);
-
- fprintf(stderr,"%s:%d: removing reg %s because it is used only once\n",__FILE__, __LINE__, reg->name);
-
-
Remove1pcode(pc, reg);
/*
pic16_unlinkpCode(pc);