diff options
author | Jan Hubicka <jh@suse.cz> | 2004-01-12 17:32:12 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2004-01-12 16:32:12 +0000 |
commit | 432f982f5c2f65daa1d65a9af2fbfc585c88f114 (patch) | |
tree | 7bcdf745057a80c4e44eb2fff2033e874e50eea6 /gcc/loop.c | |
parent | 9a249c79b355459f3623cfbf8c0f2f6925d1a280 (diff) | |
download | gcc-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.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -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 |