// All other binary operators must have two ABS items to work with.
// They all produce an ABS value.
+ // Shamus: Is this true? There's at least one counterexample of legit
+ // code where this assumption fails to produce correct code.
default:
//printf("evexpr(): default\n");
- // GH - Removed for v1.0.15 as part of the fix for indexed loads.
- //if ((*sattr & (TEXT|DATA|BSS)) || (*--sattr & (TEXT|DATA|BSS)))
- //error(seg_error);
switch ((int)tk.u32[-1])
{
}
//printf("%i\n", *sval);
- *sattr = ABS | DEFINED | attr; // Expr becomes absolute
+//no *sattr = ABS | DEFINED | attr; // Expr becomes absolute
break;
case '/':
}
//printf("%i\n", *sval);
- *sattr = ABS | DEFINED | attr; // Expr becomes absolute
+//no *sattr = ABS | DEFINED | attr; // Expr becomes absolute
break;
case '%':
return error("mod (%) by zero");
*sval %= sval[1];
- *sattr = ABS | DEFINED; // Expr becomes absolute
+//no *sattr = ABS | DEFINED; // Expr becomes absolute
break;
case SHL:
return error("floating point numbers not allowed with operator '<<'.");
*sval <<= sval[1];
- *sattr = ABS | DEFINED; // Expr becomes absolute
+//no *sattr = ABS | DEFINED; // Expr becomes absolute
break;
case SHR:
return error("floating point numbers not allowed with operator '>>'.");
*sval >>= sval[1];
- *sattr = ABS | DEFINED; // Expr becomes absolute
+//no *sattr = ABS | DEFINED; // Expr becomes absolute
break;
case '&':
return error("floating point numbers not allowed with operator '&'.");
*sval &= sval[1];
- *sattr = ABS | DEFINED; // Expr becomes absolute
+//no *sattr = ABS | DEFINED; // Expr becomes absolute
break;
case '^':
return error("floating point numbers not allowed with operator '^'.");
*sval ^= sval[1];
- *sattr = ABS | DEFINED; // Expr becomes absolute
+//no *sattr = ABS | DEFINED; // Expr becomes absolute
break;
case '|':
return error("floating point numbers not allowed with operator '|'.");
*sval |= sval[1];
- *sattr = ABS | DEFINED; // Expr becomes absolute
+//no *sattr = ABS | DEFINED; // Expr becomes absolute
break;
default: