Fix ignoring cast bug : void test (unsigned u) { for (; (int) u >= 0;) ++u; }
[fw/sdcc] / src / SDCCcse.c
index 126addff5460ee3e38c235980e49104b3c936d0b..b02adc0e708917510a9424c6d523ec99fc410ac5 100644 (file)
@@ -300,7 +300,7 @@ 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))))
     {
 
       if ((isGlobalInNearSpace (cop) &&
@@ -327,7 +327,7 @@ DEFSETFUNC (findCheaperOp)
       return 1;
 
     }
-
+  *opp=NULL;
   return 0;
 }