@@ -2902,6 +2902,12 @@ ix86_option_override_internal (bool main_args_p,
if (ix86_indirect_branch != indirect_branch_keep)
SET_OPTION_IF_UNSET (opts, opts_set, flag_jump_tables, 0);
+ /* Disable this for now till loop_unroll_adjust supports gimple level checks,
+ to avoid possible ICE. */
+ if (opts->x_optimize >= 1)
+ SET_OPTION_IF_UNSET (opts, opts_set,
+ param_iv_consider_reg_offset_for_unroll, 0);
+
return true;
}
@@ -15318,6 +15318,12 @@ s390_option_override_internal (struct gcc_options *opts,
not the case when the code runs before the prolog. */
if (opts->x_flag_fentry && !TARGET_64BIT)
error ("%<-mfentry%> is supported only for 64-bit CPUs");
+
+ /* Disable this for now till loop_unroll_adjust supports gimple level checks,
+ to avoid possible ICE. */
+ if (opts->x_optimize >= 1)
+ SET_OPTION_IF_UNSET (opts, opts_set,
+ param_iv_consider_reg_offset_for_unroll, 0);
}
static void
@@ -12220,6 +12220,15 @@ If the number of candidates in the set is smaller than this value,
always try to remove unnecessary ivs from the set
when adding a new one.
+@item iv-consider-reg-offset-for-unroll
+When RTL unrolling performs on a loop, the duplicated loop iterations introduce
+appropriate induction variable step update expressions. But if an induction
+variable is derived from address object, it is profitable to fill its required
+offset updates into appropriate memory access expressions if target memory
+accessing supports the register offset mode and the resulted offset is in the
+valid range. The induction variable optimizations consider this information
+for better unrolling code. It requires unroll factor estimation in middle-end.
+
@item avg-loop-niter
Average number of iterations of a loop.
@@ -270,6 +270,10 @@ Bound on number of candidates below that all candidates are considered in iv opt
Common Joined UInteger Var(param_iv_max_considered_uses) Init(250) Param Optimization
Bound on number of iv uses in loop optimized in iv optimizations.
+-param=iv-consider-reg-offset-for-unroll=
+Common Joined UInteger Var(param_iv_consider_reg_offset_for_unroll) Init(1) Optimization IntegerRange(0, 1) Param
+Whether iv optimizations mark register offset valid groups and consider their derived iv candidates would be profitable with estimated unroll factor consideration.
+
-param=jump-table-max-growth-ratio-for-size=
Common Joined UInteger Var(param_jump_table_max_growth_ratio_for_size) Init(300) Param Optimization
The maximum code size growth ratio when expanding into a jump table (in percent). The parameter is used when optimizing for size.