diff options
author | Richard Biener <rguenther@suse.de> | 2013-03-21 12:35:03 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-03-21 12:35:03 +0000 |
commit | cad1735b5d0f73d94c5d6ca79d0579dee4594d40 (patch) | |
tree | 9b8b4730e71ad2fe9cf809fea5df98529d664591 /gcc/tree-ssa-loop-im.c | |
parent | 141310ef523541959e048fe49e0b996374107b3b (diff) | |
download | gcc-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.c | 10 |
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); |