diff options
author | Richard Henderson <rth@redhat.com> | 2001-05-21 23:29:39 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-05-21 23:29:39 -0700 |
commit | d425c5b05f7fad4e7150e89246eea6c05e2264bd (patch) | |
tree | 81d71cce4f71afa12ff4340d5a95d0f9fd354e0d | |
parent | 9ea659ac82ee639346acbf3c6ba2dff18d63c514 (diff) | |
download | gcc-d425c5b05f7fad4e7150e89246eea6c05e2264bd.zip gcc-d425c5b05f7fad4e7150e89246eea6c05e2264bd.tar.gz gcc-d425c5b05f7fad4e7150e89246eea6c05e2264bd.tar.bz2 |
emit-rtl.c (init_emit_once): Zero unused memory in a CONST_DOUBLE.
* emit-rtl.c (init_emit_once): Zero unused memory in a
CONST_DOUBLE.
From-SVN: r42423
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/emit-rtl.c | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4b87a8c..20caa7a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-05-21 Richard Henderson <rth@redhat.com> + + * emit-rtl.c (init_emit_once): Zero unused memory in a + CONST_DOUBLE. + 2001-05-21 Mark Mitchell <mark@codesourcery.com> * tree.h (type_num_arguments): Declare it. diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index e1e26df..7a98f20 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -4336,9 +4336,16 @@ init_emit_once (line_numbers) rtx tem = rtx_alloc (CONST_DOUBLE); union real_extract u; - memset ((char *) &u, 0, sizeof u); /* Zero any holes in a structure. */ + /* Zero any holes in a structure. */ + memset ((char *) &u, 0, sizeof u); u.d = i == 0 ? dconst0 : i == 1 ? dconst1 : dconst2; + /* Avoid trailing garbage in the rtx. */ + if (sizeof (u) < sizeof (HOST_WIDE_INT)) + CONST_DOUBLE_LOW (tem) = 0; + if (sizeof (u) < 2 * sizeof (HOST_WIDE_INT)) + CONST_DOUBLE_HIGH (tem) = 0; + memcpy (&CONST_DOUBLE_LOW (tem), &u, sizeof u); CONST_DOUBLE_MEM (tem) = cc0_rtx; CONST_DOUBLE_CHAIN (tem) = NULL_RTX; |