diff options
author | amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-03-04 10:23:23 +0000 |
---|---|---|
committer | amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-03-04 10:23:23 +0000 |
commit | 773d69917577e5c6708f7005e2055bf7347a2ec1 (patch) | |
tree | 2a5b34507a773fc68de86a6f3a19dec1a8df7b3e /gcc/c-cppbuiltin.c | |
parent | 7262f0b8f13f7befe0dedc0755d61fc0a9fd8516 (diff) | |
download | gcc-773d69917577e5c6708f7005e2055bf7347a2ec1.tar.gz |
* real.c (encode_ibm_extended): Don't bother rounding low double.
* c-cppbuiltin.c (builtin_define_float_constants): Tweak MAX
when fmt->pnan < fmt->p.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78900 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-cppbuiltin.c')
-rw-r--r-- | gcc/c-cppbuiltin.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/c-cppbuiltin.c b/gcc/c-cppbuiltin.c index 4e671d6b055..8573b8c5a46 100644 --- a/gcc/c-cppbuiltin.c +++ b/gcc/c-cppbuiltin.c @@ -193,6 +193,16 @@ builtin_define_float_constants (const char *name_prefix, const char *fp_suffix, if (i < n) *p++ = "08ce"[n - i]; sprintf (p, "p%d", fmt->emax * fmt->log2_b); + if (fmt->pnan < fmt->p) + { + /* This is an IBM extended double format made up of two IEEE + doubles. The value of the long double is the sum of the + values of the two parts. The most significant part is + required to be the value of the long double rounded to the + nearest double. Rounding means we need a slightly smaller + value for LDBL_MAX. */ + buf[4 + fmt->pnan / 4] = "7bde"[fmt->pnan % 4]; + } } sprintf (name, "__%s_MAX__", name_prefix); builtin_define_with_hex_fp_value (name, type, decimal_dig, buf, fp_suffix); |