Hi,
tonight testing on x86_64, i386 and IA-64 didn't seem to bring any new
surprises, so I've comitted the following patch.
I will also update changes page of 4.4.
* doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
(-fipa-cp-clone): Enabled by default at -O3.
* opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
Index: doc/invoke.texi
===================================================================
*** doc/invoke.texi (revision 139760)
--- doc/invoke.texi (working copy)
*************** This optimization analyzes the program t
*** 5902,5907 ****
--- 5902,5908 ----
to functions are constants and then optimizes accordingly.
This optimization can substantially increase performance
if the application has constants passed to functions.
+ This flag is enabled by default at @option{-O2}, @option{-Os} and
@option{-O3}.
@item -fipa-cp-clone
@opindex fipa-cp-clone
*************** when externally visible function can be
*** 5911,5916 ****
--- 5912,5918 ----
Because this optimization can create multiple copies of functions,
it may significantly increase code size
(see @option{--param [EMAIL PROTECTED]).
+ This flag is enabled by default at @option{-O3}.
@item -fipa-matrix-reorg
@opindex fipa-matrix-reorg
Index: opts.c
===================================================================
*** opts.c (revision 139760)
--- opts.c (working copy)
*************** decode_options (unsigned int argc, const
*** 955,961 ****
flag_tree_vrp = opt2;
flag_tree_builtin_call_dce = opt2;
flag_tree_pre = opt2;
! flag_tree_switch_conversion = 1;
/* Allow more virtual operators to increase alias precision. */
--- 955,962 ----
flag_tree_vrp = opt2;
flag_tree_builtin_call_dce = opt2;
flag_tree_pre = opt2;
! flag_tree_switch_conversion = 1;
! flag_ipa_cp = opt2;
/* Allow more virtual operators to increase alias precision. */
*************** decode_options (unsigned int argc, const
*** 973,978 ****
--- 974,982 ----
flag_unswitch_loops = opt3;
flag_gcse_after_reload = opt3;
flag_tree_vectorize = opt3;
+ flag_ipa_cp_clone = opt3;
+ if (flag_ipa_cp_clone)
+ flag_ipa_cp = 1;
/* Allow even more virtual operators. Max-aliased-vops was set above for
-O2, so don't reset it unless we are at -O3. */
*************** decode_options (unsigned int argc, const
*** 1028,1033 ****
--- 1032,1040 ----
/* We want to crossjump as much as possible. */
set_param_value ("min-crossjump-insns", 1);
+
+ /* Do not perform clonning in ipcp. */
+ flag_ipa_cp_clone = 0;
}
else
set_param_value ("min-crossjump-insns", initial_min_crossjump_insns);