OSDN Git Service

gcc/
authorsteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 26 Feb 2006 20:23:40 +0000 (20:23 +0000)
committersteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 26 Feb 2006 20:23:40 +0000 (20:23 +0000)
* common.opt (-floop-optimize, -frerun-loop-opt): Remove.
* tree-pass.h (pass_loop_optimize): Remove.
* passes.c (pass_loop_optimize): Never run it.
* toplev.c (backend_init): Don't call init_loop.
* opts.c (flag_loop_optimize_set): Remove.
(decode_options): Never set flag_loop_optimize or flag_rerun_loop_opt.
(common_handle_option) <OPT_floop_optimize>: Remove.  Don't disable
the old RTL loop optimizer when profiling enabled.
* predict.c (tree_estimate_probability): Always strip builtin_expect.
* cfgcleanup.c (try_forward_edges): Don't avoid killing loop
pre-headers for the sake of the old RTL loop optimizer.
* Makefile.in: Remove all references to loop.o.

* doc/invoke.texi: Remove all references to -floop-optimize
and -frerun-loop-opt.

testsuite/
* gcc.dg/20031201-1.c: Don't use -frerun-loop-opt.
* g++.old-deja/g++.robertl/eb132.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111459 138bc75d-0d04-0410-961f-82ee72b054a4

14 files changed:
gcc/ChangeLog
gcc/Makefile.in
gcc/cfgcleanup.c
gcc/common.opt
gcc/doc/invoke.texi
gcc/opts.c
gcc/passes.c
gcc/predict.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
gcc/testsuite/gcc.dg/20031201-1.c
gcc/toplev.c
gcc/toplev.h
gcc/tree-pass.h

index 38e3c59..c2e5639 100644 (file)
@@ -1,3 +1,21 @@
+2006-02-26  Steven Bosscher  <stevenb.gcc@gmail.com>
+
+       * common.opt (-floop-optimize, -frerun-loop-opt): Remove.
+       * tree-pass.h (pass_loop_optimize): Remove.
+       * passes.c (pass_loop_optimize): Never run it.
+       * toplev.c (backend_init): Don't call init_loop.
+       * opts.c (flag_loop_optimize_set): Remove.
+       (decode_options): Never set flag_loop_optimize or flag_rerun_loop_opt.
+       (common_handle_option) <OPT_floop_optimize>: Remove.  Don't disable
+       the old RTL loop optimizer when profiling enabled.
+       * predict.c (tree_estimate_probability): Always strip builtin_expect.
+       * cfgcleanup.c (try_forward_edges): Don't avoid killing loop
+       pre-headers for the sake of the old RTL loop optimizer.
+       * Makefile.in: Remove all references to loop.o.
+
+       * doc/invoke.texi: Remove all references to -floop-optimize
+       and -frerun-loop-opt.
+
 2006-02-26  Zack Weinberg  <zackw@panix.com>
 
        * doc/md.texi (Machine Constraints): Refer to all files with paths
 2006-02-26  Zack Weinberg  <zackw@panix.com>
 
        * doc/md.texi (Machine Constraints): Refer to all files with paths
index 59fdd4f..0cd1bec 100644 (file)
@@ -981,7 +981,7 @@ OBJS-common = \
  haifa-sched.o hooks.o ifcvt.o insn-attrtab.o insn-emit.o insn-modes.o    \
  insn-extract.o insn-opinit.o insn-output.o insn-peep.o insn-recog.o      \
  integrate.o intl.o jump.o  langhooks.o lcm.o lists.o local-alloc.o       \
  haifa-sched.o hooks.o ifcvt.o insn-attrtab.o insn-emit.o insn-modes.o    \
  insn-extract.o insn-opinit.o insn-output.o insn-peep.o insn-recog.o      \
  integrate.o intl.o jump.o  langhooks.o lcm.o lists.o local-alloc.o       \
loop.o mode-switching.o modulo-sched.o optabs.o options.o opts.o         \
mode-switching.o modulo-sched.o optabs.o options.o opts.o        \
  params.o postreload.o postreload-gcse.o predict.o                        \
  insn-preds.o insn-automata.o pointer-set.o                               \
  print-rtl.o print-tree.o profile.o value-prof.o var-tracking.o                   \
  params.o postreload.o postreload-gcse.o predict.o                        \
  insn-preds.o insn-automata.o pointer-set.o                               \
  print-rtl.o print-tree.o profile.o value-prof.o var-tracking.o                   \
@@ -2371,11 +2371,6 @@ value-prof.o : value-prof.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
    $(RECOG_H) insn-config.h $(OPTABS_H) $(REGS_H) $(GGC_H) $(DIAGNOSTIC_H) \
    $(TREE_H) $(COVERAGE_H) $(RTL_H) $(GCOV_IO_H) $(TREE_FLOW_H) \
    tree-flow-inline.h timevar.h tree-pass.h
    $(RECOG_H) insn-config.h $(OPTABS_H) $(REGS_H) $(GGC_H) $(DIAGNOSTIC_H) \
    $(TREE_H) $(COVERAGE_H) $(RTL_H) $(GCOV_IO_H) $(TREE_FLOW_H) \
    tree-flow-inline.h timevar.h tree-pass.h
-loop.o : loop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
-   $(FLAGS_H) insn-config.h $(REGS_H) hard-reg-set.h $(RECOG_H) $(EXPR_H) \
-   real.h $(PREDICT_H) $(BASIC_BLOCK_H) $(FUNCTION_H) $(CFGLOOP_H) \
-   toplev.h except.h cselib.h $(OPTABS_H) $(TM_P_H) $(GGC_H) insn-flags.h \
-   timevar.h tree-pass.h
 loop-doloop.o : loop-doloop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
    $(RTL_H) $(FLAGS_H) $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) \
    toplev.h $(CFGLOOP_H) output.h $(PARAMS_H)
 loop-doloop.o : loop-doloop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
    $(RTL_H) $(FLAGS_H) $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) \
    toplev.h $(CFGLOOP_H) output.h $(PARAMS_H)
index c2c262c..0e67415 100644 (file)
@@ -516,39 +516,6 @@ try_forward_edges (int mode, basic_block b)
          if (!new_target)
            break;
 
          if (!new_target)
            break;
 
-         /* Avoid killing of loop pre-headers, as it is the place loop
-            optimizer wants to hoist code to.
-
-            For fallthru forwarders, the LOOP_BEG note must appear between
-            the header of block and CODE_LABEL of the loop, for non forwarders
-            it must appear before the JUMP_INSN.  */
-         if ((mode & CLEANUP_PRE_LOOP) && optimize && flag_loop_optimize)
-           {
-             rtx insn = (EDGE_SUCC (target, 0)->flags & EDGE_FALLTHRU
-                         ? BB_HEAD (target) : prev_nonnote_insn (BB_END (target)));
-
-             if (!NOTE_P (insn))
-               insn = NEXT_INSN (insn);
-
-             for (; insn && !LABEL_P (insn) && !INSN_P (insn);
-                  insn = NEXT_INSN (insn))
-               if (NOTE_P (insn)
-                   && NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_BEG)
-                 break;
-
-             if (insn && NOTE_P (insn))
-               break;
-
-             /* Do not clean up branches to just past the end of a loop
-                at this time; it can mess up the loop optimizer's
-                recognition of some patterns.  */
-
-             insn = PREV_INSN (BB_HEAD (target));
-             if (insn && NOTE_P (insn)
-                   && NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_END)
-               break;
-           }
-
          counter++;
          target = new_target;
          threaded |= new_target_threaded;
          counter++;
          target = new_target;
          threaded |= new_target_threaded;
index 36e52fc..4229f14 100644 (file)
@@ -555,10 +555,6 @@ fleading-underscore
 Common Report Var(flag_leading_underscore) Init(-1)
 Give external symbols a leading underscore
 
 Common Report Var(flag_leading_underscore) Init(-1)
 Give external symbols a leading underscore
 
-floop-optimize
-Common Report Var(flag_loop_optimize)
-Perform loop optimizations
-
 fmath-errno
 Common Report Var(flag_errno_math) Init(1)
 Set errno after built-in math functions
 fmath-errno
 Common Report Var(flag_errno_math) Init(1)
 Set errno after built-in math functions
@@ -725,10 +721,6 @@ frerun-cse-after-loop
 Common Report Var(flag_rerun_cse_after_loop) Init(2)
 Add a common subexpression elimination pass after loop optimizations
 
 Common Report Var(flag_rerun_cse_after_loop) Init(2)
 Add a common subexpression elimination pass after loop optimizations
 
-frerun-loop-opt
-Common Report Var(flag_rerun_loop_opt)
-Run the loop optimizer twice
-
 frounding-math
 Common Report Var(flag_rounding_math)
 Disable optimizations that assume default FP rounding behavior
 frounding-math
 Common Report Var(flag_rounding_math)
 Disable optimizations that assume default FP rounding behavior
index 6a38582..17efb6c 100644 (file)
@@ -310,7 +310,7 @@ Objective-C and Objective-C++ Dialects}.
 -fexpensive-optimizations  -ffast-math  -ffloat-store @gol
 -fforce-addr  -ffunction-sections @gol
 -fgcse  -fgcse-lm  -fgcse-sm  -fgcse-las  -fgcse-after-reload @gol
 -fexpensive-optimizations  -ffast-math  -ffloat-store @gol
 -fforce-addr  -ffunction-sections @gol
 -fgcse  -fgcse-lm  -fgcse-sm  -fgcse-las  -fgcse-after-reload @gol
--floop-optimize -fcrossjumping  -fif-conversion  -fif-conversion2 @gol
+-fcrossjumping  -fif-conversion  -fif-conversion2 @gol
 -finline-functions  -finline-functions-called-once @gol
 -finline-limit=@var{n}  -fkeep-inline-functions @gol
 -fkeep-static-consts  -fmerge-constants  -fmerge-all-constants @gol
 -finline-functions  -finline-functions-called-once @gol
 -finline-limit=@var{n}  -fkeep-inline-functions @gol
 -fkeep-static-consts  -fmerge-constants  -fmerge-all-constants @gol
@@ -4401,7 +4401,6 @@ compilation time.
 -fdelayed-branch @gol
 -fguess-branch-probability @gol
 -fcprop-registers @gol
 -fdelayed-branch @gol
 -fguess-branch-probability @gol
 -fcprop-registers @gol
--floop-optimize @gol
 -fif-conversion @gol
 -fif-conversion2 @gol
 -ftree-ccp @gol
 -fif-conversion @gol
 -fif-conversion2 @gol
 -ftree-ccp @gol
@@ -4775,12 +4774,6 @@ performed.
 
 Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.
 
 
 Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.
 
-@item -frerun-loop-opt
-@opindex frerun-loop-opt
-Run the loop optimizer twice.
-
-Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.
-
 @item -fgcse
 @opindex fgcse
 Perform a global common subexpression elimination pass.
 @item -fgcse
 @opindex fgcse
 Perform a global common subexpression elimination pass.
@@ -4826,13 +4819,6 @@ When @option{-fgcse-after-reload} is enabled, a redundant load elimination
 pass is performed after reload.  The purpose of this pass is to cleanup
 redundant spilling.
 
 pass is performed after reload.  The purpose of this pass is to cleanup
 redundant spilling.
 
-@item -floop-optimize
-@opindex floop-optimize
-Perform loop optimizations: move constant expressions out of loops, simplify
-exit test conditions and optionally do strength-reduction as well.
-
-Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}.
-
 @item -funsafe-loop-optimizations
 @opindex funsafe-loop-optimizations
 If given, the loop optimizer will assume that loop indices do not
 @item -funsafe-loop-optimizations
 @opindex funsafe-loop-optimizations
 If given, the loop optimizer will assume that loop indices do not
@@ -5452,8 +5438,7 @@ Enable profile feedback directed optimizations, and optimizations
 generally profitable only with profile feedback available.
 
 The following options are enabled: @code{-fbranch-probabilities}, @code{-fvpt},
 generally profitable only with profile feedback available.
 
 The following options are enabled: @code{-fbranch-probabilities}, @code{-fvpt},
-@code{-funroll-loops}, @code{-fpeel-loops}, @code{-ftracer},
-@code{-fno-loop-optimize}.
+@code{-funroll-loops}, @code{-fpeel-loops}, @code{-ftracer}
 
 @end table
 
 
 @end table
 
@@ -5705,7 +5690,7 @@ Enabled with @option{-fprofile-use}.
 
 @item -fmove-loop-invariants
 @opindex fmove-loop-invariants
 
 @item -fmove-loop-invariants
 @opindex fmove-loop-invariants
-Enables the loop invariant motion pass in the new loop optimizer.  Enabled
+Enables the loop invariant motion pass in the RTL loop optimizer.  Enabled
 at level @option{-O1}
 
 @item -funswitch-loops
 at level @option{-O1}
 
 @item -funswitch-loops
index a5dc609..ce0a5a9 100644 (file)
@@ -100,7 +100,6 @@ static bool profile_arc_flag_set, flag_profile_values_set;
 static bool flag_unroll_loops_set, flag_tracer_set;
 static bool flag_value_profile_transformations_set;
 static bool flag_peel_loops_set, flag_branch_probabilities_set;
 static bool flag_unroll_loops_set, flag_tracer_set;
 static bool flag_value_profile_transformations_set;
 static bool flag_peel_loops_set, flag_branch_probabilities_set;
-static bool flag_loop_optimize_set;
 
 /* Input file names.  */
 const char **in_fnames;
 
 /* Input file names.  */
 const char **in_fnames;
@@ -526,7 +525,6 @@ decode_options (unsigned int argc, const char **argv)
 #endif
       flag_guess_branch_prob = 1;
       flag_cprop_registers = 1;
 #endif
       flag_guess_branch_prob = 1;
       flag_cprop_registers = 1;
-      flag_loop_optimize = 1;
       flag_if_conversion = 1;
       flag_if_conversion2 = 1;
       flag_ipa_pure_const = 1;
       flag_if_conversion = 1;
       flag_if_conversion2 = 1;
       flag_ipa_pure_const = 1;
@@ -568,7 +566,6 @@ decode_options (unsigned int argc, const char **argv)
       flag_ipa_type_escape = 1;
       flag_strength_reduce = 1;
       flag_rerun_cse_after_loop = 1;
       flag_ipa_type_escape = 1;
       flag_strength_reduce = 1;
       flag_rerun_cse_after_loop = 1;
-      flag_rerun_loop_opt = 1;
       flag_caller_saves = 1;
       flag_peephole2 = 1;
 #ifdef INSN_SCHEDULING
       flag_caller_saves = 1;
       flag_peephole2 = 1;
 #ifdef INSN_SCHEDULING
@@ -859,10 +856,6 @@ common_handle_option (size_t scode, const char *arg, int value,
       flag_branch_probabilities_set = true;
       break;
 
       flag_branch_probabilities_set = true;
       break;
 
-    case OPT_floop_optimize:
-      flag_loop_optimize_set = true;
-      break;
-
     case OPT_fcall_used_:
       fix_register (arg, 0, 1);
       break;
     case OPT_fcall_used_:
       fix_register (arg, 0, 1);
       break;
@@ -939,9 +932,6 @@ common_handle_option (size_t scode, const char *arg, int value,
         flag_tracer = value;
       if (!flag_value_profile_transformations_set)
         flag_value_profile_transformations = value;
         flag_tracer = value;
       if (!flag_value_profile_transformations_set)
         flag_value_profile_transformations = value;
-      /* Old loop optimizer is incompatible with tree profiling.  */
-      if (!flag_loop_optimize_set)
-       flag_loop_optimize = 0;
       break;
 
     case OPT_fprofile_generate:
       break;
 
     case OPT_fprofile_generate:
index 43efc7f..4b30d57 100644 (file)
@@ -633,7 +633,6 @@ init_optimization_passes (void)
   NEXT_PASS (pass_jump2);
   NEXT_PASS (pass_cse);
   NEXT_PASS (pass_gcse);
   NEXT_PASS (pass_jump2);
   NEXT_PASS (pass_cse);
   NEXT_PASS (pass_gcse);
-  NEXT_PASS (pass_loop_optimize);
   NEXT_PASS (pass_jump_bypass);
   NEXT_PASS (pass_cfg);
   NEXT_PASS (pass_branch_prob);
   NEXT_PASS (pass_jump_bypass);
   NEXT_PASS (pass_cfg);
   NEXT_PASS (pass_branch_prob);
index dd76496..8555982 100644 (file)
@@ -1387,8 +1387,7 @@ tree_estimate_probability (void)
   FOR_EACH_BB (bb)
     combine_predictions_for_bb (bb);
 
   FOR_EACH_BB (bb)
     combine_predictions_for_bb (bb);
 
-  if (!flag_loop_optimize)
-    strip_builtin_expect ();
+  strip_builtin_expect ();
   estimate_bb_frequencies (&loops_info);
   free_dominance_info (CDI_POST_DOMINATORS);
   remove_fake_exit_edges ();
   estimate_bb_frequencies (&loops_info);
   free_dominance_info (CDI_POST_DOMINATORS);
   remove_fake_exit_edges ();
index a93b73c..68924f5 100644 (file)
@@ -1,3 +1,8 @@
+2006-02-26  Steven Bosscher  <stevenb.gcc@gmail.com>
+
+       * gcc.dg/20031201-1.c: Don't use -frerun-loop-opt.
+       * g++.old-deja/g++.robertl/eb132.C: Likewise.
+
 2006-02-26  Roger Sayle  <roger@eyesopen.com>
 
        * gcc.dg/fold-even-1.c: New test case.
 2006-02-26  Roger Sayle  <roger@eyesopen.com>
 
        * gcc.dg/fold-even-1.c: New test case.
index 1a5b45a..e5992aa 100644 (file)
@@ -1,10 +1,10 @@
 // { dg-do assemble  }
 // { dg-do assemble  }
-// { dg-options "-O -Wall  -fgcse -frerun-loop-opt" }
+// { dg-options "-O -Wall  -fgcse" }
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de> 
 // Reported against EGCS snaps 98/06/28.
 //
 // Compilation of this program with the flags g++ -Wall -O -fgcse
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de> 
 // Reported against EGCS snaps 98/06/28.
 //
 // Compilation of this program with the flags g++ -Wall -O -fgcse
-// -frerun-loop-opt or -O2 produces spurious warnings in the standard
+// or -O2 produces spurious warnings in the standard
 // header <std/bastring.h>.
 //
 // They vanish if the declaration of a::b is taken out.
 // header <std/bastring.h>.
 //
 // They vanish if the declaration of a::b is taken out.
index e6ea70b..91f2d9d 100644 (file)
@@ -4,7 +4,7 @@
    the jump bypassing pass.  */
 
 /* { dg-do compile } */
    the jump bypassing pass.  */
 
 /* { dg-do compile } */
-/* { dg-options "-O2 -fno-expensive-optimizations -fno-rerun-loop-opt" } */
+/* { dg-options "-O2 -fno-expensive-optimizations" } */
 
 int outbuf[100];
 int outcnt;
 
 int outbuf[100];
 int outcnt;
index bd8260b..fab180d 100644 (file)
@@ -1833,7 +1833,6 @@ backend_init (void)
   init_regs ();
   init_fake_stack_mems ();
   init_alias_once ();
   init_regs ();
   init_fake_stack_mems ();
   init_alias_once ();
-  init_loop ();
   init_reload ();
   init_varasm_once ();
 
   init_reload ();
   init_varasm_once ();
 
index 35d53eb..c935f7e 100644 (file)
@@ -118,7 +118,6 @@ extern int target_flags_explicit;
 extern bool user_defined_section_attribute;
 
 /* See toplev.c.  */
 extern bool user_defined_section_attribute;
 
 /* See toplev.c.  */
-extern int flag_loop_optimize;
 extern int flag_crossjumping;
 extern int flag_if_conversion;
 extern int flag_if_conversion2;
 extern int flag_crossjumping;
 extern int flag_if_conversion;
 extern int flag_if_conversion2;
index a538d5b..c34e198 100644 (file)
@@ -332,7 +332,6 @@ extern struct tree_opt_pass pass_instantiate_virtual_regs;
 extern struct tree_opt_pass pass_jump2;
 extern struct tree_opt_pass pass_cse;
 extern struct tree_opt_pass pass_gcse;
 extern struct tree_opt_pass pass_jump2;
 extern struct tree_opt_pass pass_cse;
 extern struct tree_opt_pass pass_gcse;
-extern struct tree_opt_pass pass_loop_optimize;
 extern struct tree_opt_pass pass_jump_bypass;
 extern struct tree_opt_pass pass_cfg;
 extern struct tree_opt_pass pass_profiling;
 extern struct tree_opt_pass pass_jump_bypass;
 extern struct tree_opt_pass pass_cfg;
 extern struct tree_opt_pass pass_profiling;