Index: typeconv.c
===================================================================
--- typeconv.c	(revision 3903)
+++ typeconv.c	(working copy)
@@ -102,7 +102,7 @@
             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 @@
             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);
Index: expr.c
===================================================================
--- expr.c	(revision 3903)
+++ expr.c	(working copy)
@@ -2929,8 +2929,8 @@
     }
 
     /* 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);