diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-11-28 23:51:29 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-11-28 23:51:29 +0100 |
commit | a5a4add7aa2b78c3c7f48b173e24944439d82992 (patch) | |
tree | 0c52aec17a91d8f7886f3777f1bfef87a290e24f /gcc/postreload.c | |
parent | de6aa93370b68a9fbcf874de8a97c5d1469b7d46 (diff) | |
download | gcc-a5a4add7aa2b78c3c7f48b173e24944439d82992.zip gcc-a5a4add7aa2b78c3c7f48b173e24944439d82992.tar.gz gcc-a5a4add7aa2b78c3c7f48b173e24944439d82992.tar.bz2 |
re PR middle-end/78540 (ICE: in df_refs_verify, at df-scan.c:4062 with -O -march=core2)
PR middle-end/78540
* rtl.h (remove_reg_equal_equiv_notes): Return bool instead of void.
* rtlanal.c (remove_reg_equal_equiv_notes): Return true if any
note has been removed.
* postreload.c (reload_combine_recognize_pattern): If
remove_reg_equal_equiv_notes returns true, call df_notes_rescan.
* gcc.dg/pr78540.c: New test.
From-SVN: r242937
Diffstat (limited to 'gcc/postreload.c')
-rw-r--r-- | gcc/postreload.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/postreload.c b/gcc/postreload.c index fcb6bc4..539ad33 100644 --- a/gcc/postreload.c +++ b/gcc/postreload.c @@ -1192,10 +1192,11 @@ reload_combine_recognize_pattern (rtx_insn *insn) /* Delete the reg-reg addition. */ delete_insn (insn); - if (reg_state[regno].offset != const0_rtx) - /* Previous REG_EQUIV / REG_EQUAL notes for PREV - are now invalid. */ - remove_reg_equal_equiv_notes (prev); + if (reg_state[regno].offset != const0_rtx + /* Previous REG_EQUIV / REG_EQUAL notes for PREV + are now invalid. */ + && remove_reg_equal_equiv_notes (prev)) + df_notes_rescan (prev); reg_state[regno].use_index = RELOAD_COMBINE_MAX_USES; return true; |