The max number of reload pseudos which are considered during
spilling a non-reload pseudo.
+@item lra-max-pseudos-points-log2-considered-for-preferences
+The maximum @code{log2(number of reload pseudos * number of
+program points)} threshold when preferences for other reload pseudos
+are still considered. Taking these preferences into account helps to
+improve register allocation. However, for very large functions, a
+large value can result in significant compilation time and memory
+consumption. The default value is 30.
+
@item max-pow-sqrt-depth
Maximum depth of sqrt chains to use when synthesizing exponentiation
by a real constant.
for (p = 0; p < lra_live_max_point; p++)
bitmap_initialize (&live_reload_and_inheritance_pseudos[p],
&live_reload_and_inheritance_pseudos_bitmap_obstack);
+ if ((unsigned) (max_regno - lra_constraint_new_regno_start)
+ >= (1U << lra_max_pseudos_points_log2_considered_for_preferences)
+ / (lra_live_max_point + 1))
+ return;
+ bitmap_head start_points;
+ bitmap_initialize (&start_points,
+ &live_hard_reg_pseudos_bitmap_obstack);
+ for (i = lra_constraint_new_regno_start; i < max_regno; i++)
+ for (r = lra_reg_info[i].live_ranges; r != NULL; r = r->next)
+ bitmap_set_bit (&start_points, r->start);
for (i = lra_constraint_new_regno_start; i < max_regno; i++)
{
for (r = lra_reg_info[i].live_ranges; r != NULL; r = r->next)
- for (p = r->start; p <= r->finish; p++)
- bitmap_set_bit (&live_reload_and_inheritance_pseudos[p], i);
+ {
+ bitmap_iterator bi;
+ unsigned p;
+ EXECUTE_IF_SET_IN_BITMAP (&start_points, r->start, p, bi)
+ {
+ if (p > (unsigned) r->finish)
+ break;
+ bitmap_set_bit (&live_reload_and_inheritance_pseudos[p], i);
+ }
+ }
}
+ bitmap_clear (&start_points);
}
/* Finalize data about living reload pseudos at any given program
Common Joined UInteger Var(param_lra_max_considered_reload_pseudos) Init(500) Param Optimization
The max number of reload pseudos which are considered during spilling a non-reload pseudo.
+-param=lra-max-pseudos-points-log2-considered-for-preferences=
+Common Joined UInteger Var(lra_max_pseudos_points_log2_considered_for_preferences) Init(30) IntegerRange(0, 31) Param Optimization
+The maximum log2(number of reload pseudos * number of program points) threshold
+when preferences for other reload pseudos are still considered. Taking these
+preferences into account helps to improve register allocation. However, for
+very large functions, a large value can result in significant compilation time
+and memory consumption. The default value is 30.
+
-param=lto-max-partition=
Common Joined UInteger Var(param_max_partition_size) Init(1000000) Param
Maximal size of a partition for LTO (in estimated instructions).