mirror of
https://github.com/cc65/cc65.git
synced 2024-12-28 06:30:16 +00:00
Fixed a bug in code generation for left shifts
git-svn-id: svn://svn.cc65.org/cc65/trunk@3296 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
14e40851e9
commit
d46b1a395b
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user