Ping …. ….
Jojo 在 2020年10月24日 +0800 PM2:02,Jojo R <jiejie_r...@c-sky.com>,写道: > Hi, > > Has this patch been merged ? > > I track this some weeks and the patch has reviewed still on the way ... > > Could someone help me ? > > Thanks so much. > > Jojo > 在 2020年10月8日 +0800 AM10:01,Jojo R <jiejie_r...@c-sky.com>,写道: > > Ping …... > > > > Jojo > > 在 2020年9月27日 +0800 AM10:34,Jojo R <jiejie_r...@c-sky.com>,写道: > > > Hi, > > > > > > Has this patch been merged ? > > > > > > Jojo > > > 在 2020年9月15日 +0800 PM5:16,Jojo R <jiejie_r...@c-sky.com>,写道: > > > > gcc/ChangeLog: > > > > > > > > * genemit.c (main): Print 'split line'. > > > > * Makefile.in (insn-emit.c): Define split count and file > > > > > > > > --- > > > > gcc/Makefile.in | 19 +++++++++ > > > > gcc/genemit.c | 104 +++++++++++++++++++++++++++++------------------- > > > > 2 files changed, 83 insertions(+), 40 deletions(-) > > > > > > > > diff --git a/gcc/Makefile.in b/gcc/Makefile.in > > > > index 79e854aa938..a7fcc7d5949 100644 > > > > --- a/gcc/Makefile.in > > > > +++ b/gcc/Makefile.in > > > > @@ -1258,6 +1258,21 @@ ANALYZER_OBJS = \ > > > > # We put the *-match.o and insn-*.o files first so that a parallel make > > > > # will build them sooner, because they are large and otherwise tend to > > > > be > > > > # the last objects to finish building. > > > > + > > > > +# target overrides > > > > +-include $(tmake_file) > > > > + > > > > +INSN-GENERATED-SPLIT-NUM ?= 0 > > > > + > > > > +insn-generated-split-num = $(shell i=1; j=`expr > > > > $(INSN-GENERATED-SPLIT-NUM) + 1`; \ > > > > + while test $$i -le $$j; do \ > > > > + echo $$i; i=`expr $$i + 1`; \ > > > > + done) > > > > + > > > > +insn-emit-split-c := $(foreach o, $(shell for i in > > > > $(insn-generated-split-num); do echo $$i; done), insn-emit$(o).c) > > > > +insn-emit-split-obj = $(patsubst %.c,%.o, $(insn-emit-split-c)) > > > > +$(insn-emit-split-c): insn-emit.c > > > > + > > > > OBJS = \ > > > > gimple-match.o \ > > > > generic-match.o \ > > > > @@ -1265,6 +1280,7 @@ OBJS = \ > > > > insn-automata.o \ > > > > insn-dfatab.o \ > > > > insn-emit.o \ > > > > + $(insn-emit-split-obj) \ > > > > insn-extract.o \ > > > > insn-latencytab.o \ > > > > insn-modes.o \ > > > > @@ -2365,6 +2381,9 @@ $(simple_generated_c:insn-%.c=s-%): s-%: > > > > build/gen%$(build_exeext) > > > > $(RUN_GEN) build/gen$*$(build_exeext) $(md_file) \ > > > > $(filter insn-conditions.md,$^) > tmp-$*.c > > > > $(SHELL) $(srcdir)/../move-if-change tmp-$*.c insn-$*.c > > > > + $*v=$$(echo $$(csplit insn-$*.c /parallel\ compilation/ -k -s > > > > {$(INSN-GENERATED-SPLIT-NUM)} -f insn-$* -b "%d.c" 2>&1));\ > > > > + [ ! "$$$*v" ] || grep "match not found" <<< $$$*v > > > > + [ -s insn-$*0.c ] || (for i in $(insn-generated-split-num); do touch > > > > insn-$*$$i.c; done && echo "" > insn-$*.c) > > > > $(STAMP) s-$* > > > > > > > > # gencheck doesn't read the machine description, and the file produced > > > > diff --git a/gcc/genemit.c b/gcc/genemit.c > > > > index 84d07d388ee..54a0d909d9d 100644 > > > > --- a/gcc/genemit.c > > > > +++ b/gcc/genemit.c > > > > @@ -847,24 +847,13 @@ handle_overloaded_gen (overloaded_name *oname) > > > > } > > > > } > > > > > > > > -int > > > > -main (int argc, const char **argv) > > > > -{ > > > > - progname = "genemit"; > > > > - > > > > - if (!init_rtx_reader_args (argc, argv)) > > > > - return (FATAL_EXIT_CODE); > > > > - > > > > -#define DEF_INTERNAL_OPTAB_FN(NAME, FLAGS, OPTAB, TYPE) \ > > > > - nofail_optabs[OPTAB##_optab] = true; > > > > -#include "internal-fn.def" > > > > - > > > > - /* Assign sequential codes to all entries in the machine description > > > > - in parallel with the tables in insn-output.c. */ > > > > - > > > > - printf ("/* Generated automatically by the program `genemit'\n\ > > > > -from the machine description file `md'. */\n\n"); > > > > +/* Print include header. */ > > > > > > > > +static void > > > > +printf_include (void) > > > > +{ > > > > + printf ("/* Generated automatically by the program `genemit'\n" > > > > + "from the machine description file `md'. */\n\n"); > > > > printf ("#define IN_TARGET_CODE 1\n"); > > > > printf ("#include \"config.h\"\n"); > > > > printf ("#include \"system.h\"\n"); > > > > @@ -900,35 +889,70 @@ from the machine description file `md'. */\n\n"); > > > > printf ("#include \"tm-constrs.h\"\n"); > > > > printf ("#include \"ggc.h\"\n"); > > > > printf ("#include \"target.h\"\n\n"); > > > > +} > > > > > > > > - /* Read the machine description. */ > > > > +/* Generate the `gen_...' function from GET_CODE(). */ > > > > > > > > - md_rtx_info info; > > > > - while (read_md_rtx (&info)) > > > > - switch (GET_CODE (info.def)) > > > > - { > > > > - case DEFINE_INSN: > > > > - gen_insn (&info); > > > > - break; > > > > +static void > > > > +gen_md_rtx (md_rtx_info *info) > > > > +{ > > > > + switch (GET_CODE (info->def)) > > > > + { > > > > + case DEFINE_INSN: > > > > + gen_insn (info); > > > > + break; > > > > > > > > - case DEFINE_EXPAND: > > > > - printf ("/* %s:%d */\n", info.loc.filename, info.loc.lineno); > > > > - gen_expand (&info); > > > > - break; > > > > + case DEFINE_EXPAND: > > > > + printf ("/* %s:%d */\n", info->loc.filename, info->loc.lineno); > > > > + gen_expand (info); > > > > + break; > > > > > > > > - case DEFINE_SPLIT: > > > > - printf ("/* %s:%d */\n", info.loc.filename, info.loc.lineno); > > > > - gen_split (&info); > > > > - break; > > > > + case DEFINE_SPLIT: > > > > + printf ("/* %s:%d */\n", info->loc.filename, info->loc.lineno); > > > > + gen_split (info); > > > > + break; > > > > > > > > - case DEFINE_PEEPHOLE2: > > > > - printf ("/* %s:%d */\n", info.loc.filename, info.loc.lineno); > > > > - gen_split (&info); > > > > - break; > > > > + case DEFINE_PEEPHOLE2: > > > > + printf ("/* %s:%d */\n", info->loc.filename, info->loc.lineno); > > > > + gen_split (info); > > > > + break; > > > > > > > > - default: > > > > - break; > > > > - } > > > > + default: > > > > + break; > > > > + } > > > > +} > > > > + > > > > +int > > > > +main (int argc, const char **argv) > > > > +{ > > > > + progname = "genemit"; > > > > + > > > > + if (!init_rtx_reader_args (argc, argv)) > > > > + return (FATAL_EXIT_CODE); > > > > + > > > > +#define DEF_INTERNAL_OPTAB_FN(NAME, FLAGS, OPTAB, TYPE) \ > > > > + nofail_optabs[OPTAB##_optab] = true; > > > > +#include "internal-fn.def" > > > > + > > > > + /* Assign sequential codes to all entries in the machine description > > > > + in parallel with the tables in insn-output.c. */ > > > > + > > > > + int read_count = 0; > > > > + > > > > + /* Read the machine description. */ > > > > + > > > > + md_rtx_info info; > > > > + while (read_md_rtx (&info)) > > > > + { > > > > + if ((read_count++ % 10000) == 0) > > > > + { > > > > + printf ("/* Split file into separate compilation units " > > > > + "for parallel compilation %d */\n\n", read_count); > > > > + printf_include(); > > > > + } > > > > + > > > > + gen_md_rtx (&info); > > > > + } > > > > > > > > /* Write out the routines to add CLOBBERs to a pattern and say whether > > > > they > > > > clobber a hard reg. */ > > > > -- > > > > 2.24.3 (Apple Git-128)