On 11/28/2016 12:35 PM, Jakub Jelinek wrote:
Hi!
On the following case we ICE in DF checking, because
reload_combine_recognize_pattern starts with apply_change_group
that in the end on success calls df_insn_rescan, but if it is successful,
we then remove_reg_equal_equiv_notes and nothing rescans the notes.
Fixed by rescanning just the notes if anything changed.
remove_reg_equal_equiv_notes is right now only used in postreload
(this spot) and in the combiner (where we df_insn_rescan shortly afterwards,
thus we are fine with remove_reg_equal_equiv_notes itself not rescanning
anything).
Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
2016-11-28 Jakub Jelinek <ja...@redhat.com>
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.
OK.
jeff