Common Report Var(flag_unroll_all_loops) Optimization
Perform loop unrolling for all loops.
+funroll-completely-grow-size
+Undocumented Var(flag_cunroll_grow_size) Init(2) Optimization
+; Internal undocumented flag, allow size growth during complete unrolling
+
; Nonzero means that loop optimizer may assume that the induction variables
; that control loops do not overflow and that the loops with nontrivial
; exit condition are not infinite
unroll_only_small_loops = 0;
if (!global_options_set.x_flag_rename_registers)
flag_rename_registers = 1;
+ if (!global_options_set.x_flag_cunroll_grow_size)
+ flag_cunroll_grow_size = 1;
}
+ else
+ if (!global_options_set.x_flag_cunroll_grow_size)
+ flag_cunroll_grow_size = flag_peel_loops || optimize >= 3;
/* If using typedef char *va_list, signal that
__builtin_va_start (&ap, 0) can be optimized to
if (flag_unroll_all_loops)
flag_unroll_loops = 1;
+ /* Allow cunroll to grow size accordingly. */
+ if (flag_cunroll_grow_size == AUTODETECT_VALUE)
+ flag_cunroll_grow_size
+ = flag_unroll_loops || flag_peel_loops || optimize >= 3;
+
/* web and rename-registers help when run after loop unrolling. */
if (flag_web == AUTODETECT_VALUE)
flag_web = flag_unroll_loops;
re-peeling the same loop multiple times. */
if (flag_peel_loops)
peeled_loops = BITMAP_ALLOC (NULL);
- unsigned int val = tree_unroll_loops_completely (flag_unroll_loops
- || flag_peel_loops
- || optimize >= 3, true);
+ unsigned int val = tree_unroll_loops_completely (flag_cunroll_grow_size,
+ true);
if (peeled_loops)
{
BITMAP_FREE (peeled_loops);