aboutsummaryrefslogtreecommitdiff
path: root/gcc/loop.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2004-01-12 17:32:12 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2004-01-12 16:32:12 +0000
commit432f982f5c2f65daa1d65a9af2fbfc585c88f114 (patch)
tree7bcdf745057a80c4e44eb2fff2033e874e50eea6 /gcc/loop.c
parent9a249c79b355459f3623cfbf8c0f2f6925d1a280 (diff)
downloadgcc-432f982f5c2f65daa1d65a9af2fbfc585c88f114.zip
gcc-432f982f5c2f65daa1d65a9af2fbfc585c88f114.tar.gz
gcc-432f982f5c2f65daa1d65a9af2fbfc585c88f114.tar.bz2
re PR rtl-optimization/12826 (Optimizer removes reference through volatile pointer)
PR opt/12826 * loop.c (insert_loop_mem): Preffer VOLATILE memory references to be stored. PR opt/12863 * cfgcleanup.c (label_is_jump_target_p): Move to... * rtlanal.c (label_is_jump_target_p): ... here. * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Fix redirecting of fallthru edges unified with branch edges. From-SVN: r75733
Diffstat (limited to 'gcc/loop.c')
-rw-r--r--gcc/loop.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/loop.c b/gcc/loop.c
index c0cf160..21369de 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -9561,6 +9561,8 @@ insert_loop_mem (rtx *mem, void *data ATTRIBUTE_UNUSED)
for (i = 0; i < loop_info->mems_idx; ++i)
if (rtx_equal_p (m, loop_info->mems[i].mem))
{
+ if (MEM_VOLATILE_P (m) && !MEM_VOLATILE_P (loop_info->mems[i].mem))
+ loop_info->mems[i].mem = m;
if (GET_MODE (m) != GET_MODE (loop_info->mems[i].mem))
/* The modes of the two memory accesses are different. If
this happens, something tricky is going on, and we just