aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-im.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2013-03-21 12:35:03 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2013-03-21 12:35:03 +0000
commitcad1735b5d0f73d94c5d6ca79d0579dee4594d40 (patch)
tree9b8b4730e71ad2fe9cf809fea5df98529d664591 /gcc/tree-ssa-loop-im.c
parent141310ef523541959e048fe49e0b996374107b3b (diff)
downloadgcc-cad1735b5d0f73d94c5d6ca79d0579dee4594d40.zip
gcc-cad1735b5d0f73d94c5d6ca79d0579dee4594d40.tar.gz
gcc-cad1735b5d0f73d94c5d6ca79d0579dee4594d40.tar.bz2
tree-ssa-loop-im.c (can_sm_ref_p): Do not test whether ref is stored in the loop.
2013-03-21 Richard Biener <rguenther@suse.de> * tree-ssa-loop-im.c (can_sm_ref_p): Do not test whether ref is stored in the loop. (find_refs_for_sm): Walk only over all stores. (store_motion_loop): Allocate from lim_bitmap_obstack. (store_motion): Likewise. From-SVN: r196870
Diffstat (limited to 'gcc/tree-ssa-loop-im.c')
-rw-r--r--gcc/tree-ssa-loop-im.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c
index 9dc4045..2557542 100644
--- a/gcc/tree-ssa-loop-im.c
+++ b/gcc/tree-ssa-loop-im.c
@@ -2378,10 +2378,6 @@ can_sm_ref_p (struct loop *loop, mem_ref_p ref)
if (!MEM_ANALYZABLE (ref))
return false;
- /* Unless the reference is stored in the loop, there is nothing to do. */
- if (!bitmap_bit_p (ref->stored, loop->num))
- return false;
-
/* It should be movable. */
if (!is_gimple_reg_type (TREE_TYPE (ref->mem.ref))
|| TREE_THIS_VOLATILE (ref->mem.ref)
@@ -2417,7 +2413,7 @@ can_sm_ref_p (struct loop *loop, mem_ref_p ref)
static void
find_refs_for_sm (struct loop *loop, bitmap sm_executed, bitmap refs_to_sm)
{
- bitmap refs = memory_accesses.all_refs_in_loop[loop->num];
+ bitmap refs = memory_accesses.all_refs_stored_in_loop[loop->num];
unsigned i;
bitmap_iterator bi;
mem_ref_p ref;
@@ -2457,7 +2453,7 @@ store_motion_loop (struct loop *loop, bitmap sm_executed)
{
vec<edge> exits = get_loop_exit_edges (loop);
struct loop *subloop;
- bitmap sm_in_loop = BITMAP_ALLOC (NULL);
+ bitmap sm_in_loop = BITMAP_ALLOC (&lim_bitmap_obstack);
if (loop_suitable_for_sm (loop, exits))
{
@@ -2480,7 +2476,7 @@ static void
store_motion (void)
{
struct loop *loop;
- bitmap sm_executed = BITMAP_ALLOC (NULL);
+ bitmap sm_executed = BITMAP_ALLOC (&lim_bitmap_obstack);
for (loop = current_loops->tree_root->inner; loop != NULL; loop = loop->next)
store_motion_loop (loop, sm_executed);