This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RE: Patch for gcc.c-torture/execute/ieee/20010226-1.c
- From: "D.Venkatasubramanian, Noida" <dvenkat at noida dot hcltech dot com>
- To: Fergus Henderson <fjh at cs dot mu dot oz dot au>
- Cc: gcc-patches at gcc dot gnu dot org, "'gcc at gcc dot gnu dot org'" <gcc at gcc dot gnu dot org>
- Date: Mon, 23 Sep 2002 18:41:19 +0530
- Subject: RE: Patch for gcc.c-torture/execute/ieee/20010226-1.c
Hi,
> + /* Some targets may not support double precision floating point
> arithmetic,
> + * this test case should pass for such targets. */
> + if (sizeof(long double) <= 4)
> + exit (0);
>> You are assuming 8-bit bytes here.
>> Consider a system in which char, short, int, long, and long double are
>> all 64 bits. Then sizeof(long double) = 1. But ideally we wouldn't
>> want to disable this test on such a system, would we?
So, could we do something like this?
+ #if defined (__H8300__) || (__H8300H__) || (__H8300S__)
+ if (sizeof(long double) <= 4)
+ exit (0);
+ #endif
Thanks for the observation. Support for other targets could be added as and
when required.
According to IEEE 754 Specifications,
An IEEE double extended format must have a significand precision of
at least 64 bits and occupy at least 79 bits overall.
For a perfect solution,
1) We would have to calculate the number of significand precision bits in
the data type.
2) The overall size in bits of the data type.
3) Then compare the two figures with the Specs.
Such a solution could bloat the code size considerably,
if at all calculating these could be possible.
Thanks and best regards,
Venky
____________________________________________________________
Today is the tomorrow we worried about yesterday!