summaryrefslogtreecommitdiff
path: root/gcc/ira-emit.c
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2008-09-12 22:55:23 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2008-09-12 22:55:23 +0000
commit82b336287a89bc41f0e88b7a067686174219b11d (patch)
tree1509936ba3ec5d5f89573c2cd6bccac4844793e1 /gcc/ira-emit.c
parent6ff5d1e44709af28c0b4982c914f1a5e3fa5a0f2 (diff)
downloadgcc-82b336287a89bc41f0e88b7a067686174219b11d.tar.gz
re PR rtl-optimization/37377 (Bootstrap failure compiling libgcc)
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. From-SVN: r140325
Diffstat (limited to 'gcc/ira-emit.c')
-rw-r--r--gcc/ira-emit.c8
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))