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 >