X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCcse.c;h=5345f49e03cd2c39eb9d17b6105f8d3751f9f2cd;hb=02ce6999c7b4fed215a3ed58bd418609a1cc18b2;hp=126addff5460ee3e38c235980e49104b3c936d0b;hpb=a0ec02948ec1ca4ce6df37ff88080140e3130ccd;p=fw%2Fsdcc diff --git a/src/SDCCcse.c b/src/SDCCcse.c index 126addff..5345f49e 100644 --- a/src/SDCCcse.c +++ b/src/SDCCcse.c @@ -300,7 +300,10 @@ DEFSETFUNC (findCheaperOp) IS_ITEMP (IC_RESULT (cdp->diCode))) *opp = IC_RESULT (cdp->diCode); - if (*opp) + if ((*opp) && + (SPEC_USIGN(operandType (cop))==SPEC_USIGN(operandType (*opp))) && + (SPEC_SHORT(operandType (cop))==SPEC_SHORT(operandType (*opp))) && + (SPEC_LONG(operandType (cop))==SPEC_LONG(operandType (*opp)))) { if ((isGlobalInNearSpace (cop) && @@ -327,7 +330,7 @@ DEFSETFUNC (findCheaperOp) return 1; } - + *opp=NULL; return 0; } @@ -1159,9 +1162,9 @@ deleteGetPointers (set ** cseSet, set ** pss, operand * op, eBBlock * ebb) iTemp1 = iTemp0 + 8; iTemp2 = iTemp1 + 8; */ if (isinSetWith (compItems, (void*)IC_LEFT (cdp->diCode), - (void*)isOperandEqual) || + (insetwithFunc)isOperandEqual) || isinSetWith (compItems, (void*)IC_RIGHT (cdp->diCode), - (void*)isOperandEqual)) + (insetwithFunc)isOperandEqual)) { addSet (&compItems, IC_RESULT (cdp->diCode)); }