aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog18
-rw-r--r--gcc/Makefile.in7
-rw-r--r--gcc/cfgcleanup.c33
-rw-r--r--gcc/common.opt8
-rw-r--r--gcc/doc/invoke.texi21
-rw-r--r--gcc/opts.c10
-rw-r--r--gcc/passes.c1
-rw-r--r--gcc/predict.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.old-deja/g++.robertl/eb132.C4
-rw-r--r--gcc/testsuite/gcc.dg/20031201-1.c2
-rw-r--r--gcc/toplev.c1
-rw-r--r--gcc/toplev.h1
-rw-r--r--gcc/tree-pass.h1
14 files changed, 31 insertions, 84 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 38e3c59..c2e5639 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 59fdd4f..0cd1bec 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -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 \
- 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 \
@@ -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
-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)
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c
index c2c262c..0e67415 100644
--- a/gcc/cfgcleanup.c
+++ b/gcc/cfgcleanup.c
@@ -516,39 +516,6 @@ try_forward_edges (int mode, basic_block b)
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;
diff --git a/gcc/common.opt b/gcc/common.opt
index 36e52fc..4229f14 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -555,10 +555,6 @@ fleading-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
@@ -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
-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
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 6a38582..17efb6c 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -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
--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
@@ -4401,7 +4401,6 @@ compilation time.
-fdelayed-branch @gol
-fguess-branch-probability @gol
-fcprop-registers @gol
--floop-optimize @gol
-fif-conversion @gol
-fif-conversion2 @gol
-ftree-ccp @gol
@@ -4775,12 +4774,6 @@ performed.
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.
@@ -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.
-@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
@@ -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},
-@code{-funroll-loops}, @code{-fpeel-loops}, @code{-ftracer},
-@code{-fno-loop-optimize}.
+@code{-funroll-loops}, @code{-fpeel-loops}, @code{-ftracer}
@end table
@@ -5705,7 +5690,7 @@ Enabled with @option{-fprofile-use}.
@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
diff --git a/gcc/opts.c b/gcc/opts.c
index a5dc609..ce0a5a9 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -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_loop_optimize_set;
/* 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;
- flag_loop_optimize = 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_rerun_loop_opt = 1;
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;
- case OPT_floop_optimize:
- flag_loop_optimize_set = true;
- 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;
- /* Old loop optimizer is incompatible with tree profiling. */
- if (!flag_loop_optimize_set)
- flag_loop_optimize = 0;
break;
case OPT_fprofile_generate:
diff --git a/gcc/passes.c b/gcc/passes.c
index 43efc7f..4b30d57 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -633,7 +633,6 @@ init_optimization_passes (void)
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);
diff --git a/gcc/predict.c b/gcc/predict.c
index dd76496..8555982 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -1387,8 +1387,7 @@ tree_estimate_probability (void)
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 ();
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a93b73c..68924f5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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.
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
index 1a5b45a..e5992aa 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
@@ -1,10 +1,10 @@
// { 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
-// -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.
diff --git a/gcc/testsuite/gcc.dg/20031201-1.c b/gcc/testsuite/gcc.dg/20031201-1.c
index e6ea70b..91f2d9d 100644
--- a/gcc/testsuite/gcc.dg/20031201-1.c
+++ b/gcc/testsuite/gcc.dg/20031201-1.c
@@ -4,7 +4,7 @@
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;
diff --git a/gcc/toplev.c b/gcc/toplev.c
index bd8260b..fab180d 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -1833,7 +1833,6 @@ backend_init (void)
init_regs ();
init_fake_stack_mems ();
init_alias_once ();
- init_loop ();
init_reload ();
init_varasm_once ();
diff --git a/gcc/toplev.h b/gcc/toplev.h
index 35d53eb..c935f7e 100644
--- a/gcc/toplev.h
+++ b/gcc/toplev.h
@@ -118,7 +118,6 @@ extern int target_flags_explicit;
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;
diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h
index a538d5b..c34e198 100644
--- a/gcc/tree-pass.h
+++ b/gcc/tree-pass.h
@@ -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_loop_optimize;
extern struct tree_opt_pass pass_jump_bypass;
extern struct tree_opt_pass pass_cfg;
extern struct tree_opt_pass pass_profiling;