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

Reply via email to