On Mon, Aug 7, 2023 at 12:04 PM Andrzej Turko <andrzej.tu...@gmail.com> wrote:
>
> The following reduces the number of object files that need to be rebuilt
> after match.pd has been modified. Right now a change to match.pd which
> adds/removes a line almost always forces recompilation of all files that
> genmatch generates from it. This is because of unnecessary changes to
> the generated .cc files:
>
> 1. Function names and ordering change as does the way the functions are
>         distributed across multiple source files.
> 2. Code locations from match.pd are quoted directly (including line
>         numbers) by logging fprintf calls.
>
> This patch addresses the those issues without changing the behaviour
> of the generated code. The first one is solved by making sure that minor
> changes to match.pd do not influence the order in which functions are
> generated. The second one by using a lookup table with line numbers.
>
> Now a change to a single function will trigger a rebuild of 4 object
> files (one with the function  and the one with the lookup table both for
> gimple and generic) instead all of them (20 by default).
> For reference, this decreased the rebuild time with 48 threads from 3.5
> minutes to 1.5 minutes on my machine.
>
> V2:
>         * Placed the change in Makefile.in in the correct commit.
>         * Used a separate logging function to reduce size of the
>         executable.
>
> V3:
>         * Fix a bug from 'genmatch: Log line numbers indirectly',
>         which was introduced in V2.
>
> V4:
>         * Remove duplicate line numbers in the lookup table.
>         * Do not define dump_log functions if they are not called.

Thanks - I'll push this version after double-checking bootstrap.

Richard.

>
> Note for reviewers: I do not have write access.
>
> Andrzej Turko (3):
>   Support get_or_insert in ordered_hash_map
>   genmatch: Reduce variability of generated code
>   genmatch: Log line numbers indirectly
>
>  gcc/Makefile.in               |  4 +-
>  gcc/genmatch.cc               | 98 +++++++++++++++++++++++++++++------
>  gcc/ordered-hash-map-tests.cc | 19 +++++--
>  gcc/ordered-hash-map.h        | 26 ++++++++++
>  4 files changed, 125 insertions(+), 22 deletions(-)
>
> --
> 2.34.1
>

Reply via email to