Improve jump threading dump output.
authorAldy Hernandez <aldyh@redhat.com>
Tue, 28 Sep 2021 08:19:57 +0000 (10:19 +0200)
committerAldy Hernandez <aldyh@redhat.com>
Tue, 28 Sep 2021 13:55:29 +0000 (15:55 +0200)
commit0400ca17f361dcc7f8230bb69a25de22497c73c3
treedadf3aba2e6cba61fe314f08a043ce7d735005ed
parent1f0a57bd54aed558e0167016dd980177f88f8480
Improve jump threading dump output.

In analyzing PR102511, it has become abundantly clear that we need
better debugging aids for the jump threader solver.  Currently
debugging these issues is a nightmare if you're not intimately
familiar with the code.  This patch attempts to improve this.

First, I'm enabling path solver dumps with TDF_THREADING.  None of the
available TDF_* flags are a good match, and using TDF_DETAILS would blow
up the dump file, since both threaders continually call the solver to
try out candidates.  This will allow dumping path solver details without
having to resort to hacking the source.

I am also dumping the current registered_jump_thread dbg counter used
by the registry, in the solver.  That way narrowing down a problematic
thread can then be examined by -fdump-*-threading and looking at the
solver details surrounding the appropriate counter (which the dbgcnt
also dumps to the dump file).

You still need knowledge of the solver to debug these issues, but at
least now it's not entirely opaque.

Tested on x86-64 Linux.

gcc/ChangeLog:

* dbgcnt.c (dbg_cnt_counter): New.
* dbgcnt.h (dbg_cnt_counter): New.
* dumpfile.c (dump_options): Add entry for TDF_THREADING.
* dumpfile.h (enum dump_flag): Add TDF_THREADING.
* gimple-range-path.cc (DEBUG_SOLVER): Use TDF_THREADING.
* tree-ssa-threadupdate.c (dump_jump_thread_path): Dump out
debug counter.
gcc/dbgcnt.c
gcc/dbgcnt.h
gcc/dumpfile.c
gcc/dumpfile.h
gcc/gimple-range-path.cc
gcc/tree-ssa-threadupdate.c