From 6f7e9e94497e08e6efba3b3793fea5eb7f17ad8e Mon Sep 17 00:00:00 2001
From: Nathan Sidwell <nathan@codesourcery.com>
Date: Tue, 1 Oct 2002 19:13:12 +0000
Subject: [PATCH] jcf-dump.c (print_constant, [...]): Don't fall foul of
 type-based aliasing.

	* jcf-dump.c (print_constant, case CONSTANT_float): Don't fall
	foul of type-based aliasing.

From-SVN: r57699
---
 gcc/java/ChangeLog  |  5 +++++
 gcc/java/jcf-dump.c | 14 +++++++++++---
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 9b2ad12d790a..07c53ec1ccfa 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,8 @@
+2002-10-01  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* jcf-dump.c (print_constant, case CONSTANT_float): Don't fall
+	foul of type-based aliasing.
+
 2002-09-30  Anthony Green  <green@redhat.com>
 
 	* gcj.texi (Invoking jv-scan): Fix texinfo.
diff --git a/gcc/java/jcf-dump.c b/gcc/java/jcf-dump.c
index 13a177df066d..2824a6b3cc96 100644
--- a/gcc/java/jcf-dump.c
+++ b/gcc/java/jcf-dump.c
@@ -504,10 +504,18 @@ DEFUN(print_constant, (out, jcf, index, verbosity),
       break;
     case CONSTANT_Float:
       {
-	jfloat fnum = JPOOL_FLOAT (jcf, index);
-	fprintf (out, "%s%.10g", verbosity > 0 ? "Float " : "", (double) fnum);
+	union
+	{
+	  jfloat f;
+	  int32 i;
+	} pun;
+	
+	pun.f = JPOOL_FLOAT (jcf, index);
+	fprintf (out, "%s%.10g",
+		 verbosity > 0 ? "Float " : "", (double) pun.f);
 	if (verbosity > 1)
-	  fprintf (out, ", bits = 0x%08lx", (long) (* (int32 *) &fnum));
+	  fprintf (out, ", bits = 0x%08lx", (long) pun.i);
+	
 	break;
       }
     case CONSTANT_Double:
-- 
GitLab