diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2016-08-05 21:31:31 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2016-08-05 21:31:31 +0000 |
commit | b10d44efe5bb64662a55fe74696b8c2ca2d17303 (patch) | |
tree | 711ec7aceb96e371bd7b3c1a2aeff512b0f69d87 /gcc | |
parent | 9dcd84ec7a7579bb062ef4768810a9d4dc9c3ca2 (diff) | |
download | gcc-b10d44efe5bb64662a55fe74696b8c2ca2d17303.zip gcc-b10d44efe5bb64662a55fe74696b8c2ca2d17303.tar.gz gcc-b10d44efe5bb64662a55fe74696b8c2ca2d17303.tar.bz2 |
re PR rtl-optimization/69847 (Spec 2006 403.gcc slows down with -mlra vs. reload on PowerPC)
2016-08-05 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/69847
* lra-constraints.c (process_invariant_for_inheritance): Save
pattern instead of src.
(remove_inheritance_pseudos): Use the pattern. Add assert.
From-SVN: r239180
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/lra-constraints.c | 6 |
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 40ca18c..67ec622 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-08-05 Vladimir Makarov <vmakarov@redhat.com> + + PR rtl-optimization/69847 + * lra-constraints.c (process_invariant_for_inheritance): Save + pattern instead of src. + (remove_inheritance_pseudos): Use the pattern. Add assert. + 2016-08-05 David Malcolm <dmalcolm@redhat.com> * input.c (string_concat::string_concat): New constructor. diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c index 43c05ba..880eee0 100644 --- a/gcc/lra-constraints.c +++ b/gcc/lra-constraints.c @@ -5475,7 +5475,7 @@ process_invariant_for_inheritance (rtx dst_reg, rtx invariant_rtx) cl, "invariant inheritance"); bitmap_set_bit (&lra_inheritance_pseudos, REGNO (new_reg)); bitmap_set_bit (&check_only_regs, REGNO (new_reg)); - lra_reg_info[REGNO (new_reg)].restore_rtx = invariant_rtx; + lra_reg_info[REGNO (new_reg)].restore_rtx = PATTERN (insn); start_sequence (); lra_emit_move (new_reg, dst_reg); new_insns = get_insns (); @@ -6343,9 +6343,11 @@ remove_inheritance_pseudos (bitmap remove_pseudos) start_sequence (); /* We can not just change the source. It might be an insn different from the move. */ - lra_emit_move (SET_DEST (set), lra_reg_info[sregno].restore_rtx); + emit_insn (lra_reg_info[sregno].restore_rtx); rtx_insn *new_insns = get_insns (); end_sequence (); + lra_assert (single_set (new_insns) != NULL + && SET_DEST (set) == SET_DEST (single_set (new_insns))); lra_process_new_insns (curr_insn, NULL, new_insns, "Changing reload<-invariant inheritance"); delete_move_and_clobber (curr_insn, dregno); |