summaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-01-10 05:36:44 -0800
committerRichard Henderson <rth@gcc.gnu.org>1999-01-10 05:36:44 -0800
commitb6186fe678deebb0f97df0de41d70fb182e0d393 (patch)
tree58c45f74863b8f4e858ff560cca196b45d8ed856 /gcc/java
parent7c4710c720c51b2a3ff5eaa4791cd5ed051121b0 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/java/gjavah.c16
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