aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamar Christina <tamar.christina@arm.com>2023-05-05 13:42:17 +0100
committerTamar Christina <tamar.christina@arm.com>2023-05-05 13:47:36 +0100
commit0a85544e1aaeca41133ecfc438cda913dbc0f122 (patch)
tree65ca2284f7f62c03db4f0e768461016de5870fdd
parent703417a030b3d80f55ba1402adc3f1692d3631e5 (diff)
downloadgcc-0a85544e1aaeca41133ecfc438cda913dbc0f122.zip
gcc-0a85544e1aaeca41133ecfc438cda913dbc0f122.tar.gz
gcc-0a85544e1aaeca41133ecfc438cda913dbc0f122.tar.bz2
match.pd: Use splits in makefile and make configurable.
This updates the build system to split up match.pd files into chunks of 10. This also introduces a new flag --with-matchpd-partitions which can be used to change the number of partitions. For the analysis of why 10 please look at the previous patch in the series. gcc/ChangeLog: PR bootstrap/84402 * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ, GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O, GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New. (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them. (s-match): Split into s-generic-match and s-gimple-match. * configure.ac (with-matchpd-partitions, DEFAULT_MATCHPD_PARTITIONS): New. * configure: Regenerate.
-rw-r--r--gcc/Makefile.in67
-rwxr-xr-xgcc/configure29
-rw-r--r--gcc/configure.ac15
3 files changed, 89 insertions, 22 deletions
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 4d5ae59..7e7ac07 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -214,6 +214,14 @@ rtl-ssa-warn = $(STRICT_WARN)
GCC_WARN_CFLAGS = $(LOOSE_WARN) $(C_LOOSE_WARN) $($(@D)-warn) $(if $(filter-out $(STRICT_WARN),$($(@D)-warn)),,$(C_STRICT_WARN)) $(NOCOMMON_FLAG) $($@-warn)
GCC_WARN_CXXFLAGS = $(LOOSE_WARN) $($(@D)-warn) $(NOCOMMON_FLAG) $($@-warn)
+# The number of splits to be made for the match.pd files.
+NUM_MATCH_SPLITS = @DEFAULT_MATCHPD_PARTITIONS@
+MATCH_SPLITS_SEQ = $(shell seq 1 $(NUM_MATCH_SPLITS))
+GIMPLE_MATCH_PD_SEQ_SRC = $(patsubst %, gimple-match-%.cc, $(MATCH_SPLITS_SEQ))
+GIMPLE_MATCH_PD_SEQ_O = $(patsubst %, gimple-match-%.o, $(MATCH_SPLITS_SEQ))
+GENERIC_MATCH_PD_SEQ_SRC = $(patsubst %, generic-match-%.cc, $(MATCH_SPLITS_SEQ))
+GENERIC_MATCH_PD_SEQ_O = $(patsubst %, generic-match-%.o, $(MATCH_SPLITS_SEQ))
+
# These files are to have specific diagnostics suppressed, or are not to
# be subject to -Werror:
# flex output may yield harmless "no previous prototype" warnings
@@ -222,9 +230,8 @@ gengtype-lex.o-warn = -Wno-error
libgcov-util.o-warn = -Wno-error
libgcov-driver-tool.o-warn = -Wno-error
libgcov-merge-tool.o-warn = -Wno-error
-gimple-match.o-warn = -Wno-unused
+gimple-match-head.o-warn = -Wno-unused
gimple-match-exports.o-warn = -Wno-unused
-generic-match.o-warn = -Wno-unused
dfp.o-warn = -Wno-strict-aliasing
# All warnings have to be shut off in stage1 if the compiler used then
@@ -1312,9 +1319,9 @@ ANALYZER_OBJS = \
# will build them sooner, because they are large and otherwise tend to be
# the last objects to finish building.
OBJS = \
- gimple-match.o \
+ $(GIMPLE_MATCH_PD_SEQ_O) \
gimple-match-exports.o \
- generic-match.o \
+ $(GENERIC_MATCH_PD_SEQ_O) \
insn-attrtab.o \
insn-automata.o \
insn-dfatab.o \
@@ -1807,7 +1814,8 @@ MOSTLYCLEANFILES = insn-flags.h insn-config.h insn-codes.h \
insn-output.cc insn-recog.cc insn-emit.cc insn-extract.cc insn-peep.cc \
insn-attr.h insn-attr-common.h insn-attrtab.cc insn-dfatab.cc \
insn-latencytab.cc insn-opinit.cc insn-opinit.h insn-preds.cc insn-constants.h \
- tm-preds.h tm-constrs.h checksum-options gimple-match.cc generic-match.cc \
+ tm-preds.h tm-constrs.h checksum-options $(GIMPLE_MATCH_PD_SEQ_SRC) \
+ $(GENERIC_MATCH_PD_SEQ_SRC) gimple-match-auto.h generic-match-auto.h \
tree-check.h min-insn-modes.cc insn-modes.cc insn-modes.h insn-modes-inline.h \
genrtl.h gt-*.h gtype-*.h gtype-desc.cc gtyp-input.list \
case-cfn-macros.h cfn-operators.pd \
@@ -2422,7 +2430,8 @@ $(common_out_object_file): $(common_out_file)
.PRECIOUS: insn-config.h insn-flags.h insn-codes.h insn-constants.h \
insn-emit.cc insn-recog.cc insn-extract.cc insn-output.cc insn-peep.cc \
insn-attr.h insn-attr-common.h insn-attrtab.cc insn-dfatab.cc \
- insn-latencytab.cc insn-preds.cc gimple-match.cc generic-match.cc \
+ insn-latencytab.cc insn-preds.cc $(GIMPLE_MATCH_PD_SEQ_SRC) \
+ $(GENERIC_MATCH_PD_SEQ_SRC) gimple-match-auto.h generic-match-auto.h \
insn-target-def.h
# Dependencies for the md file. The first time through, we just assume
@@ -2665,19 +2674,36 @@ s-tm-texi: build/genhooks$(build_exeext) $(srcdir)/doc/tm.texi.in
false; \
fi
-gimple-match.cc: s-match gimple-match-head.cc gimple-match-exports.cc ; @true
-generic-match.cc: s-match generic-match-head.cc ; @true
-
-s-match: build/genmatch$(build_exeext) $(srcdir)/match.pd cfn-operators.pd
- $(RUN_GEN) build/genmatch$(build_exeext) --gimple $(srcdir)/match.pd \
- > tmp-gimple-match.cc
- $(RUN_GEN) build/genmatch$(build_exeext) --generic $(srcdir)/match.pd \
- > tmp-generic-match.cc
- $(SHELL) $(srcdir)/../move-if-change tmp-gimple-match.cc \
- gimple-match.cc
- $(SHELL) $(srcdir)/../move-if-change tmp-generic-match.cc \
- generic-match.cc
- $(STAMP) s-match
+$(GIMPLE_MATCH_PD_SEQ_SRC): s-gimple-match gimple-match-head.cc \
+ gimple-match-exports.cc; @true
+gimple-match-auto.h: s-gimple-match gimple-match-head.cc \
+ gimple-match-exports.cc; @true
+$(GENERIC_MATCH_PD_SEQ_SRC): s-generic-match generic-match-head.cc; @true
+generic-match-auto.h: s-generic-match generic-match-head.cc; @true
+
+s-gimple-match: build/genmatch$(build_exeext) \
+ $(srcdir)/match.pd cfn-operators.pd
+ $(RUN_GEN) build/genmatch$(build_exeext) --gimple \
+ --header=tmp-gimple-match-auto.h --include=gimple-match-auto.h \
+ $(srcdir)/match.pd $(patsubst %, tmp-%, $(GIMPLE_MATCH_PD_SEQ_SRC))
+ $(foreach id, $(MATCH_SPLITS_SEQ), \
+ $(SHELL) $(srcdir)/../move-if-change tmp-gimple-match-$(id).cc \
+ gimple-match-$(id).cc;)
+ $(SHELL) $(srcdir)/../move-if-change tmp-gimple-match-auto.h \
+ gimple-match-auto.h
+ $(STAMP) s-gimple-match
+
+s-generic-match: build/genmatch$(build_exeext) \
+ $(srcdir)/match.pd cfn-operators.pd
+ $(RUN_GEN) build/genmatch$(build_exeext) --generic \
+ --header=tmp-generic-match-auto.h --include=generic-match-auto.h \
+ $(srcdir)/match.pd $(patsubst %, tmp-%, $(GENERIC_MATCH_PD_SEQ_SRC))
+ $(foreach id, $(MATCH_SPLITS_SEQ), \
+ $(SHELL) $(srcdir)/../move-if-change tmp-generic-match-$(id).cc \
+ generic-match-$(id).cc;)
+ $(SHELL) $(srcdir)/../move-if-change tmp-generic-match-auto.h \
+ generic-match-auto.h
+ $(STAMP) s-generic-match
GTFILES = $(CPPLIB_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
$(host_xm_file_list) \
@@ -2812,7 +2838,8 @@ generated_files = config.h tm.h $(TM_P_H) $(TM_D_H) $(TM_H) multilib.h \
$(ALL_GTFILES_H) gtype-desc.cc gtype-desc.h version.h \
options.h target-hooks-def.h insn-opinit.h \
common/common-target-hooks-def.h pass-instances.def \
- gimple-match.cc generic-match.cc \
+ $(GIMPLE_MATCH_PD_SEQ_SRC) $(GENERIC_MATCH_PD_SEQ_SRC) \
+ gimple-match-auto.h generic-match-auto.h \
c-family/c-target-hooks-def.h d/d-target-hooks-def.h \
case-cfn-macros.h \
cfn-operators.pd omp-device-properties.h
diff --git a/gcc/configure b/gcc/configure
index cdc7358..191f685 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -838,6 +838,7 @@ enable_gcov
enable_shared
enable_fixed_point
enable_decimal_float
+DEFAULT_MATCHPD_PARTITIONS
with_float
with_cpu
enable_multiarch
@@ -965,6 +966,7 @@ enable_valgrind_annotations
enable_multilib
enable_multiarch
with_stack_clash_protection_guard_size
+with_matchpd_partitions
enable___cxa_atexit
enable_decimal_float
enable_fixed_point
@@ -1826,6 +1828,9 @@ Optional Packages:
--with-stack-clash-protection-guard-size=size
Set the default stack clash protection guard size
for specific targets as a power of two in bytes.
+ --with-matchpd-partitions=num
+ Set the number of partitions to make for gimple and
+ generic when splitting match.pd. [default=10]
--with-dwarf2 force the default debug format to be DWARF 2 (or
later)
--with-specs=SPECS add SPECS to driver command-line processing
@@ -7889,6 +7894,26 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
+# Specify the number of splits of match.pd to generate.
+
+# Check whether --with-matchpd-partitions was given.
+if test "${with_matchpd_partitions+set}" = set; then :
+ withval=$with_matchpd_partitions; DEFAULT_MATCHPD_PARTITIONS="$with_matchpd_partitions"
+else
+ DEFAULT_MATCHPD_PARTITIONS=10
+fi
+
+if (test $DEFAULT_MATCHPD_PARTITIONS -lt 1); then
+ as_fn_error $? "Invalid value $DEFAULT_MATCHPD_PARTITIONS for --with-matchpd-partitions. Cannot be negative." "$LINENO" 5
+fi
+
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_MATCHPD_PARTITIONS $DEFAULT_MATCHPD_PARTITIONS
+_ACEOF
+
+
+
# Enable __cxa_atexit for C++.
# Check whether --enable-__cxa_atexit was given.
if test "${enable___cxa_atexit+set}" = set; then :
@@ -19825,7 +19850,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 19828 "configure"
+#line 19853 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -19931,7 +19956,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 19934 "configure"
+#line 19959 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 73ff7c2..0754246 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -921,6 +921,21 @@ fi
AC_DEFINE_UNQUOTED(DEFAULT_STK_CLASH_GUARD_SIZE, $DEFAULT_STK_CLASH_GUARD_SIZE,
[Define to larger than zero set the default stack clash protector size.])
+# Specify the number of splits of match.pd to generate.
+AC_ARG_WITH(matchpd-partitions,
+[AS_HELP_STRING([--with-matchpd-partitions=num],
+[Set the number of partitions to make for gimple and generic when splitting match.pd. [default=10]])],
+[DEFAULT_MATCHPD_PARTITIONS="$with_matchpd_partitions"], [DEFAULT_MATCHPD_PARTITIONS=10])
+if (test $DEFAULT_MATCHPD_PARTITIONS -lt 1); then
+ AC_MSG_ERROR(m4_normalize([
+ Invalid value $DEFAULT_MATCHPD_PARTITIONS for --with-matchpd-partitions. \
+ Cannot be negative.]))
+fi
+
+AC_DEFINE_UNQUOTED(DEFAULT_MATCHPD_PARTITIONS, $DEFAULT_MATCHPD_PARTITIONS,
+ [Define to larger than one set the number of match.pd partitions to make.])
+AC_SUBST(DEFAULT_MATCHPD_PARTITIONS)
+
# Enable __cxa_atexit for C++.
AC_ARG_ENABLE(__cxa_atexit,
[AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],