X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCcse.c;h=0434ea0190362064cd917ed4dd270071c03524bd;hb=73e640e5e350e3ab36d2dbdae334aa44ebe8be1a;hp=126addff5460ee3e38c235980e49104b3c936d0b;hpb=a0ec02948ec1ca4ce6df37ff88080140e3130ccd;p=fw%2Fsdcc diff --git a/src/SDCCcse.c b/src/SDCCcse.c index 126addff..0434ea01 100644 --- a/src/SDCCcse.c +++ b/src/SDCCcse.c @@ -300,7 +300,9 @@ 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_LONG(operandType (cop))==SPEC_LONG(operandType (*opp)))) { if ((isGlobalInNearSpace (cop) && @@ -327,7 +329,7 @@ DEFSETFUNC (findCheaperOp) return 1; } - + *opp=NULL; return 0; } @@ -819,7 +821,7 @@ algebraicOpts (iCode * ic) SET_ISADDR (IC_RESULT (ic), 0); } /* if casting to the same */ - if (checkType (operandType (IC_RESULT (ic)), + if (compareType (operandType (IC_RESULT (ic)), operandType (IC_RIGHT (ic))) == 1) { ic->op = '='; @@ -1159,9 +1161,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)); } @@ -1222,7 +1224,7 @@ fixUpTypes (iCode * ic) /* for pointer_gets if the types of result & left r the same then change it type of result to next */ if (IS_PTR (t1) && - checkType (t2 = operandType (IC_RESULT (ic)), t1) == 1) + compareType (t2 = operandType (IC_RESULT (ic)), t1) == 1) { setOperandType (IC_RESULT (ic), t2->next); } @@ -1494,7 +1496,7 @@ cseBBlock (eBBlock * ebb, int computeOnly, !computeOnly) { applyToSet (cseSet, findPrevIc, ic, &pdic); - if (pdic && checkType (operandType (IC_RESULT (pdic)), + if (pdic && compareType (operandType (IC_RESULT (pdic)), operandType (IC_RESULT (ic))) != 1) pdic = NULL; }