summaryrefslogtreecommitdiff
path: root/asm
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2018-07-06 03:11:52 -0700
committerH. Peter Anvin <hpa@zytor.com>2018-07-06 03:11:52 -0700
commitaf59af466a58c0d22a6d48f0c6cfd2b79ddde39e (patch)
tree7f69b0c413978d06a21e28ec9364a81c03a57f01 /asm
parentc7c28357c85fb0bf4105419195bc204aea0fef35 (diff)
downloadnasm-af59af466a58c0d22a6d48f0c6cfd2b79ddde39e.tar.gz
float: fix bogus pass flags for errors and warnings
Formatting errors -- syntax errors -- are errors, no matter which pass they end up in. ERR_PASS1 is just plain crazy: if we end up with a formatting error on the code-generation pass, we are in a world of hurt. Defer warnings to the code-generation pass; that's the pass which matters value-wise, and that way we get the warnings in the list file, too. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Diffstat (limited to 'asm')
-rw-r--r--asm/float.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/asm/float.c b/asm/float.c
index 87db8561..37f5585a 100644
--- a/asm/float.c
+++ b/asm/float.c
@@ -182,7 +182,7 @@ static int32_t read_exponent(const char *string, int32_t max)
} else if (*string == '_') {
/* do nothing */
} else {
- nasm_error(ERR_NONFATAL|ERR_PASS1,
+ nasm_error(ERR_NONFATAL,
"invalid character in floating-point constant %s: '%c'",
"exponent", *string);
return INT32_MAX;
@@ -219,7 +219,7 @@ static bool ieee_flconvert(const char *string, fp_limb *mant,
if (!seendot) {
seendot = true;
} else {
- nasm_error(ERR_NONFATAL|ERR_PASS1,
+ nasm_error(ERR_NONFATAL,
"too many periods in floating-point constant");
return false;
}
@@ -234,7 +234,7 @@ static bool ieee_flconvert(const char *string, fp_limb *mant,
*p++ = *string - '0';
} else {
if (!warned) {
- nasm_error(ERR_WARNING|ERR_WARN_FL_TOOLONG|ERR_PASS1,
+ nasm_error(ERR_WARNING|ERR_WARN_FL_TOOLONG|ERR_PASS2,
"floating-point constant significand contains "
"more than %i digits", MANT_DIGITS);
warned = true;
@@ -247,7 +247,7 @@ static bool ieee_flconvert(const char *string, fp_limb *mant,
} else if (*string == '_') {
/* do nothing */
} else {
- nasm_error(ERR_NONFATAL|ERR_PASS1,
+ nasm_error(ERR_NONFATAL|ERR_PASS2,
"invalid character in floating-point constant %s: '%c'",
"significand", *string);
return false;
@@ -533,7 +533,7 @@ static bool ieee_flconvert_bin(const char *string, int bits,
if (!seendot)
seendot = true;
else {
- nasm_error(ERR_NONFATAL|ERR_PASS1,
+ nasm_error(ERR_NONFATAL,
"too many periods in floating-point constant");
return false;
}
@@ -575,7 +575,7 @@ static bool ieee_flconvert_bin(const char *string, int bits,
} else if (c == '_') {
/* ignore */
} else {
- nasm_error(ERR_NONFATAL|ERR_PASS1,
+ nasm_error(ERR_NONFATAL,
"floating-point constant: `%c' is invalid character", c);
return false;
}
@@ -675,7 +675,7 @@ static int to_packed_bcd(const char *str, const char *p,
int tv = -1;
if (fmt != &ieee_80) {
- nasm_error(ERR_NONFATAL|ERR_PASS1,
+ nasm_error(ERR_NONFATAL,
"packed BCD requires an 80-bit format");
return 0;
}
@@ -685,7 +685,7 @@ static int to_packed_bcd(const char *str, const char *p,
if (c >= '0' && c <= '9') {
if (tv < 0) {
if (n == 9) {
- nasm_error(ERR_WARNING|ERR_PASS1,
+ nasm_error(ERR_WARNING|ERR_PASS2,
"packed BCD truncated to 18 digits");
}
tv = c-'0';
@@ -698,7 +698,7 @@ static int to_packed_bcd(const char *str, const char *p,
} else if (c == '_') {
/* do nothing */
} else {
- nasm_error(ERR_NONFATAL|ERR_PASS1,
+ nasm_error(ERR_NONFATAL,
"invalid character `%c' in packed BCD constant", c);
return 0;
}
@@ -763,7 +763,7 @@ static int to_float(const char *str, int s, uint8_t *result,
type = FL_INFINITY;
break;
default:
- nasm_error(ERR_NONFATAL|ERR_PASS1,
+ nasm_error(ERR_NONFATAL,
"internal error: unknown FP constant token `%s'\n", str);
type = FL_QNAN;
break;
@@ -811,7 +811,7 @@ static int to_float(const char *str, int s, uint8_t *result,
type = FL_NORMAL;
} else if (exponent > 0) {
if (pass0 == 1)
- nasm_error(ERR_WARNING|ERR_WARN_FL_OVERFLOW|ERR_PASS1,
+ nasm_error(ERR_WARNING|ERR_WARN_FL_OVERFLOW|ERR_PASS2,
"overflow in floating-point constant");
type = FL_INFINITY;
} else {
@@ -846,11 +846,11 @@ static int to_float(const char *str, int s, uint8_t *result,
} else {
if (daz || is_zero(mant)) {
/* Flush denormals to zero */
- nasm_error(ERR_WARNING|ERR_WARN_FL_UNDERFLOW|ERR_PASS1,
+ nasm_error(ERR_WARNING|ERR_WARN_FL_UNDERFLOW|ERR_PASS2,
"underflow in floating-point constant");
goto zero;
} else {
- nasm_error(ERR_WARNING|ERR_WARN_FL_DENORM|ERR_PASS1,
+ nasm_error(ERR_WARNING|ERR_WARN_FL_DENORM|ERR_PASS2,
"denormal floating-point constant");
}
}
@@ -866,7 +866,7 @@ static int to_float(const char *str, int s, uint8_t *result,
ieee_shr(mant, 1);
exponent++;
if (exponent >= (expmax << 1)-1) {
- nasm_error(ERR_WARNING|ERR_WARN_FL_OVERFLOW|ERR_PASS1,
+ nasm_error(ERR_WARNING|ERR_WARN_FL_OVERFLOW|ERR_PASS2,
"overflow in floating-point constant");
type = FL_INFINITY;
goto overflow;