diff options
author | Jakub Jelinek <jakub@redhat.com> | 2020-05-08 09:30:54 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2020-05-08 09:30:54 +0200 |
commit | af1634f1b555004753a22d1124dbb8419ee095cb (patch) | |
tree | 0248c89291a324cd6af2806c61e8c29b6b6f95ce /gcc/rtlanal.c | |
parent | 88fdafb10608c8d01048f91213d67669988d62f4 (diff) | |
download | gcc-af1634f1b555004753a22d1124dbb8419ee095cb.zip gcc-af1634f1b555004753a22d1124dbb8419ee095cb.tar.gz gcc-af1634f1b555004753a22d1124dbb8419ee095cb.tar.bz2 |
csa: Fix --enable-checking=yes,df bootstrap failure in csa [PR94961]
My recent combine-stack-adj.c change broke df checking bootstrap,
while most of the changes are done through validate_change/confirm_changes
which update df info, the removal of REG_EQUAL notes didn't update df info.
2020-05-08 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/94961
PR rtl-optimization/94516
* rtl.h (remove_reg_equal_equiv_notes): Add a bool argument defaulted
to false.
* rtlanal.c (remove_reg_equal_equiv_notes): Add no_rescan argument.
Call df_notes_rescan if that argument is not true and returning true.
* combine.c (adjust_for_new_dest): Pass true as second argument to
remove_reg_equal_equiv_notes.
* postreload.c (reload_combine_recognize_pattern): Don't call
df_notes_rescan.
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r-- | gcc/rtlanal.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index 0ebde76..9ff17ca 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -2480,10 +2480,11 @@ remove_note (rtx_insn *insn, const_rtx note) } /* Remove REG_EQUAL and/or REG_EQUIV notes if INSN has such notes. - Return true if any note has been removed. */ + If NO_RESCAN is false and any notes were removed, call + df_notes_rescan. Return true if any note has been removed. */ bool -remove_reg_equal_equiv_notes (rtx_insn *insn) +remove_reg_equal_equiv_notes (rtx_insn *insn, bool no_rescan) { rtx *loc; bool ret = false; @@ -2500,6 +2501,8 @@ remove_reg_equal_equiv_notes (rtx_insn *insn) else loc = &XEXP (*loc, 1); } + if (ret && !no_rescan) + df_notes_rescan (insn); return ret; } |