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.
This commit is contained in:
Giuliano Belinassi 2021-01-24 12:29:42 -03:00
parent a926878ddb
commit e2da2f7205
5 changed files with 26 additions and 12 deletions

BIN
gcc/.cgraphunit.c.swp Normal file

Binary file not shown.

BIN
gcc/.lto-cgraph.c.swo Normal file

Binary file not shown.

View 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 ();

View File

@ -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)
{

View 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