aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/loop.c3
2 files changed, 6 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b66687d..f0da4a9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+1999-12-08 Bernd Schmidt <bernds@cygnus.co.uk>
+
+ * loop.c (insert_loop_mem): Don't hoist volatile mems out of loops.
+
1999-12-08 Jakub Jelinek <jakub@redhat.com>
* config/sparc/sparc.c (ultra_cmove_results_ready_p,
diff --git a/gcc/loop.c b/gcc/loop.c
index 90e6c44..96f5e66 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -9667,7 +9667,8 @@ insert_loop_mem (mem, data)
because we can't put it in a register. We still store it in the
table, though, so that if we see the same address later, but in a
non-BLK mode, we'll not think we can optimize it at that point. */
- loop_mems[loop_mems_idx].optimize = (GET_MODE (m) != BLKmode);
+ loop_mems[loop_mems_idx].optimize = (GET_MODE (m) != BLKmode
+ && ! MEM_VOLATILE_P (m));
loop_mems[loop_mems_idx].reg = NULL_RTX;
++loop_mems_idx;