On Mon, Jul 31, 2023 at 1:06 PM Andrzej Turko via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> So far genmatch has been using an unordered map to store information about
> functions to be generated. Since corresponding locations from match.pd were
> used as keys in the map, even small changes to match.pd which caused
> line number changes would change the order in which the functions are
> generated. This would reshuffle the functions between the generated .cc files.
> This way even a minimal modification to match.pd forces recompilation of all
> object files originating from match.pd on rebuild.
>
> This commit makes sure that functions are generated in the order of their
> processing (in contrast to the random order based on hashes of their
> locations in match.pd). This is done by replacing the unordered map with an
> ordered one. This way small changes to match.pd does not cause function
> renaming and reshuffling among generated source files.
> Together with the subsequent change to logging fprintf calls, this
> removes unnecessary changes to the files generated by genmatch allowing
> for reuse of already built object files during rebuild. The aim is to
> make editing of match.pd and subsequent testing easier.
>
> Signed-off-by: Andrzej Turko <andrzej.tu...@gmail.com>

OK.

Thanks,
Richard.

> gcc/ChangeLog:
>
>         * genmatch.cc: Make sinfo map ordered.
>
> Signed-off-by: Andrzej Turko <andrzej.tu...@gmail.com>
> ---
>  gcc/genmatch.cc | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/genmatch.cc b/gcc/genmatch.cc
> index 2302f2a7ff0..1deca505603 100644
> --- a/gcc/genmatch.cc
> +++ b/gcc/genmatch.cc
> @@ -29,6 +29,7 @@ along with GCC; see the file COPYING3.  If not see
>  #include "hash-table.h"
>  #include "hash-set.h"
>  #include "is-a.h"
> +#include "ordered-hash-map.h"
>
>
>  /* Stubs for GGC referenced through instantiations triggered by hash-map.  */
> @@ -1684,7 +1685,7 @@ struct sinfo_hashmap_traits : 
> simple_hashmap_traits<pointer_hash<dt_simplify>,
>    template <typename T> static inline void remove (T &) {}
>  };
>
> -typedef hash_map<void * /* unused */, sinfo *, sinfo_hashmap_traits>
> +typedef ordered_hash_map<void * /* unused */, sinfo *, sinfo_hashmap_traits>
>    sinfo_map_t;
>
>  /* Current simplifier ID we are processing during insertion into the
> --
> 2.34.1
>

Reply via email to