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);