Compared to v1 and v2 this is a complete patch series. The debugging/dumping improvements gently touch IRA, RTL lists, and sel-sched bits to avoid re-inventing or copy-pasting the wheel.
Bootstrapping and regtesting these patches on aarch64-linux-gnu. OK to merge? Thanks! === This patch series fixes exponential behavior in scheduler's find_modifiable_mems(). This fixes PRs [1] and [2], which are compilation time and memory hogs. The first patch in the series is the actual fix (bootstrapped and regtested on aarch64-linux-gnu), and follow up patches are improvements to scheduler's logging infrastructure, that enabled me to debug this problem. As-is, the scheduler has good logging of the actual scheduling process, but calculation of instruction dependencies has almost no logging. [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96388 [2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111554 Maxim Kuvyrkov (8): sched-deps.cc (find_modifiable_mems): Avoid exponential behavior Unify implementations of print_hard_reg_set() Simplify handling of INSN_ and EXPR_LISTs in sched-rgn.cc Improve and fix sched-deps.cc: dump_dep() and dump_lists(). Add a bit more logging scheduler's dependency analysis sched_deps.cc: Simplify initialization of dependency contexts Improve logging of register data in scheduler dependency analysis Improve logging of scheduler dependency analysis context gcc/hard-reg-set.h | 3 + gcc/ira-color.cc | 17 +- gcc/ira-conflicts.cc | 39 +---- gcc/lists.cc | 30 +++- gcc/rtl.h | 4 +- gcc/sched-deps.cc | 399 +++++++++++++++++++++++++++++++++++++++--- gcc/sched-int.h | 9 +- gcc/sched-rgn.cc | 56 +++--- gcc/sel-sched-dump.cc | 21 +-- gcc/sel-sched-dump.h | 2 +- 10 files changed, 467 insertions(+), 113 deletions(-) -- 2.34.1