From: Scott D. <sc...@da...> - 2001-10-16 04:04:07
|
On Mon, 15 Oct 2001, Scott Dattalo wrote: > > I just sync'd to CVS and discovered a perhaps insignificant overall, but > significant to the PIC port, change. > > In the "genCmpEq(iCode *ic, iCode *ifx)" function, which I copied from the > 8051 port, ifx is now NULL when int's are compared to lit's. I've got a > lot of optimized code on integer comparison that's going to need > overhauling that I'd prefer not to change... I'm sure there was a good > reason for the iCode to change, but what was it? Sorry to jump the gun with this really unclear question. The problem is actuall with static iCode * ifxForOp (operand * op, iCode * ic) { /* if true symbol then needs to be assigned */ if (IS_TRUE_SYMOP (op)) return NULL; /* if this has register type condition and the next instruction is ifx with the same operand and live to of the operand is upto the ifx only then */ if (ic->next && ic->next->op == IFX && IC_COND (ic->next)->key == op->key && OP_SYMBOL (op)->liveTo <= ic->next->seq) return ic->next; return NULL; } Again, this function is copied directly from the 8051 port. With the latest stuff in CVS, this code is returning NULL. For the last year or so it has been returning non-null. I think the change has something to do with comparing int's to literals. Johan, did the recent lit casting changes perhaps affect this? Did anyone notice a significant increase in the 8051 code size all of a sudden? Scott |