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

Reply via email to