diff options
author | Jakub Jelinek <jakub@redhat.com> | 2013-11-26 21:54:37 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2013-11-26 21:54:37 +0100 |
commit | 9e3de74cdf7b5c6f3b762299a6492889429931c1 (patch) | |
tree | 24e0beaf45dda2fa9d828f649cefe0700c0a2ca9 /gcc/ira.c | |
parent | 5999f07fba49a339bed42319b2a304f521872931 (diff) | |
download | gcc-9e3de74cdf7b5c6f3b762299a6492889429931c1.zip gcc-9e3de74cdf7b5c6f3b762299a6492889429931c1.tar.gz gcc-9e3de74cdf7b5c6f3b762299a6492889429931c1.tar.bz2 |
re PR rtl-optimization/59166 (ICE in simplify_subreg, at simplify-rtx.c:5901 on valid code (at -O1 and above with -g enabled))
PR rtl-optimization/59166
* ira.c (find_moveable_pseudos): Use DF_REF_REAL_LOC instead of
DF_REF_LOC in validate_change call.
(split_live_ranges_for_shrink_wrap): Likewise.
* gcc.dg/torture/pr59166.c: New test.
From-SVN: r205413
Diffstat (limited to 'gcc/ira.c')
-rw-r--r-- | gcc/ira.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -4812,7 +4812,7 @@ find_moveable_pseudos (void) { rtx def_reg = DF_REF_REG (def); rtx newreg = ira_create_new_reg (def_reg); - if (validate_change (def_insn, DF_REF_LOC (def), newreg, 0)) + if (validate_change (def_insn, DF_REF_REAL_LOC (def), newreg, 0)) { unsigned nregno = REGNO (newreg); emit_insn_before (gen_move_insn (def_reg, newreg), use_insn); @@ -5034,7 +5034,7 @@ split_live_ranges_for_shrink_wrap (void) rtx newreg = NULL_RTX; df_ref use, next; - for (use = DF_REG_USE_CHAIN (REGNO(dest)); use; use = next) + for (use = DF_REG_USE_CHAIN (REGNO (dest)); use; use = next) { rtx uin = DF_REF_INSN (use); next = DF_REF_NEXT_REG (use); @@ -5045,7 +5045,7 @@ split_live_ranges_for_shrink_wrap (void) { if (!newreg) newreg = ira_create_new_reg (dest); - validate_change (uin, DF_REF_LOC (use), newreg, true); + validate_change (uin, DF_REF_REAL_LOC (use), newreg, true); } } |