On Tue, 2020-03-10 at 19:39 +0300, Roman Zhuykov wrote: > Hi! > > Current modulo-sched implementation is a bit faulty from -fcompile-debug > perspective. > > I found that few years ago, the most simple example is pr42631.c which fails > (with just -fmodulo-sched or together with -fmodulo-sched-allow-regmoves) on > powerpc64le with at least any gcc-4.9 or newer compiler. > I've investigated that difference about 3 years ago, it is mostly technical, > dumps shows there are some "flying" NOTE_INSN_DELETED items. > I understood that it is minor, and I planned to commit the fix only when my > other modulo-sched stuff will be ready. > > But right now I see that when I enable -fmodulo-sched by default, powerpc64le > bootstrap give comparison failure as of r10-7056. > > Comparing stages 2 and 3 > Bootstrap comparison failure! > gcc/ggc-page.o differs > > That doesn't happen on released branches, so it is a kind of "regression" > (certainly, nobody runs bootstrap with -fmodulo-sched). > > Is that a good reason to commit the patch right now in stage4? > > Patch was successfully regstrapped (based on r10-7056) using x86_64 and > powerpc64le, both with default options and with -fmodulo-sched enabled. > > Roman > > -- > modulo-sched: fix compare-debug issues > > This patch fixes bootstrap comparison failure on powerpc64le when running it > with -fmodulo-sched enabled. > > When applying the schedule we have to move debug insns in the same > way as we move note insns. Also we have to discard adding debug insns > to SCCs in DDG graph. > > 20YY-MM-DD Roman Zhuykov <zhr...@ispras.ru> > > * ddg.c (create_ddg_dep_from_intra_loop_link): Adjust assertions. > (create_ddg_dep_no_link): Likewise. > (add_inter_loop_mem_dep): Do not create "debug --> non-debug" anti-deps. > (create_ddg): Adjust first_note field filling. > (check_sccs): Assert if any debug instruction is in SCC. > * modulo-sched.c (ps_first_note): Add an assertion if first_note > is empty. > > testsuite: > > 20YY-MM-DD Roman Zhuykov <zhr...@ispras.ru> > > * gcc.dg/pr42631-sms1.c: New test. > * gcc.dg/pr42631-sms2.c: New test. Even though we don't have a BZ, I think a bootstrap failure, even one with modulo-scheduling enabled is severe enough that we should try to fix it.
OK for the trunk. jeff >