X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCcse.c;h=df360ff09f15c35e2b404f836038c15a54ef321f;hb=81096b2cb05e1aa87dec1b0a02d11754f7f1ed6d;hp=35a5df940f476513025bc343d0386ae13e69f198;hpb=bcffce0130d38cca654e3867a632f089ce4cf69e;p=fw%2Fsdcc diff --git a/src/SDCCcse.c b/src/SDCCcse.c index 35a5df94..df360ff0 100644 --- a/src/SDCCcse.c +++ b/src/SDCCcse.c @@ -175,6 +175,13 @@ replaceAllSymBySym (iCode * ic, operand * from, operand * to, bitVect ** ndpset) { iCode *lic; +#ifdef RANGEHUNT + printf ("replaceAllSymBySym\n\t"); + printOperand (from, stdout); + printf ("\nwith\t"); + printOperand (to, stdout); + printf ("\n"); +#endif for (lic = ic; lic; lic = lic->next) { int siaddr; @@ -471,6 +478,16 @@ DEFSETFUNC (findPointerSet) getSize (operandType (IC_RIGHT (cdp->diCode))) == getSize (operandType (rop))) { + if (IS_SPEC (operandType (IC_RIGHT (cdp->diCode))) && + SPEC_USIGN (operandType (IC_RIGHT (cdp->diCode))) != + SPEC_USIGN (operandType (rop))) + { + /* bug #1493710 + Reminder for Bernhard: check of signedness + could be unnecessary together with 'checkSign', if + signedness of operation is stored in ic */ + return 0; + } *opp = IC_RIGHT (cdp->diCode); return 1; }