commit: 12bd49fdb9c159ea05e498160adef179467bc729 Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Mon Nov 25 15:09:49 2024 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Mon Nov 25 15:09:49 2024 +0000 URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=12bd49fd
15.0.0: drop 72_all_PR111600-genemit-Distribute-evenly-to-files.patch Now merged upstream. Signed-off-by: Sam James <sam <AT> gentoo.org> ...111600-genemit-Distribute-evenly-to-files.patch | 194 --------------------- 15.0.0/gentoo/README.history | 4 + 2 files changed, 4 insertions(+), 194 deletions(-) diff --git a/15.0.0/gentoo/72_all_PR111600-genemit-Distribute-evenly-to-files.patch b/15.0.0/gentoo/72_all_PR111600-genemit-Distribute-evenly-to-files.patch deleted file mode 100644 index 287e082..0000000 --- a/15.0.0/gentoo/72_all_PR111600-genemit-Distribute-evenly-to-files.patch +++ /dev/null @@ -1,194 +0,0 @@ -https://inbox.sourceware.org/gcc-patches/[email protected]/ - -From 359fea7741c6c8f98239aa32f5c3b6f4a582567b Mon Sep 17 00:00:00 2001 -Message-ID: <359fea7741c6c8f98239aa32f5c3b6f4a582567b.1732312478.git....@gentoo.org> -From: Robin Dapp <[email protected]> -Date: Thu, 21 Nov 2024 18:56:32 +0100 -Subject: [PATCH] genemit: Distribute evenly to files [PR111600]. - -Hi, - -currently we distribute insn patterns in genemit, partitioning them -by the number of patterns per file. The first 100 into file 1, the -next 100 into file 2, and so on. Depending on the patterns this -can lead to files of very uneven size. - -Similar to the genmatch split, this patch introduces a dynamic -choose_output () which considers the size of the output files -and selects the shortest one for the next pattern. - -Bootstrapped and regtested on x86 and power10, aarch64 running. -Regtested on rv64gcv. - -gcc/ChangeLog: - - PR target/111600 - -* genemit.cc (handle_arg): Use files instead of filenames. - (main): Ditto. - * gensupport.cc (SIZED_BASED_CHUNKS): Define. - (choose_output): New function. - * gensupport.h (choose_output): Declare. ---- - gcc/genemit.cc | 53 ++++++++++++++--------------------------------- - gcc/gensupport.cc | 33 +++++++++++++++++++++++++++++ - gcc/gensupport.h | 1 + - 3 files changed, 50 insertions(+), 37 deletions(-) - -diff --git a/gcc/genemit.cc b/gcc/genemit.cc -index 5d3d10f5061a..518fb85ce8c8 100644 ---- a/gcc/genemit.cc -+++ b/gcc/genemit.cc -@@ -905,14 +905,15 @@ from the machine description file `md'. */\n\n"); - fprintf (file, "#include \"target.h\"\n\n"); - } - --auto_vec<const char *, 10> output_files; -+auto_vec<FILE *, 10> output_files; - - static bool - handle_arg (const char *arg) - { - if (arg[1] == 'O') - { -- output_files.safe_push (&arg[2]); -+ FILE *file = fopen (&arg[2], "w"); -+ output_files.safe_push (file); - return true; - } - return false; -@@ -933,47 +934,21 @@ main (int argc, const char **argv) - /* Assign sequential codes to all entries in the machine description - in parallel with the tables in insn-output.cc. */ - -- int npatterns = count_patterns (); - md_rtx_info info; - -- bool to_stdout = false; -- int npatterns_per_file = npatterns; -- if (!output_files.is_empty ()) -- npatterns_per_file = npatterns / output_files.length () + 1; -- else -- to_stdout = true; -- -- gcc_assert (npatterns_per_file > 1); -+ if (output_files.is_empty ()) -+ output_files.safe_push (stdout); - -- /* Reverse so we can pop the first-added element. */ -- output_files.reverse (); -+ for (auto f : output_files) -+ print_header (f); - -- int count = 0; - FILE *file = NULL; -+ unsigned file_idx; - - /* Read the machine description. */ - while (read_md_rtx (&info)) - { -- if (count == 0 || count == npatterns_per_file) -- { -- bool is_last = !to_stdout && output_files.is_empty (); -- if (file && !is_last) -- if (fclose (file) != 0) -- return FATAL_EXIT_CODE; -- -- if (!output_files.is_empty ()) -- { -- const char *const filename = output_files.pop (); -- file = fopen (filename, "w"); -- } -- else if (to_stdout) -- file = stdout; -- else -- break; -- -- print_header (file); -- count = 0; -- } -+ file = choose_output (output_files, file_idx); - - switch (GET_CODE (info.def)) - { -@@ -999,10 +974,10 @@ main (int argc, const char **argv) - default: - break; - } -- -- count++; - } - -+ file = choose_output (output_files, file_idx); -+ - /* Write out the routines to add CLOBBERs to a pattern and say whether they - clobber a hard reg. */ - output_add_clobbers (&info, file); -@@ -1015,5 +990,9 @@ main (int argc, const char **argv) - handle_overloaded_gen (oname, file); - } - -- return (fclose (file) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE); -+ for (FILE *f : output_files) -+ if (fclose (f) != 0) -+ return FATAL_EXIT_CODE; -+ -+ return SUCCESS_EXIT_CODE; - } -diff --git a/gcc/gensupport.cc b/gcc/gensupport.cc -index 3a02132c8761..e0adf0c1bc54 100644 ---- a/gcc/gensupport.cc -+++ b/gcc/gensupport.cc -@@ -3913,3 +3913,36 @@ find_optab (optab_pattern *p, const char *name) - } - return false; - } -+ -+/* Find the file to write into next. We try to evenly distribute the contents -+ over the different files. */ -+ -+#define SIZED_BASED_CHUNKS 1 -+ -+FILE * -+choose_output (const vec<FILE *> &parts, unsigned &idx) -+{ -+ if (parts.length () == 0) -+ gcc_unreachable (); -+#ifdef SIZED_BASED_CHUNKS -+ FILE *shortest = NULL; -+ long min = 0; -+ idx = 0; -+ for (unsigned i = 0; i < parts.length (); i++) -+ { -+ FILE *part = parts[i]; -+ long len = ftell (part); -+ if (!shortest || min > len) -+ { -+ shortest = part; -+ min = len; -+ idx = i; -+ } -+ } -+ return shortest; -+#else -+ static int current_file; -+ idx = current_file++ % parts.length (); -+ return parts[idx]; -+#endif -+} -diff --git a/gcc/gensupport.h b/gcc/gensupport.h -index b7a1da34518c..781c9e9ffcea 100644 ---- a/gcc/gensupport.h -+++ b/gcc/gensupport.h -@@ -231,5 +231,6 @@ extern file_location get_file_location (rtx); - extern const char *get_emit_function (rtx); - extern bool needs_barrier_p (rtx); - extern bool find_optab (optab_pattern *, const char *); -+extern FILE *choose_output (const vec<FILE *> &, unsigned &); - - #endif /* GCC_GENSUPPORT_H */ - -base-commit: 76c202329458aad027ececc59d666e4995e3644e --- -2.47.0 - diff --git a/15.0.0/gentoo/README.history b/15.0.0/gentoo/README.history index 7a89c63..926d4de 100644 --- a/15.0.0/gentoo/README.history +++ b/15.0.0/gentoo/README.history @@ -1,3 +1,7 @@ +?? + + - 72_all_PR111600-genemit-Distribute-evenly-to-files.patch + 28 25 November 2024 + 72_all_PR111600-genemit-Distribute-evenly-to-files.patch
