]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Initial commit for Europar 2021 GCC version devel/autopar_europar_2021
authorGiuliano Belinassi <giuliano.belinassi@usp.br>
Sun, 24 Jan 2021 15:29:42 +0000 (12:29 -0300)
committerGiuliano Belinassi <giuliano.belinassi@usp.br>
Sun, 24 Jan 2021 15:29:42 +0000 (12:29 -0300)
This was the version of GCC used in the Europar 2021 paper with regard
to GCC paralelism. Future commits are possible, so look in the paper the
commit hash of the version was used.

gcc/.cgraphunit.c.swp [new file with mode: 0644]
gcc/.lto-cgraph.c.swo [new file with mode: 0644]
gcc/cgraphunit.c
gcc/gcc.c
gcc/ipa-split.c

diff --git a/gcc/.cgraphunit.c.swp b/gcc/.cgraphunit.c.swp
new file mode 100644 (file)
index 0000000..83c78e6
Binary files /dev/null and b/gcc/.cgraphunit.c.swp differ
diff --git a/gcc/.lto-cgraph.c.swo b/gcc/.lto-cgraph.c.swo
new file mode 100644 (file)
index 0000000..a87c6db
Binary files /dev/null and b/gcc/.lto-cgraph.c.swo differ
index 73e4bed3b618ddb0459d2b6025f375be393a3aab..12d2d19e944eb1d9818f9c316ce0ecad0cd50194 100644 (file)
@@ -2794,10 +2794,22 @@ maybe_compile_in_parallel (void)
   bool jobserver = false;
   bool job_auto = false;
   int num_jobs = -1;
+  unsigned long long insns = 0;
+  cgraph_node *cnode;
 
   if (!flag_parallel_jobs || !split_outputs)
     return false;
 
+  FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (cnode)
+    {
+      ipa_size_summary *ss = ipa_size_summaries->get (cnode);
+      if (!cnode->inlined_to && ss)
+       insns += ss->size;
+    }
+
+  if (insns < (unsigned long long) param_min_partition_size)
+    return false;
+
   if (!strcmp (flag_parallel_jobs, "auto"))
     {
       jobserver = jobserver_initialize ();
index c276a11ca7a25093b8603f41717e6bc6007b38bd..ba942c0e3e45a005542abc9710c5da6e8a5c5a86 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -3405,14 +3405,7 @@ append_split_outputs (extra_arg_storer *storer,
          argv[argc++] = extra_argument;
        }
 
-      if (have_c)
-       {
-         argv[argc++] = "-fPIE";
-         argv[argc++] = "-fPIC";
-       }
-
       argv[argc]   = NULL;
-
       commands[0].argv = argv;
     }
 
@@ -3977,7 +3970,7 @@ execute (void)
   /* FIXME: Interact with GNU Jobserver if necessary.  */
 
   commands_batch = commands;
-  n = flag_parallel_jobs? 1: n_commands;
+  n = n_commands;
 
   for (int i = 0; i < n_commands; i += n)
     {
index 973e72cea045635f67ada97776c9c7b7a227ada4..09e9eb93264654fd11356490192fdcc32b18866e 100644 (file)
@@ -1909,8 +1909,12 @@ pass_split_functions::gate (function *)
 {
   /* When doing profile feedback, we want to execute the pass after profiling
      is read.  So disable one in early optimization.  */
-  return (flag_partial_inlining
-         && !profile_arc_flag && !flag_branch_probabilities);
+
+  /* Disabled due to an issue regarding how the partitioner applier
+     handle clones generated by this pass.  */
+  /*return (flag_partial_inlining
+         && !profile_arc_flag && !flag_branch_probabilities); */
+  return false;
 }
 
 } // anon namespace
@@ -1968,8 +1972,13 @@ pass_feedback_split_functions::gate (function *)
 {
   /* We don't need to split when profiling at all, we are producing
      lousy code anyway.  */
-  return (flag_partial_inlining
-         && flag_branch_probabilities);
+
+  /* Disabled due to an issue regarding how the partitioner applier
+     handle clones generated by this pass.  */
+  /* return (flag_partial_inlining
+         && flag_branch_probabilities); */
+
+  return false;
 }
 
 } // anon namespace