aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/jcf-dump.c
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2002-10-01 19:13:12 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2002-10-01 19:13:12 +0000
commit6f7e9e94497e08e6efba3b3793fea5eb7f17ad8e (patch)
tree304e594d569cf875f5c6f04bf21588735a992445 /gcc/java/jcf-dump.c
parent73a737681502c4880bee7b1825a4ff0c30f97e79 (diff)
downloadgcc-6f7e9e94497e08e6efba3b3793fea5eb7f17ad8e.zip
gcc-6f7e9e94497e08e6efba3b3793fea5eb7f17ad8e.tar.gz
gcc-6f7e9e94497e08e6efba3b3793fea5eb7f17ad8e.tar.bz2
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
Diffstat (limited to 'gcc/java/jcf-dump.c')
-rw-r--r--gcc/java/jcf-dump.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/java/jcf-dump.c b/gcc/java/jcf-dump.c
index 13a177d..2824a6b 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: