Commit a2e76867 by Prathamesh Kulkarni Committed by Prathamesh Kulkarni

params.def (MAX_PARTITION_SIZE): New param.

2016-04-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

	* params.def (MAX_PARTITION_SIZE): New param.
	* invoke.texi: Document lto-max-partition.
lto/
	* lto-partition.h (lto_balanced_map): New parameter.
	* lto-partition.c (lto_balanced_map): New parameter
	max_partition_size.
	Check if partition size is greater than max_partition_size.
	* lto.c (do_whole_program_analysis): Adjust calls to
	lto_balanced_map() to pass 2nd argument.

From-SVN: r235478
parent 2b78f221
2016-04-27 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
* params.def (MAX_PARTITION_SIZE): New param.
* invoke.texi: Document lto-max-partition.
2016-04-27 Richard Biener <rguenther@suse.de> 2016-04-27 Richard Biener <rguenther@suse.de>
PR ipa/70785 PR ipa/70785
......
...@@ -9490,6 +9490,11 @@ Size of minimal partition for WHOPR (in estimated instructions). ...@@ -9490,6 +9490,11 @@ Size of minimal partition for WHOPR (in estimated instructions).
This prevents expenses of splitting very small programs into too many This prevents expenses of splitting very small programs into too many
partitions. partitions.
@item lto-max-partition
Size of max partition for WHOPR (in estimated instructions).
to provide an upper bound for individual size of partition.
Meant to be used only with balanced partitioning.
@item cxx-max-namespaces-for-diagnostic-help @item cxx-max-namespaces-for-diagnostic-help
The maximum number of namespaces to consult for suggestions when C++ The maximum number of namespaces to consult for suggestions when C++
name lookup fails for an identifier. The default is 1000. name lookup fails for an identifier. The default is 1000.
......
2016-04-27 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
* lto-partition.h (lto_balanced_map): New parameter.
* lto-partition.c (lto_balanced_map): New parameter
max_partition_size.
Check if partition size is greater than max_partition_size.
* lto.c (do_whole_program_analysis): Adjust calls to
lto_balanced_map() to pass 2nd argument.
2016-03-17 H.J. Lu <hongjiu.lu@intel.com> 2016-03-17 H.J. Lu <hongjiu.lu@intel.com>
PR lto/70258 PR lto/70258
......
...@@ -447,7 +447,7 @@ add_sorted_nodes (vec<symtab_node *> &next_nodes, ltrans_partition partition) ...@@ -447,7 +447,7 @@ add_sorted_nodes (vec<symtab_node *> &next_nodes, ltrans_partition partition)
and in-partition calls was reached. */ and in-partition calls was reached. */
void void
lto_balanced_map (int n_lto_partitions) lto_balanced_map (int n_lto_partitions, int max_partition_size)
{ {
int n_nodes = 0; int n_nodes = 0;
int n_varpool_nodes = 0, varpool_pos = 0, best_varpool_pos = 0; int n_varpool_nodes = 0, varpool_pos = 0, best_varpool_pos = 0;
...@@ -511,6 +511,9 @@ lto_balanced_map (int n_lto_partitions) ...@@ -511,6 +511,9 @@ lto_balanced_map (int n_lto_partitions)
varpool_order.qsort (varpool_node_cmp); varpool_order.qsort (varpool_node_cmp);
/* Compute partition size and create the first partition. */ /* Compute partition size and create the first partition. */
if (PARAM_VALUE (MIN_PARTITION_SIZE) > max_partition_size)
fatal_error (input_location, "min partition size cannot be greater than max partition size");
partition_size = total_size / n_lto_partitions; partition_size = total_size / n_lto_partitions;
if (partition_size < PARAM_VALUE (MIN_PARTITION_SIZE)) if (partition_size < PARAM_VALUE (MIN_PARTITION_SIZE))
partition_size = PARAM_VALUE (MIN_PARTITION_SIZE); partition_size = PARAM_VALUE (MIN_PARTITION_SIZE);
...@@ -719,7 +722,8 @@ lto_balanced_map (int n_lto_partitions) ...@@ -719,7 +722,8 @@ lto_balanced_map (int n_lto_partitions)
best_cost, best_internal, best_i); best_cost, best_internal, best_i);
/* Partition is too large, unwind into step when best cost was reached and /* Partition is too large, unwind into step when best cost was reached and
start new partition. */ start new partition. */
if (partition->insns > 2 * partition_size) if (partition->insns > 2 * partition_size
|| partition->insns > max_partition_size)
{ {
if (best_i != i) if (best_i != i)
{ {
......
...@@ -35,7 +35,7 @@ extern vec<ltrans_partition> ltrans_partitions; ...@@ -35,7 +35,7 @@ extern vec<ltrans_partition> ltrans_partitions;
void lto_1_to_1_map (void); void lto_1_to_1_map (void);
void lto_max_map (void); void lto_max_map (void);
void lto_balanced_map (int); void lto_balanced_map (int, int);
void lto_promote_cross_file_statics (void); void lto_promote_cross_file_statics (void);
void free_ltrans_partitions (void); void free_ltrans_partitions (void);
void lto_promote_statics_nonwpa (void); void lto_promote_statics_nonwpa (void);
...@@ -3117,9 +3117,10 @@ do_whole_program_analysis (void) ...@@ -3117,9 +3117,10 @@ do_whole_program_analysis (void)
else if (flag_lto_partition == LTO_PARTITION_MAX) else if (flag_lto_partition == LTO_PARTITION_MAX)
lto_max_map (); lto_max_map ();
else if (flag_lto_partition == LTO_PARTITION_ONE) else if (flag_lto_partition == LTO_PARTITION_ONE)
lto_balanced_map (1); lto_balanced_map (1, INT_MAX);
else if (flag_lto_partition == LTO_PARTITION_BALANCED) else if (flag_lto_partition == LTO_PARTITION_BALANCED)
lto_balanced_map (PARAM_VALUE (PARAM_LTO_PARTITIONS)); lto_balanced_map (PARAM_VALUE (PARAM_LTO_PARTITIONS),
PARAM_VALUE (MAX_PARTITION_SIZE));
else else
gcc_unreachable (); gcc_unreachable ();
......
...@@ -1029,6 +1029,11 @@ DEFPARAM (MIN_PARTITION_SIZE, ...@@ -1029,6 +1029,11 @@ DEFPARAM (MIN_PARTITION_SIZE,
"Minimal size of a partition for LTO (in estimated instructions).", "Minimal size of a partition for LTO (in estimated instructions).",
1000, 0, 0) 1000, 0, 0)
DEFPARAM (MAX_PARTITION_SIZE,
"lto-max-partition",
"Maximal size of a partition for LTO (in estimated instructions).",
1000000, 0, INT_MAX)
/* Diagnostic parameters. */ /* Diagnostic parameters. */
DEFPARAM (CXX_MAX_NAMESPACES_FOR_DIAGNOSTIC_HELP, DEFPARAM (CXX_MAX_NAMESPACES_FOR_DIAGNOSTIC_HELP,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment