gjavah.c (java_float_finite): Use a union to do type punning.
authorRichard Henderson <rth@cygnus.com>
Sun, 10 Jan 1999 13:36:44 +0000 (05:36 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Sun, 10 Jan 1999 13:36:44 +0000 (05:36 -0800)
        * gjavah.c (java_float_finite): Use a union to do type punning.
        (java_double_finite): Likewise.

From-SVN: r24608

gcc/java/ChangeLog
gcc/java/gjavah.c

index 128fe98496273bb2a785738b1bc0e0beaf135d86..8751171be4a9e90e74ff61a309df7a4158b3fa9d 100644 (file)
@@ -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
index 45fc7d010527201c7563d262fd6341cbc674e4bb..2f538e1dd513f0f364f0c7ea23173bc3e0220e9e 100644 (file)
@@ -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