]> git.sur5r.net Git - cc65/commitdiff
Fixed a bug in code generation for left shifts
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 23 Nov 2004 10:04:34 +0000 (10:04 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 23 Nov 2004 10:04:34 +0000 (10:04 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3296 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/shiftexpr.c

index 7e68656ad1d566c1799fa6817c7d37f9f93141d7..2a5da3b9c21e7d67c004ebe3ffc2f503f30c5304 100644 (file)
@@ -173,13 +173,13 @@ void ShiftExpr (struct ExprDesc* Expr)
                 goto Next;
             }
 
-            /* If we're shifting an integer or unsigned to the left, the
+            /* If we're shifting an integer or unsigned to the right, the
              * lhs has a const address, and the shift count is larger than 8,
              * we can load just the high byte as a char with the correct
              * signedness, and reduce the shift count by 8. If the remaining
              * shift count is zero, we're done.
              */
-            if (Tok == TOK_SHL &&
+            if (Tok == TOK_SHR &&
                 IsTypeInt (Expr->Type) &&
                 ED_IsLVal (Expr) &&
                 (ED_IsLocConst (Expr) || ED_IsLocStack (Expr)) &&
@@ -204,7 +204,7 @@ void ShiftExpr (struct ExprDesc* Expr)
                 /* Remove the generated load code */
                 RemoveCode (&Mark1);
 
-                /* Generate again code for the load */
+                /* Generate again code for the load, this time with the new type */
                 LoadExpr (CF_NONE, Expr);
 
                 /* Reset the type */
@@ -216,7 +216,7 @@ void ShiftExpr (struct ExprDesc* Expr)
                     goto MakeRVal;
                 }
             }
-        
+
         }
 
         /* Generate code */