1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-01 13:41:34 +00:00

Fixed a bug

git-svn-id: svn://svn.cc65.org/cc65/trunk@550 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz 2000-12-04 21:01:50 +00:00
parent cd6f591d11
commit 0ab45f63f0
2 changed files with 7 additions and 6 deletions

View File

@ -198,8 +198,8 @@ unsigned assignadjust (type* lhst, struct expent* rhs)
* set to the type of the left hand side.
*/
{
/* Get the type of the right hand side. Treat function types as
* pointer-to-function
/* Get the type of the right hand side. Treat function types as
* pointer-to-function
*/
type* rhst = rhs->e_tptr;
if (IsTypeFunc (rhst)) {
@ -1316,11 +1316,12 @@ static void pre_incdec (struct expent* lval, void (*inc) (unsigned, unsigned lon
g_subeqstatic (flags, lval->e_const, 0, val);
}
} else if (lval->e_flags & E_MEXPR) {
/* Address in a/x. */
/* Address in a/x, check if we have an offset */
unsigned Offs = (lval->e_flags == E_MEOFFS)? lval->e_const : 0;
if (inc == g_inc) {
g_addeqind (flags, lval->e_const, val);
g_addeqind (flags, Offs, val);
} else {
g_subeqind (flags, lval->e_const, val);
g_subeqind (flags, Offs, val);
}
} else {
Internal ("Invalid addressing mode");

View File

@ -27,7 +27,7 @@
#define E_MLOCAL 0x0040 /* Reference to local variable (stack offset) */
#define E_MCONST 0x0020 /* Constant value */
#define E_MEXPR 0x0010 /* Result is in primary register */
#define E_MEOFFS 0x0011 /* Offset is in primary register, base on stack */
#define E_MEOFFS 0x0011 /* Base is in primary register, const offset */
#define E_MCTYPE 0x0007 /* Type of a constant */
#define E_TCONST 0x0000 /* Constant */