]> git.sur5r.net Git - cc65/commitdiff
Fixed problems with casts, where larger values weren't truncated when casting
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 28 Dec 2008 16:25:03 +0000 (16:25 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 28 Dec 2008 16:25:03 +0000 (16:25 +0000)
down to char size.

git-svn-id: svn://svn.cc65.org/cc65/trunk@3904 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/expr.c
src/cc65/typeconv.c

index 6fb2d5e27358fcd50f20209601a0fb7caba389f8..a880dbdbe120ee0236edb1c4d41ead39b8f0d1a6 100644 (file)
@@ -2929,8 +2929,8 @@ static void addsubeq (const GenDesc* Gen, ExprDesc *Expr)
     }
 
     /* Setup the code generator flags */
-    lflags |= TypeOf (Expr->Type) | GlobalModeFlags (Expr) | CF_FORCECHAR;
-    rflags |= TypeOf (Expr2.Type);
+    lflags |= TypeOf (Expr->Type) | GlobalModeFlags (Expr);
+    rflags |= TypeOf (Expr2.Type) | CF_FORCECHAR;
 
     /* Convert the type of the lhs to that of the rhs */
     g_typecast (lflags, rflags);
index 57313457db6a560562298e90348a3af51c48eb84..86c07ec884b5c966974fb77fea3efc01b5947bc3 100644 (file)
@@ -102,7 +102,7 @@ static void DoConversion (ExprDesc* Expr, const Type* NewType)
             LoadExpr (CF_NONE, Expr);
 
             /* Emit typecast code */
-            g_typecast (TypeOf (NewType), TypeOf (OldType));
+            g_typecast (TypeOf (NewType), TypeOf (OldType) | CF_FORCECHAR);
 
             /* Value is now in primary and an rvalue */
             ED_MakeRValExpr (Expr);
@@ -148,7 +148,7 @@ static void DoConversion (ExprDesc* Expr, const Type* NewType)
             LoadExpr (CF_NONE, Expr);
 
             /* Emit typecast code. */
-            g_typecast (TypeOf (NewType) | CF_FORCECHAR, TypeOf (OldType));
+            g_typecast (TypeOf (NewType), TypeOf (OldType) | CF_FORCECHAR);
 
             /* Value is now a rvalue in the primary */
             ED_MakeRValExpr (Expr);