aboutsummaryrefslogtreecommitdiff
path: root/gcc/postreload.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-11-28 23:51:29 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2016-11-28 23:51:29 +0100
commita5a4add7aa2b78c3c7f48b173e24944439d82992 (patch)
tree0c52aec17a91d8f7886f3777f1bfef87a290e24f /gcc/postreload.c
parentde6aa93370b68a9fbcf874de8a97c5d1469b7d46 (diff)
downloadgcc-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.c9
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;