]> git.sur5r.net Git - cc65/commitdiff
Fixed a bug
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 12 Jul 2002 08:45:42 +0000 (08:45 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 12 Jul 2002 08:45:42 +0000 (08:45 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@1350 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/coptind.c
src/cc65/expr.c

index 22aae197b6b361829eb9b063e07cd629c132c384..d0b9809c9d6f4ecd5874e634ff5fb32bdbf876b7 100644 (file)
@@ -504,7 +504,7 @@ unsigned OptJumpTarget (CodeSeg* S)
         * is not attached to the jump itself
         */
                if (E2 != 0                     &&
-           (E2->Info & OF_UBRA) != 0   && 
+           (E2->Info & OF_UBRA) != 0   &&
            E2->JumpTo                  &&
            E2->JumpTo->Owner != E2) {
 
@@ -875,7 +875,7 @@ unsigned OptDupLoads (CodeSeg* S)
                 */
                if (In->RegY >= 0                     && /* Value of Y is known */
                    E->AM == AM65_ZP                  && /* Store into zp */
-                   In->RegX == RegVal (E->Chg, In)) {   /* Value identical */
+                           In->RegY == RegVal (E->Chg, In)) {   /* Value identical */
 
                    Delete = 1;
 
index 53577e39d6aa3cf562b7910f8b1bf0f8c4c417ad..0f4a6a6575ceff5627c483b4a6786fc79c5107a2 100644 (file)
@@ -223,14 +223,12 @@ unsigned assignadjust (type* lhst, ExprDesc* rhs)
                } else if (!IsClassInt (rhst)) {
            Error ("Incompatible types");
        } else {
-           /* Adjust the int types. To avoid manipulation of TOS mark lhs
-            * as const.
-            */
+           /* Convert the rhs to the type of the lhs. */
            unsigned flags = TypeOf (rhst);
                    if (rhs->Flags == E_MCONST) {
                flags |= CF_CONST;
            }
-           return g_typeadjust (TypeOf (lhst) | CF_CONST, flags);
+                   return g_typecast (TypeOf (lhst), flags);
         }
     } else if (IsClassPtr (lhst)) {
        if (IsClassPtr (rhst)) {
@@ -246,7 +244,7 @@ unsigned assignadjust (type* lhst, ExprDesc* rhs)
                    case TC_INCOMPATIBLE:
                        Error ("Incompatible pointer types");
                        break;
-
+        
                    case TC_QUAL_DIFF:
                        Error ("Pointer types differ in type qualifiers");
                        break;
@@ -279,7 +277,7 @@ unsigned assignadjust (type* lhst, ExprDesc* rhs)
     return CF_INT;
 }
 
-        
+
 
 void DefineData (ExprDesc* Expr)
 /* Output a data definition for the given expression */
@@ -2947,10 +2945,8 @@ static void addsubeq (const GenDesc* Gen, ExprDesc *lval, int k)
     lflags |= TypeOf (lval->Type) | CF_FORCECHAR;
     rflags |= TypeOf (lval2.Type);
 
-    /* Adjust the rhs to the lhs. To avoid manipulation of the TOS, mark
-     * the lhs as const.
-     */
-    g_typeadjust (lflags | CF_CONST, rflags);
+    /* Cast the rhs to the type of the lhs */
+    g_typecast (lflags, rflags);
 
     /* Output apropriate code */
     if (lval->Flags & E_MGLOBAL) {