aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrzej Turko <andrzej.turko@gmail.com>2023-08-07 11:59:00 +0200
committerRichard Biener <rguenther@suse.de>2023-08-08 15:30:45 +0200
commite6b616c076d4500266d0b2ca185f07a616d552fe (patch)
treefe3ca10d8b7116a89e7efe701424f6b80e7dda2b /gcc
parent3bb0bf067b28547c75ad6f96dfe2cb91c75f1a8e (diff)
downloadgcc-e6b616c076d4500266d0b2ca185f07a616d552fe.zip
gcc-e6b616c076d4500266d0b2ca185f07a616d552fe.tar.gz
gcc-e6b616c076d4500266d0b2ca185f07a616d552fe.tar.bz2
genmatch: Reduce variability of generated code
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.turko@gmail.com> gcc/ChangeLog: * genmatch.cc: Make sinfo map ordered. * Makefile.in: Require the ordered map header for genmatch.o.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/Makefile.in4
-rw-r--r--gcc/genmatch.cc3
2 files changed, 4 insertions, 3 deletions
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index e99628c..2429128 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -3004,8 +3004,8 @@ build/genhooks.o : genhooks.cc $(TARGET_DEF) $(C_TARGET_DEF) \
$(COMMON_TARGET_DEF) $(D_TARGET_DEF) $(BCONFIG_H) $(SYSTEM_H) errors.h
build/genmddump.o : genmddump.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \
$(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H)
-build/genmatch.o : genmatch.cc $(BCONFIG_H) $(SYSTEM_H) \
- $(CORETYPES_H) errors.h $(HASH_TABLE_H) hash-map.h $(GGC_H) is-a.h \
+build/genmatch.o : genmatch.cc $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) \
+ errors.h $(HASH_TABLE_H) hash-map.h $(GGC_H) is-a.h ordered-hash-map.h \
tree.def builtins.def internal-fn.def case-cfn-macros.h $(CPPLIB_H)
build/gencfn-macros.o : gencfn-macros.cc $(BCONFIG_H) $(SYSTEM_H) \
$(CORETYPES_H) errors.h $(HASH_TABLE_H) hash-set.h builtins.def \
diff --git a/gcc/genmatch.cc b/gcc/genmatch.cc
index 2302f2a..1deca50 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