Message ID | 4CA86A32.9010603@codesourcery.com |
---|---|
State | New |
Headers | show |
On Sun, Oct 3, 2010 at 4:34 AM, Bernd Schmidt <bernds@codesourcery.com> wrote: > On 10/02/2010 03:07 PM, H.J. Lu wrote: >> On Wed, Aug 4, 2010 at 6:35 AM, Bernd Schmidt <bernds@codesourcery.com> wrote: >>> On 08/03/2010 07:12 PM, Jeff Law wrote: >>>> OK. WRT the comment, we might want to just say that BB_MODIFIED is set >>>> at the same time as a block is marked dirty, but is not cleared during a >>>> df_analyze allowing a pass to update the DF information and still know >>>> what blocks were modified. >>> >>> New patch below. >>> >> >> This caused: >> >> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45865 > > This should fix it, refusing to move NOTE_EPILOGUE_BEGIN and anything > beyond it. > > Bootstrapped and tested on i686-linux, ok? > Can you include a testcase? Thanks.
On Sun, Oct 3, 2010 at 4:34 AM, Bernd Schmidt <bernds@codesourcery.com> wrote: > On 10/02/2010 03:07 PM, H.J. Lu wrote: >> On Wed, Aug 4, 2010 at 6:35 AM, Bernd Schmidt <bernds@codesourcery.com> wrote: >>> On 08/03/2010 07:12 PM, Jeff Law wrote: >>>> OK. WRT the comment, we might want to just say that BB_MODIFIED is set >>>> at the same time as a block is marked dirty, but is not cleared during a >>>> df_analyze allowing a pass to update the DF information and still know >>>> what blocks were modified. >>> >>> New patch below. >>> >> >> This caused: >> >> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45865 > > This should fix it, refusing to move NOTE_EPILOGUE_BEGIN and anything > beyond it. > > Bootstrapped and tested on i686-linux, ok? > It still failed this testcase.
Index: df-problems.c =================================================================== --- df-problems.c (revision 164552) +++ df-problems.c (working copy) @@ -3915,6 +3915,8 @@ can_move_insns_across (rtx from, rtx to, { if (CALL_P (insn)) break; + if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_EPILOGUE_BEG) + break; if (NONDEBUG_INSN_P (insn)) { if (may_trap_p (PATTERN (insn))