diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 9b2ad12d790aa64b62bbeabe6573ca35edeeaf68..07c53ec1ccfa996cfdfd51c4c629bb4fd2e6ed74 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 13a177df066da69a43c891dd7c63f8ec0a0ab368..2824a6b3cc96ba545247057db300b0bfefab86f6 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: