diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2003-04-21 17:50:51 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2003-04-21 13:50:51 -0400 |
commit | 337f4314e6b3bd6dc10a36806aacaa62b1025ad3 (patch) | |
tree | fdd6fa90d8825602228659824a86e251e034e9d1 /gcc | |
parent | 3819b963dc052accf5bcd51f16ac763b168901b0 (diff) | |
download | gcc-337f4314e6b3bd6dc10a36806aacaa62b1025ad3.zip gcc-337f4314e6b3bd6dc10a36806aacaa62b1025ad3.tar.gz gcc-337f4314e6b3bd6dc10a36806aacaa62b1025ad3.tar.bz2 |
expr.c (store_constructor): Set RTX_UNCHANGING_P if readonly_field_p before clearing.
* expr.c (store_constructor): Set RTX_UNCHANGING_P if readonly_field_p
before clearing.
From-SVN: r65890
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/expr.c | 10 |
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fecac21..0234146 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-04-21 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> + + * expr.c (store_constructor): Set RTX_UNCHANGING_P if readonly_field_p + before clearing. + 2003-04-21 Mark Mitchell <mark@codesourcery.com> * config/i386/winnt.c (i386_pe_mark_dllimport): Make the new RTL @@ -4899,7 +4899,15 @@ store_constructor (exp, target, cleared, size) || ((HOST_WIDE_INT) GET_MODE_SIZE (GET_MODE (target)) == size))) { - clear_storage (target, GEN_INT (size)); + rtx xtarget = target; + + if (readonly_fields_p (type)) + { + xtarget = copy_rtx (xtarget); + RTX_UNCHANGING_P (xtarget) = 1; + } + + clear_storage (xtarget, GEN_INT (size)); cleared = 1; } |