This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: -ftree-* options
- From: Serge Belyshev <belyshev at lubercy dot com>
- To: Scott Robert Ladd <coyote at coyotegulch dot com>
- Cc: gcc at gcc dot gnu dot org
- Date: Thu, 13 May 2004 22:00:52 +0400
- Subject: Re: -ftree-* options
- References: <40A3B497.7070708@coyotegulch.com>
>The individual -ftree-* options (e.g., -ftree-pre) state that they are
>enabled at -O and above, yet they are not listed in the description of
>-O1.
>
>I assume they are, indeed, eabled at -O1?
Source code -- best documentation ;-)
opts.c:523:
if (!optimize)
{
flag_merge_constants = 0;
}
if (optimize >= 1)
{
flag_defer_pop = 1;
flag_thread_jumps = 1;
#ifdef DELAY_SLOTS
flag_delayed_branch = 1;
#endif
#ifdef CAN_DEBUG_WITHOUT_FP
flag_omit_frame_pointer = 1;
#endif
flag_guess_branch_prob = 1;
flag_cprop_registers = 1;
flag_loop_optimize = 1;
flag_if_conversion = 1;
flag_if_conversion2 = 1;
flag_tree_ccp = 1;
flag_tree_dce = 1;
flag_tree_dom = 1;
flag_tree_dse = 1;
flag_tree_pre = 1;
flag_tree_ter = 1;
flag_tree_live_range_split = 1;
flag_tree_sra = 1;
flag_tree_copyrename = 1;
if (!optimize_size)
{
/* Loop header copying usually increases size of the code. This used
not to be true, since quite often it is possible to verify that
the condition is satisfied in the first iteration and therefore
to eliminate it. Jump threading handles these cases now. */
flag_tree_ch = 1;
}
}
if (optimize >= 2)
{
flag_crossjumping = 1;
flag_optimize_sibling_calls = 1;
flag_cse_follow_jumps = 1;
flag_cse_skip_blocks = 1;
flag_gcse = 1;
flag_expensive_optimizations = 1;
flag_strength_reduce = 1;
flag_rerun_cse_after_loop = 1;
flag_rerun_loop_opt = 1;
flag_caller_saves = 1;
flag_force_mem = 1;
flag_peephole2 = 1;
#ifdef INSN_SCHEDULING
flag_schedule_insns = 1;
flag_schedule_insns_after_reload = 1;
#endif
flag_regmove = 1;
flag_strict_aliasing = 1;
flag_delete_null_pointer_checks = 1;
flag_reorder_blocks = 1;
flag_reorder_functions = 1;
flag_unit_at_a_time = 1;
}
if (optimize >= 3)
{
flag_inline_functions = 1;
flag_unswitch_loops = 1;
flag_gcse_after_reload = 1;
}
if (optimize < 2 || optimize_size)
{
align_loops = 1;
align_jumps = 1;
align_labels = 1;
align_functions = 1;
/* Don't reorder blocks when optimizing for size because extra
jump insns may be created; also barrier may create extra padding.
More correctly we should have a block reordering mode that tried
to minimize the combined size of all the jumps. This would more
or less automatically remove extra jumps, but would also try to
use more short jumps instead of long jumps. */
flag_reorder_blocks = 0;
flag_reorder_blocks_and_partition = 0;
}
if (optimize_size)
{
/* Inlining of very small functions usually reduces total size. */
set_param_value ("max-inline-insns-single", 5);
set_param_value ("max-inline-insns-auto", 5);
set_param_value ("max-inline-insns-rtl", 10);
flag_inline_functions = 1;
}
(note this is from 3.5-tree-ssa 20040504 (merged 20040428))
--
Serge