Changed z80 to use loop induction. Updated libs to use no induction when it is better.
[fw/sdcc] / src / SDCCcse.c
index 8d059f92d1da5bc85215c0cb5fce2f6429a91e36..456db5121be50cd3eef6a068f2285b2999c3e201 100644 (file)
@@ -821,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 = '=';
@@ -869,6 +869,8 @@ updateSpillLocation (iCode * ic)
       if (!IC_RIGHT (ic)->noSpilLoc &&
          !IS_VOLATILE (setype) &&
          !IN_FARSPACE (SPEC_OCLS (setype)) &&
+          /* PENDING */
+          !TARGET_IS_Z80 &&
          !OTHERS_PARM (OP_SYMBOL (IC_RESULT (ic))))
 
        SPIL_LOC (IC_RIGHT (ic)) =
@@ -886,6 +888,8 @@ updateSpillLocation (iCode * ic)
       if (!IC_RIGHT (ic)->noSpilLoc &&
          !IS_VOLATILE (setype) &&
          !IN_FARSPACE (SPEC_OCLS (setype)) &&
+          /* PENDING */
+          !TARGET_IS_Z80 &&
          !OTHERS_PARM (OP_SYMBOL (IC_RESULT (ic))))
 
        SPIL_LOC (IC_RIGHT (ic)) =
@@ -1224,7 +1228,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);
     }
@@ -1496,7 +1500,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;
        }