summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
4ca3c2d)
Turns out if you blindly promote arithmetic expressions to
ABS + DEFINED, it causes things to assemble wrong. This crept in around
v1.9.1; Now at version 1.12.5.
+tmp/
+elf/
+tests/
+regression-tests/
+rmac-*
// All other binary operators must have two ABS items to work with.
// They all produce an ABS value.
// 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");
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])
{
switch ((int)tk.u32[-1])
{
}
//printf("%i\n", *sval);
}
//printf("%i\n", *sval);
- *sattr = ABS | DEFINED | attr; // Expr becomes absolute
+//no *sattr = ABS | DEFINED | attr; // Expr becomes absolute
}
//printf("%i\n", *sval);
}
//printf("%i\n", *sval);
- *sattr = ABS | DEFINED | attr; // Expr becomes absolute
+//no *sattr = ABS | DEFINED | attr; // Expr becomes absolute
return error("mod (%) by zero");
*sval %= sval[1];
return error("mod (%) by zero");
*sval %= sval[1];
- *sattr = ABS | DEFINED; // Expr becomes absolute
+//no *sattr = ABS | DEFINED; // Expr becomes absolute
return error("floating point numbers not allowed with operator '<<'.");
*sval <<= sval[1];
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
return error("floating point numbers not allowed with operator '>>'.");
*sval >>= sval[1];
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
return error("floating point numbers not allowed with operator '&'.");
*sval &= sval[1];
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
return error("floating point numbers not allowed with operator '^'.");
*sval ^= sval[1];
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
return error("floating point numbers not allowed with operator '|'.");
*sval |= sval[1];
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
#define MAJOR 1 // Major version number
#define MINOR 12 // Minor version number
#define MAJOR 1 // Major version number
#define MINOR 12 // Minor version number
-#define PATCH 4 // Patch release number
+#define PATCH 5 // Patch release number