diff options
author | Richard Henderson <rth@cygnus.com> | 1999-01-10 05:36:44 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1999-01-10 05:36:44 -0800 |
commit | b6186fe678deebb0f97df0de41d70fb182e0d393 (patch) | |
tree | 58c45f74863b8f4e858ff560cca196b45d8ed856 /gcc/java | |
parent | 7c4710c720c51b2a3ff5eaa4791cd5ed051121b0 (diff) | |
download | gcc-b6186fe678deebb0f97df0de41d70fb182e0d393.tar.gz |
gjavah.c (java_float_finite): Use a union to do type punning.
* gjavah.c (java_float_finite): Use a union to do type punning.
(java_double_finite): Likewise.
From-SVN: r24608
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/java/gjavah.c | 16 |
2 files changed, 17 insertions, 4 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 128fe984962..8751171be4a 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +Sun Jan 10 13:36:14 1999 Richard Henderson <rth@cygnus.com> + + * gjavah.c (java_float_finite): Use a union to do type punning. + (java_double_finite): Likewise. + Sat Jan 9 11:25:00 1999 Per Bothner <bothner@cygnus.com> * parse.y (build_new_array_init): Don't set EXPR_WFL_LINECOL diff --git a/gcc/java/gjavah.c b/gcc/java/gjavah.c index 45fc7d01052..2f538e1dd51 100644 --- a/gcc/java/gjavah.c +++ b/gcc/java/gjavah.c @@ -149,12 +149,16 @@ static int java_float_finite (f) jfloat f; { - int32 *ip = (int32 *) &f; + union { + jfloat f; + int32 i; + } u; + u.f = f; /* We happen to know that F_NAN_MASK will match all NaN values, and also positive and negative infinity. That's why we only need one test here. See The Java Language Specification, section 20.9. */ - return (*ip & F_NAN_MASK) != F_NAN_MASK; + return (u.i & F_NAN_MASK) != F_NAN_MASK; } /* Return 1 if D is not Inf or NaN. */ @@ -162,10 +166,14 @@ static int java_double_finite (d) jdouble d; { - int64 *ip = (int64 *) &d; + union { + jdouble d; + int64 i; + } u; + u.d = d; /* Now check for all NaNs. */ - return (*ip & D_NAN_MASK) != D_NAN_MASK; + return (u.i & D_NAN_MASK) != D_NAN_MASK; } void |