From: Giuliano Belinassi Date: Sun, 24 Jan 2021 15:29:42 +0000 (-0300) Subject: Initial commit for Europar 2021 GCC version X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fheads%2Fdevel%2Fautopar_europar_2021;p=thirdparty%2Fgcc.git Initial commit for Europar 2021 GCC version 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. --- diff --git a/gcc/.cgraphunit.c.swp b/gcc/.cgraphunit.c.swp new file mode 100644 index 000000000000..83c78e6c4cae 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 index 000000000000..a87c6dbf6b08 Binary files /dev/null and b/gcc/.lto-cgraph.c.swo differ diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 73e4bed3b618..12d2d19e944e 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -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 (); diff --git a/gcc/gcc.c b/gcc/gcc.c index c276a11ca7a2..ba942c0e3e45 100644 --- 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) { diff --git a/gcc/ipa-split.c b/gcc/ipa-split.c index 973e72cea045..09e9eb932646 100644 --- a/gcc/ipa-split.c +++ b/gcc/ipa-split.c @@ -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