diff options
Diffstat (limited to 'as/express.c')
-rw-r--r-- | as/express.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/as/express.c b/as/express.c index 023e2dd..65923b5 100644 --- a/as/express.c +++ b/as/express.c @@ -42,7 +42,10 @@ error_pt errnum; PRIVATE void expundefined() { - lastexp.data = FORBIT | UNDBIT; + if( last_pass == 1 ) + lastexp.data = FORBIT | UNDBIT; + else + lastexp.data = UNDBIT; } PUBLIC void nonimpexpres() @@ -278,13 +281,18 @@ PUBLIC void factor() { if (!(symptr->type & (LABIT | VARBIT))) { - symptr->data |= FORBIT; + if( last_pass == 1 ) + symptr->data |= FORBIT; lastexp.sym = symptr; } if (pass != last_pass) { - lastexp.data = symptr->data & - (FORBIT | RELBIT | UNDBIT | SEGM); + if( last_pass == 1 ) + lastexp.data = symptr->data & + (FORBIT | RELBIT | UNDBIT | SEGM); + else + lastexp.data = symptr->data & + (RELBIT | UNDBIT | SEGM); /* possible flags for pass 1 */ lastexp.offset = symptr->value_reg_or_op.value; } |