diff options
author | vmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-09-12 22:55:23 +0000 |
---|---|---|
committer | vmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-09-12 22:55:23 +0000 |
commit | 76b340dbd7165cfaaa427c88c58e61197134e144 (patch) | |
tree | 1509936ba3ec5d5f89573c2cd6bccac4844793e1 /gcc/ira-emit.c | |
parent | 26b84749b164d326329431d96fcf33e9e8f7d97e (diff) | |
download | gcc-76b340dbd7165cfaaa427c88c58e61197134e144.tar.gz |
2008-09-12 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-opt/37377
* ira-build.c (common_loop_tree_node_dominator): Remove.
(copy_live_ranges_to_removed_store_destinations): New function.
(regno_top_level_allocno_map): Move to top level from ...
(ira_flattening): ... here. Use
copy_live_ranges_to_removed_store_destinations.
* ira-emit.c (generate_edge_moves): Fix a comment.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@140325 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ira-emit.c')
-rw-r--r-- | gcc/ira-emit.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/ira-emit.c b/gcc/ira-emit.c index 11199237d48..7fdaefb52e5 100644 --- a/gcc/ira-emit.c +++ b/gcc/ira-emit.c @@ -311,9 +311,11 @@ generate_edge_moves (edge e) if (REGNO (ALLOCNO_REG (src_allocno)) == REGNO (ALLOCNO_REG (dest_allocno))) continue; - /* Actually it is not a optimization we need this code because - the memory (remember about equivalent memory) might be ROM - (or placed in read only section). */ + /* Remove unnecessary stores at the region exit. We should do + this for readonly memory for sure and this is guaranteed by + that we never generate moves on region borders (see + checking ira_reg_equiv_invariant_p in function + change_loop). */ if (ALLOCNO_HARD_REGNO (dest_allocno) < 0 && ALLOCNO_HARD_REGNO (src_allocno) >= 0 && not_modified_p (src_allocno, dest_allocno)) |