+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
/*-----------------------------------------------------------------*
*
*-----------------------------------------------------------------*/
-#if 0
static int regUsedinRange(pCode *pc1, pCode *pc2, regs *reg)
{
int i=0;
*-----------------------------------------------------------------*/
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;
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)
*/
//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");