summaryrefslogtreecommitdiff
path: root/as/express.c
diff options
context:
space:
mode:
Diffstat (limited to 'as/express.c')
-rw-r--r--as/express.c16
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;
}