mirror of
https://github.com/cc65/cc65.git
synced 2024-12-23 04:30:10 +00:00
Fixed the cc65 code that handled an addition of a pointer to a 32-bit offset.
It didn't demote the offset to int because it looked at the pointer (instead of the offset) which already was 16 bits.
This commit is contained in:
parent
104f898260
commit
7e14dde07b
@ -2390,7 +2390,6 @@ static void parseadd (ExprDesc* Expr)
|
||||
Type* lhst; /* Type of left hand side */
|
||||
Type* rhst; /* Type of right hand side */
|
||||
|
||||
|
||||
/* Skip the PLUS token */
|
||||
NextToken ();
|
||||
|
||||
@ -2573,7 +2572,7 @@ static void parseadd (ExprDesc* Expr)
|
||||
flags = CF_PTR;
|
||||
} else if (IsClassInt (lhst) && IsClassPtr (rhst)) {
|
||||
/* Left is int, right is pointer, must scale lhs */
|
||||
g_tosint (TypeOf (rhst)); /* Make sure, TOS is int */
|
||||
g_tosint (TypeOf (lhst)); /* Make sure TOS is int */
|
||||
g_swap (CF_INT); /* Swap TOS and primary */
|
||||
g_scale (CF_INT, CheckedPSizeOf (rhst));
|
||||
/* Operate on pointers, result type is a pointer */
|
||||
@ -2607,7 +2606,6 @@ static void parseadd (ExprDesc* Expr)
|
||||
|
||||
/* Condition codes not set */
|
||||
ED_MarkAsUntested (Expr);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user