This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[lno] Toplevel driver rewrite
- From: Zdenek Dvorak <rakdver at atrey dot karlin dot mff dot cuni dot cz>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 11 Jun 2004 04:53:05 +0200
- Subject: [lno] Toplevel driver rewrite
Hello,
this patch creates some a bit saner organization of toplevel
passes for the tree level loop optimizer.
Zdenek
Index: ChangeLog.lno
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/ChangeLog.lno,v
retrieving revision 1.1.2.182
diff -c -p -3 -r1.1.2.182 ChangeLog.lno
*** ChangeLog.lno 10 Jun 2004 06:57:04 -0000 1.1.2.182
--- ChangeLog.lno 11 Jun 2004 02:50:43 -0000
***************
*** 1,3 ****
--- 1,83 ----
+ 2004-06-10 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
+
+ * tree-ssa-loop-ch.c: New file.
+ * Makefile.in (tree-ssa-loop-ch.o): Add.
+ (tree-ssa-loop.o): Add SCEV_H and tree-vectorizer.h dependency.
+ * cfgloop.h (current_loops): Declare.
+ * common.opt (fivcanon, fivopts, floop-test, ftree-lim): Add.
+ (ftree-loop-optimize, fscalar-evolutions, fall-data-deps,
+ ftree-ddg): Remove.
+ * flags.h (flag_scalar_evolutions, flag_all_data_deps,
+ flag_tree_loop, flag_ddg): Removed.
+ (flag_tree_lim, flag_ivcanon, flag_ivopts,
+ flag_tree_ssa_loop_test): New.
+ (f_options): Remove scalar-evolutions, all-data-deps,
+ tree-ddg, tree-loop-optimize.
+ * toplev.c (flag_scalar_evolutions, flag_all_data_deps,
+ flag_tree_loop, flag_ddg): Removed.
+ (flag_tree_lim, flag_ivcanon, flag_ivopts,
+ flag_tree_ssa_loop_test): New.
+ * opts.c (decode_options, common_handle_option): Initialize new
+ options.
+ * timevar.def (TV_SCALAR_EVOLUTIONS, TV_ALL_DATA_DEPS): Removed.
+ (TV_TREE_ELIM_CHECKS, TV_DEP_GRAPH, TV_LIM, TV_COMPLETE_UNROLL,
+ TV_UNSWITCH): Added.
+ * tree-flow.h (test_unrolling_and_peeling, test_loop_versioning):
+ Removed.
+ (tree_unroll_loops_completely): Declare.
+ * tree-optimize.c (init_tree_optimization_passes): Reorganize loop
+ optimizer passes.
+ * tree-pass.h (pass_scev, pass_scev_init, pass_scev_anal,
+ pass_scev_depend, pass_scev_linear_transform, pass_scev_iv_canon,
+ pass_scev_elim_checks, pass_scev_vectorize, pass_scev_done, pass_ddg,
+ pass_delete_ddg): Removed.
+ (pass_loop_init, pass_loop_test, pass_lim, pass_unswitch,
+ pass_iv_canon, pass_record_bounds, pass_elim_checks, pass_vectorize,
+ pass_complete_unroll, pass_linear_transform, pass_iv_optimize,
+ pass_loop_done): Declare.
+ * tree-scalar-evolution.c (current_loops): Moved to tree-ssa-loop.c.
+ (dd_info_available): Removed.
+ (scev_init, scev_depend, scev_elim_checks, scev_vectorize, scev_done,
+ gate_scev, gate_scev_analysis, gate_scev_depend, gate_scev_elim_checks,
+ gate_scev_vectorize): Removed.
+ (pass_scev, pass_scev_init, pass_scev_anal, pass_scev_depend,
+ pass_scev_vectorize, pass_scev_linear_transform,
+ pass_scev_iv_canon, pass_scev_elim_checks, pass_scev_done,
+ pass_ddg, pass_delete_ddg): Removed.
+ * tree-scalar-evolution.h (scev_analysis): Declare.
+ (scev_analysis): Export.
+ * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables):
+ Add parameter to control whether find_loop_niter_by_eval is run.
+ (canonicalize_induction_variables): Do not unroll loops.
+ (tree_unroll_loops_completely): Split from
+ canonicalize_induction_variables.
+ * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_init,
+ tree_ssa_iv_optimize_finalize, tree_ssa_iv_optimize,
+ tree_ssa_iv_optimize): Global initialization/finalization removed.
+ * tree-ssa-loop-manip.c (test_unrolling_and_peeling,
+ test_loop_versioning): Removed.
+ * tree-ssa-loop.c: Include tree-scalar-evolution.h and
+ tree-vectorizer.h.
+ (current_loops): Moved from tree-scalar-evolution.c.
+ (tree_ssa_loop_opt): Removed.
+ (gate_loop): Removed.
+ (pass_loop): Modified.
+ (should_duplicate_loop_header_p, mark_defs_for_rewrite,
+ duplicate_blocks, do_while_loop_p, copy_loop_headers,
+ gate_ch, pass_ch): Moved to tree-ssa-loop-ch.c.
+ (tree_ssa_loop_init, pass_loop_init, tree_ssa_loop_im,
+ gate_tree_ssa_loop_im, pass_lim, tree_ssa_loop_unswitch,
+ gate_tree_ssa_loop_unswitch, pass_unswitch, tree_ssa_loop_ivcanon,
+ gate_tree_ssa_loop_ivcanon, pass_iv_canon, tree_ssa_loop_bounds,
+ pass_record_bounds, tree_ssa_loop_test, pass_loop_test,
+ tree_elim_checks, gate_tree_elim_checks, pass_elim_checks,
+ tree_vectorize, gate_tree_vectorize, pass_vectorize,
+ tree_complete_unroll, gate_tree_complete_unroll, pass_complete_unroll,
+ tree_linear_transform, gate_tree_linear_transform,
+ pass_linear_transform, tree_ssa_loop_ivopts, gate_tree_ssa_loop_ivopts,
+ pass_iv_optimize, tree_ssa_loop_done, pass_loop_done): New.
+ * testsuite/gcc.dg/tree-ssa-chrec/*: Updated.
+
2004-06-10 Sebastian Pop <pop@cri.ensmp.fr>
* tree.def: Remove EXPONENTIAL_CHREC node.
Index: Makefile.in
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Makefile.in,v
retrieving revision 1.903.2.158.2.29
diff -c -p -3 -r1.903.2.158.2.29 Makefile.in
*** Makefile.in 27 May 2004 14:31:45 -0000 1.903.2.158.2.29
--- Makefile.in 11 Jun 2004 02:50:43 -0000
*************** OBJS-common = \
*** 885,891 ****
tree-ssa-phiopt.o tree-ssa-forwprop.o tree-nested.o tree-ssa-dse.o \
tree-ssa-dom.o domwalk.o tree-tailcall.o gimple-low.o tree-iterator.o \
tree-phinodes.o tree-ssanames.o tree-sra.o tree-complex.o tree-ssa-loop.o \
! tree-ssa-loop-unswitch.o tree-ssa-loop-niter.o \
tree-vectorizer.o tree-ssa-loop-im.o tree-ssa-loop-manip.o \
tree-ssa-loop-ivopts.o tree-ssa-loop-ivcanon.o tree-dg.o loop-invariant.o \
alias.o bb-reorder.o bitmap.o builtins.o caller-save.o calls.o \
--- 885,891 ----
tree-ssa-phiopt.o tree-ssa-forwprop.o tree-nested.o tree-ssa-dse.o \
tree-ssa-dom.o domwalk.o tree-tailcall.o gimple-low.o tree-iterator.o \
tree-phinodes.o tree-ssanames.o tree-sra.o tree-complex.o tree-ssa-loop.o \
! tree-ssa-loop-unswitch.o tree-ssa-loop-niter.o tree-ssa-loop-ch.o \
tree-vectorizer.o tree-ssa-loop-im.o tree-ssa-loop-manip.o \
tree-ssa-loop-ivopts.o tree-ssa-loop-ivcanon.o tree-dg.o loop-invariant.o \
alias.o bb-reorder.o bitmap.o builtins.o caller-save.o calls.o \
*************** tree-eh.o : tree-eh.c $(TREE_FLOW_H) $(C
*** 1657,1662 ****
--- 1657,1666 ----
tree-ssa-loop.o : tree-ssa-loop.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) cfgloop.h tree-inline.h \
output.h diagnostic.h $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ tree-pass.h flags.h $(SCEV_H) tree-vectorizer.h
+ tree-ssa-loop-ch.o : tree-ssa-loop-ch.c $(TREE_FLOW_H) $(CONFIG_H) \
+ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) cfgloop.h tree-inline.h \
+ output.h diagnostic.h $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
tree-pass.h flags.h
tree-ssa-loop-im.o : tree-ssa-loop-im.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) cfgloop.h domwalk.h $(PARAMS_H)\
Index: cfgloop.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfgloop.h,v
retrieving revision 1.2.4.9.2.16
diff -c -p -3 -r1.2.4.9.2.16 cfgloop.h
*** cfgloop.h 20 May 2004 13:41:20 -0000 1.2.4.9.2.16
--- cfgloop.h 11 Jun 2004 02:50:43 -0000
*************** struct loops
*** 226,231 ****
--- 226,235 ----
int state;
};
+ /* The loop tree currently optimized. */
+
+ extern struct loops *current_loops;
+
/* Flags for loop discovery. */
#define LOOP_TREE 1 /* Build loop hierarchy tree. */
Index: common.opt
===================================================================
RCS file: /cvs/gcc/gcc/gcc/common.opt,v
retrieving revision 1.14.2.13.2.15
diff -c -p -3 -r1.14.2.13.2.15 common.opt
*** common.opt 27 May 2004 14:32:05 -0000 1.14.2.13.2.15
--- common.opt 11 Jun 2004 02:50:43 -0000
*************** Align the start of loops
*** 218,231 ****
falign-loops=
Common RejectNegative Joined UInteger
- fall-data-deps
- Common
- Analyze all the data dependences
-
- ftree-ddg
- Common
- Enable data dependence graph
-
fargument-alias
Common
Specify that arguments may alias each other and globals
--- 218,223 ----
*************** finstrument-functions
*** 438,443 ****
--- 430,443 ----
Common
Instrument function entry and exit with profiling calls
+ fivcanon
+ Common
+ Create canonical induction variables in loops
+
+ fivopts
+ Common
+ Optimize induction variables on trees
+
fkeep-inline-functions
Common
Generate code for functions even if they are fully inlined
*************** floop-optimize2
*** 458,463 ****
--- 458,467 ----
Common
Perform loop optimizations, new passes
+ floop-test
+ Common
+ Run loop optimizer tests
+
fmath-errno
Common
Set errno after built-in math functions
*************** frounding-math
*** 617,626 ****
Common
Disable optimizations that assume default FP rounding behavior
- fscalar-evolutions
- Common
- Enable the analysis of scalar evolutions on trees
-
fsched-interblock
Common
Enable scheduling across basic blocks
--- 621,626 ----
*************** ftree-elim-checks
*** 776,788 ****
Common
Eliminate checks based on scalar evolution informations
! ftree-loop-linear
Common
! Enable linear loop transforms on trees
! ftree-loop-optimize
Common
! Enable loop optimizations on trees
ftree-points-to=
Common Joined RejectNegative
--- 776,788 ----
Common
Eliminate checks based on scalar evolution informations
! ftree-lim
Common
! Enable loop invariant motion on trees
! ftree-loop-linear
Common
! Enable linear loop transforms on trees
ftree-points-to=
Common Joined RejectNegative
Index: flags.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/flags.h,v
retrieving revision 1.86.2.41.2.14
diff -c -p -3 -r1.86.2.41.2.14 flags.h
*** flags.h 27 May 2004 14:32:39 -0000 1.86.2.41.2.14
--- flags.h 11 Jun 2004 02:50:43 -0000
*************** extern int flag_tree_ccp;
*** 736,750 ****
/* Enable SSA-DCE on trees. */
extern int flag_tree_dce;
! /* Enable SSA-CHREC on trees. */
! extern int flag_scalar_evolutions;
! /* Enable the analysis of all the data dependences. */
! extern int flag_all_data_deps;
! /* Enable loop optimizations on trees. */
! extern int flag_tree_loop;
/* Enable linear loop transforms on trees. */
extern int flag_tree_loop_linear;
--- 736,752 ----
/* Enable SSA-DCE on trees. */
extern int flag_tree_dce;
! /* Enable loop invariant motion on trees. */
! extern int flag_tree_lim;
! /* Enable canonical induction variable creation. */
! extern int flag_ivcanon;
! /* Enable induction variable optimization on trees. */
! extern int flag_ivopts;
! /* Enable tree loop optimizer test pass. */
! extern int flag_tree_ssa_loop_test;
/* Enable linear loop transforms on trees. */
extern int flag_tree_loop_linear;
*************** extern int flag_tree_loop_linear;
*** 752,760 ****
/* Enable the elimination of checks on trees. */
extern int flag_tree_elim_checks;
- /* Enable data dependence graph. */
- extern int flag_ddg;
-
/* Enable loop vectorization on trees */
extern int flag_tree_vectorize;
--- 754,759 ----
Index: opts.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/opts.c,v
retrieving revision 1.31.2.22.2.14
diff -c -p -3 -r1.31.2.22.2.14 opts.c
*** opts.c 30 May 2004 09:37:18 -0000 1.31.2.22.2.14
--- opts.c 11 Jun 2004 02:50:43 -0000
*************** decode_options (unsigned int argc, const
*** 544,556 ****
flag_tree_dce = 1;
flag_tree_dom = 1;
flag_tree_dse = 1;
! flag_tree_loop = 1;
flag_tree_vectorize = 0;
flag_tree_pre = 1;
- flag_scalar_evolutions = 1;
- flag_all_data_deps = 0;
flag_tree_elim_checks = 0;
- flag_ddg = 0;
flag_tree_ter = 1;
flag_tree_live_range_split = 1;
flag_tree_sra = 1;
--- 544,555 ----
flag_tree_dce = 1;
flag_tree_dom = 1;
flag_tree_dse = 1;
! flag_tree_lim = 1;
! flag_ivcanon = 1;
! flag_ivopts = 1;
flag_tree_vectorize = 0;
flag_tree_pre = 1;
flag_tree_elim_checks = 0;
flag_tree_ter = 1;
flag_tree_live_range_split = 1;
flag_tree_sra = 1;
*************** common_handle_option (size_t scode, cons
*** 1502,1531 ****
flag_tree_dce = value;
break;
! case OPT_fscalar_evolutions:
! flag_scalar_evolutions = value;
break;
! case OPT_fall_data_deps:
! flag_all_data_deps = value;
break;
! case OPT_ftree_loop_linear:
! flag_tree_loop_linear = value;
break;
! case OPT_ftree_loop_optimize:
! flag_tree_loop = value;
break;
case OPT_ftree_elim_checks:
flag_tree_elim_checks = value;
break;
- case OPT_ftree_ddg:
- flag_ddg = value;
- break;
-
case OPT_ftree_vectorize:
flag_tree_vectorize = value;
break;
--- 1501,1526 ----
flag_tree_dce = value;
break;
! case OPT_ftree_lim:
! flag_tree_lim = value;
break;
! case OPT_fivcanon:
! flag_ivcanon = value;
break;
! case OPT_fivopts:
! flag_ivopts = value;
break;
! case OPT_floop_test:
! flag_tree_ssa_loop_test = value;
break;
case OPT_ftree_elim_checks:
flag_tree_elim_checks = value;
break;
case OPT_ftree_vectorize:
flag_tree_vectorize = value;
break;
Index: timevar.def
===================================================================
RCS file: /cvs/gcc/gcc/gcc/timevar.def,v
retrieving revision 1.14.2.28.2.12
diff -c -p -3 -r1.14.2.28.2.12 timevar.def
*** timevar.def 27 May 2004 14:32:59 -0000 1.14.2.28.2.12
--- timevar.def 11 Jun 2004 02:50:43 -0000
*************** DEFTIMEVAR (TV_TREE_SRA , "
*** 75,84 ****
DEFTIMEVAR (TV_TREE_CCP , "tree CCP")
DEFTIMEVAR (TV_TREE_SPLIT_EDGES , "tree split crit edges")
DEFTIMEVAR (TV_TREE_PRE , "tree PRE")
- DEFTIMEVAR (TV_SCALAR_EVOLUTIONS , "scalar evolutions")
- DEFTIMEVAR (TV_ALL_DATA_DEPS , "all data dependences")
- DEFTIMEVAR (TV_TREE_ELIM_CHECKS , "chrec eliminate checks")
- DEFTIMEVAR (TV_DEP_GRAPH , "data dependences graph")
DEFTIMEVAR (TV_TREE_PHIOPT , "tree linearize phis")
DEFTIMEVAR (TV_TREE_RETURN , "tree merge returns")
DEFTIMEVAR (TV_TREE_FORWPROP , "tree forward propagate")
--- 75,80 ----
*************** DEFTIMEVAR (TV_TREE_LINEAR_TRANSFORM , "
*** 90,95 ****
--- 86,96 ----
DEFTIMEVAR (TV_TREE_LOOP_IVOPTS , "tree iv optimization")
DEFTIMEVAR (TV_TREE_LOOP_IVCANON , "tree canonical iv creation")
DEFTIMEVAR (TV_TREE_VECTORIZATION , "tree loop vectorization")
+ DEFTIMEVAR (TV_TREE_ELIM_CHECKS , "chrec eliminate checks")
+ DEFTIMEVAR (TV_DEP_GRAPH , "data dependences graph")
+ DEFTIMEVAR (TV_LIM , "loop invariant motion")
+ DEFTIMEVAR (TV_COMPLETE_UNROLL , "complete unrolling")
+ DEFTIMEVAR (TV_UNSWITCH , "loop unswitching")
DEFTIMEVAR (TV_TREE_CH , "tree copy headers")
DEFTIMEVAR (TV_TREE_SSA_TO_NORMAL , "tree SSA to normal")
DEFTIMEVAR (TV_TREE_NRV , "tree NRV optimization")
Index: toplev.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/toplev.c,v
retrieving revision 1.654.2.84.2.14
diff -c -p -3 -r1.654.2.84.2.14 toplev.c
*** toplev.c 27 May 2004 14:32:59 -0000 1.654.2.84.2.14
--- toplev.c 11 Jun 2004 02:50:43 -0000
*************** int flag_tree_ccp = 0;
*** 826,849 ****
/* Enable SSA-DCE on trees. */
int flag_tree_dce = 0;
! /* Enable the analysis of the scalar evolutions on trees. */
! int flag_scalar_evolutions = 0;
! /* Enable the analysis of all data dependences. */
! int flag_all_data_deps = 0;
! /* Enable data dependence graph. */
! int flag_ddg = 0;
! /* Enable the elimination of checks on trees. */
! int flag_tree_elim_checks = 0;
/* Enable linear loop transforms on trees. */
int flag_tree_loop_linear = 0;
- /* Enable loop optimizations on trees. */
- int flag_tree_loop = 0;
-
/* Enable loop vectorization on trees */
int flag_tree_vectorize = 0;
--- 826,849 ----
/* Enable SSA-DCE on trees. */
int flag_tree_dce = 0;
! /* Enable the elimination of checks on trees. */
! int flag_tree_elim_checks = 0;
! /* Enable loop invariant motion on trees. */
! int flag_tree_lim;
! /* Enable canonical induction variable creation. */
! int flag_ivcanon;
! /* Enable induction variable optimization on trees. */
! int flag_ivopts;
!
! /* Enable tree loop optimizer test pass. */
! int flag_tree_ssa_loop_test;
/* Enable linear loop transforms on trees. */
int flag_tree_loop_linear = 0;
/* Enable loop vectorization on trees */
int flag_tree_vectorize = 0;
*************** static const lang_independent_options f_
*** 1087,1102 ****
{ "tree-pre", &flag_tree_pre, 1 },
{ "tree-ccp", &flag_tree_ccp, 1 },
{ "tree-dce", &flag_tree_dce, 1 },
- { "scalar-evolutions", &flag_scalar_evolutions, 1 },
- { "all-data-deps", &flag_all_data_deps, 1 },
{ "tree-elim-checks", &flag_tree_elim_checks, 1 },
- { "tree-ddg", &flag_ddg, 1 },
{ "tree-dominator-opts", &flag_tree_dom, 1 },
{ "tree-copyrename", &flag_tree_copyrename, 1 },
{ "tree-dse", &flag_tree_dse, 1 },
{ "tree-combine-temps", &flag_tree_combine_temps, 1 },
{ "tree-ter", &flag_tree_ter, 1 },
- { "tree-loop-optimize", &flag_tree_loop, 1 },
{ "tree-loop-linear", &flag_tree_loop_linear, 1},
{ "tree-vectorize", &flag_tree_vectorize, 1},
{ "tree-lrs", &flag_tree_live_range_split, 1 },
--- 1087,1098 ----
Index: tree-flow.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-flow.h,v
retrieving revision 1.1.4.177.2.31
diff -c -p -3 -r1.1.4.177.2.31 tree-flow.h
*** tree-flow.h 30 May 2004 09:32:34 -0000 1.1.4.177.2.31
--- tree-flow.h 11 Jun 2004 02:50:43 -0000
*************** struct loops *tree_loop_optimizer_init (
*** 616,630 ****
void tree_ssa_lim (struct loops *loops);
void tree_ssa_iv_optimize (struct loops *);
void canonicalize_induction_variables (struct loops *loops);
- void test_unrolling_and_peeling (struct loops *loops);
bool tree_duplicate_loop_to_header_edge (struct loop *, edge, struct loops *,
unsigned int, sbitmap,
edge, edge *,
unsigned int *, int);
bool tree_duplicate_loop_to_exit (struct loop *loop, struct loops *loops);
void create_iv (tree, tree, tree, struct loop *, block_stmt_iterator *, bool,
tree *, tree *);
- void test_loop_versioning (struct loops *loops);
struct loop *tree_ssa_loop_version (struct loops *, struct loop *, tree,
basic_block *);
void update_lv_condition (basic_block *, tree);
--- 616,629 ----
void tree_ssa_lim (struct loops *loops);
void tree_ssa_iv_optimize (struct loops *);
void canonicalize_induction_variables (struct loops *loops);
bool tree_duplicate_loop_to_header_edge (struct loop *, edge, struct loops *,
unsigned int, sbitmap,
edge, edge *,
unsigned int *, int);
+ void tree_unroll_loops_completely (struct loops *);
bool tree_duplicate_loop_to_exit (struct loop *loop, struct loops *loops);
void create_iv (tree, tree, tree, struct loop *, block_stmt_iterator *, bool,
tree *, tree *);
struct loop *tree_ssa_loop_version (struct loops *, struct loop *, tree,
basic_block *);
void update_lv_condition (basic_block *, tree);
Index: tree-optimize.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-optimize.c,v
retrieving revision 1.1.4.98.2.20
diff -c -p -3 -r1.1.4.98.2.20 tree-optimize.c
*** tree-optimize.c 27 May 2004 14:33:04 -0000 1.1.4.98.2.20
--- tree-optimize.c 11 Jun 2004 02:50:43 -0000
*************** init_tree_optimization_passes (void)
*** 309,315 ****
NEXT_PASS (pass_fold_builtins);
NEXT_PASS (pass_split_crit_edges);
NEXT_PASS (pass_pre);
- NEXT_PASS (pass_scev);
NEXT_PASS (pass_loop);
NEXT_PASS (DUP_PASS (pass_dominator));
NEXT_PASS (DUP_PASS (pass_redundant_phi));
--- 309,314 ----
*************** init_tree_optimization_passes (void)
*** 326,342 ****
NEXT_PASS (pass_del_cfg);
*p = NULL;
! p = &pass_scev.sub;
! NEXT_PASS (pass_scev_init);
! NEXT_PASS (pass_scev_anal);
! NEXT_PASS (pass_scev_depend);
! NEXT_PASS (pass_scev_elim_checks);
! NEXT_PASS (pass_scev_iv_canon);
! NEXT_PASS (pass_scev_linear_transform);
! NEXT_PASS (pass_ddg);
! NEXT_PASS (pass_scev_vectorize);
! NEXT_PASS (pass_delete_ddg);
! NEXT_PASS (pass_scev_done);
*p = NULL;
#undef NEXT_PASS
--- 325,343 ----
NEXT_PASS (pass_del_cfg);
*p = NULL;
! p = &pass_loop.sub;
! NEXT_PASS (pass_loop_init);
! NEXT_PASS (pass_lim);
! NEXT_PASS (pass_unswitch);
! NEXT_PASS (pass_iv_canon);
! NEXT_PASS (pass_record_bounds);
! NEXT_PASS (pass_loop_test);
! NEXT_PASS (pass_elim_checks);
! NEXT_PASS (pass_vectorize);
! NEXT_PASS (pass_complete_unroll);
! NEXT_PASS (pass_linear_transform);
! NEXT_PASS (pass_iv_optimize);
! NEXT_PASS (pass_loop_done);
*p = NULL;
#undef NEXT_PASS
Index: tree-pass.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-pass.h,v
retrieving revision 1.1.4.9
diff -c -p -3 -r1.1.4.9 tree-pass.h
*** tree-pass.h 21 Mar 2004 03:20:20 -0000 1.1.4.9
--- tree-pass.h 11 Jun 2004 02:50:43 -0000
*************** extern struct tree_opt_pass pass_sra;
*** 102,118 ****
extern struct tree_opt_pass pass_tail_recursion;
extern struct tree_opt_pass pass_tail_calls;
extern struct tree_opt_pass pass_loop;
! extern struct tree_opt_pass pass_scev;
! extern struct tree_opt_pass pass_scev_init;
! extern struct tree_opt_pass pass_scev_anal;
! extern struct tree_opt_pass pass_scev_depend;
! extern struct tree_opt_pass pass_scev_linear_transform;
! extern struct tree_opt_pass pass_scev_iv_canon;
! extern struct tree_opt_pass pass_scev_elim_checks;
! extern struct tree_opt_pass pass_scev_vectorize;
! extern struct tree_opt_pass pass_scev_done;
! extern struct tree_opt_pass pass_ddg;
! extern struct tree_opt_pass pass_delete_ddg;
extern struct tree_opt_pass pass_ch;
extern struct tree_opt_pass pass_ccp;
extern struct tree_opt_pass pass_build_ssa;
--- 102,119 ----
extern struct tree_opt_pass pass_tail_recursion;
extern struct tree_opt_pass pass_tail_calls;
extern struct tree_opt_pass pass_loop;
! extern struct tree_opt_pass pass_loop_init;
! extern struct tree_opt_pass pass_loop_test;
! extern struct tree_opt_pass pass_lim;
! extern struct tree_opt_pass pass_unswitch;
! extern struct tree_opt_pass pass_iv_canon;
! extern struct tree_opt_pass pass_record_bounds;
! extern struct tree_opt_pass pass_elim_checks;
! extern struct tree_opt_pass pass_vectorize;
! extern struct tree_opt_pass pass_complete_unroll;
! extern struct tree_opt_pass pass_linear_transform;
! extern struct tree_opt_pass pass_iv_optimize;
! extern struct tree_opt_pass pass_loop_done;
extern struct tree_opt_pass pass_ch;
extern struct tree_opt_pass pass_ccp;
extern struct tree_opt_pass pass_build_ssa;
Index: tree-scalar-evolution.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-scalar-evolution.c,v
retrieving revision 1.1.2.55
diff -c -p -3 -r1.1.2.55 tree-scalar-evolution.c
*** tree-scalar-evolution.c 10 Jun 2004 06:57:04 -0000 1.1.2.55
--- tree-scalar-evolution.c 11 Jun 2004 02:50:43 -0000
*************** tree chrec_top;
*** 273,286 ****
happen, then it qualifies it with chrec_bot. */
tree chrec_bot;
- static struct loops *current_loops;
static bitmap already_instantiated;
static htab_t scalar_evolution_info;
- /* Flag to indicate availability of dependency info. */
- static bool dd_info_available;
-
/* Constructs a new SCEV_INFO_STR structure. */
--- 273,282 ----
*************** gather_stats_on_scev_database (void)
*** 2846,2862 ****
static void initialize_scalar_evolutions_analyzer (void);
- static void scev_init (void);
- static void scev_analysis (void);
- static void scev_depend (void);
- static void scev_elim_checks (void);
- static void scev_vectorize (void);
- static void scev_done (void);
- static bool gate_scev (void);
- static bool gate_scev_analysis (void);
- static bool gate_scev_depend (void);
- static bool gate_scev_elim_checks (void);
- static bool gate_scev_vectorize (void);
/* Initializer. */
--- 2842,2847 ----
*************** scev_reset (void)
*** 2911,2927 ****
}
}
- /* Initialize the analysis of scalar evolutions. */
-
- static void
- scev_init (void)
- {
- current_loops = tree_loop_optimizer_init (NULL, flag_tree_loop != 0);
- if (!current_loops)
- return;
- scev_initialize (current_loops);
- }
-
/* Checks whether OP behaves as a simple affine iv of LOOP in STMT and returns
its BASE and STEP if possible. */
--- 2896,2901 ----
*************** simple_iv (struct loop *loop, tree stmt,
*** 2964,2970 ****
/* Runs the analysis of scalar evolutions. */
! static void
scev_analysis (void)
{
varray_type exit_conditions;
--- 2938,2944 ----
/* Runs the analysis of scalar evolutions. */
! void
scev_analysis (void)
{
varray_type exit_conditions;
*************** scev_analysis (void)
*** 2972,2982 ****
VARRAY_GENERIC_PTR_INIT (exit_conditions, 37, "exit_conditions");
select_loops_exit_conditions (current_loops, &exit_conditions);
- #if 0
- dump_file = stderr;
- dump_flags = 31;
- #endif
-
if (dump_file && (dump_flags & TDF_STATS))
analyze_scalar_evolution_for_all_loop_phi_nodes (exit_conditions);
--- 2946,2951 ----
*************** scev_analysis (void)
*** 2984,3030 ****
VARRAY_CLEAR (exit_conditions);
}
- /* Runs the analysis of all the data dependences. */
-
- static void
- scev_depend (void)
- {
- analyze_all_data_dependences (current_loops);
- dd_info_available = true;
- }
-
- static void
- scev_elim_checks (void)
- {
- eliminate_redundant_checks ();
- }
-
- /* Runs the linear loop transformations. */
-
- static void
- scev_linear_transform (void)
- {
- linear_transform_loops (current_loops);
- }
-
- /* Runs the canonical iv creation pass. */
-
- static void
- scev_iv_canon (void)
- {
- canonicalize_induction_variables (current_loops);
- }
-
- /* Runs the vectorization pass. */
-
- static void
- scev_vectorize (void)
- {
- bitmap_clear (vars_to_rename);
-
- vectorize_loops (current_loops);
- }
-
/* Finalize the scalar evolution analysis. */
void
--- 2953,2958 ----
*************** scev_finalize (void)
*** 3032,3294 ****
{
htab_delete (scalar_evolution_info);
BITMAP_XFREE (already_instantiated);
- current_loops = NULL;
- }
-
- /* Finalize the scalar evolution passes. */
-
- static void
- scev_done (void)
- {
- if (current_loops)
- {
- loop_optimizer_finalize (current_loops, NULL);
- scev_finalize ();
- cleanup_tree_cfg ();
- }
-
- dd_info_available = false;
- }
-
- static bool
- gate_scev (void)
- {
- return (flag_scalar_evolutions != 0
- || flag_tree_vectorize != 0
- || flag_all_data_deps != 0
- || flag_tree_elim_checks != 0
- || flag_tree_loop_linear != 0);
- }
-
- static bool
- gate_scev_analysis (void)
- {
- return current_loops && flag_scalar_evolutions != 0;
- }
-
- static bool
- gate_scev_depend (void)
- {
- return current_loops && flag_all_data_deps != 0;
- }
-
- static bool
- gate_scev_elim_checks (void)
- {
- return current_loops && flag_tree_elim_checks != 0;
- }
-
- static bool
- gate_scev_linear_transform (void)
- {
- return current_loops && flag_tree_loop_linear != 0;
}
- static bool
- gate_scev_iv_canon (void)
- {
- return (current_loops
- /* Only run this pass if we will be able to eliminate the
- superfluous ivs we create. */
- && flag_tree_loop);
- }
-
- static bool
- gate_scev_vectorize (void)
- {
- return current_loops && flag_tree_vectorize != 0;
- }
-
- static bool
- gate_ddg (void)
- {
- return dd_info_available && flag_ddg && flag_scalar_evolutions != 0;
- }
-
- static bool
- gate_delete_ddg (void)
- {
- return flag_ddg && flag_scalar_evolutions != 0;
- }
-
- static void
- create_dg_graph (void)
- {
- dg_create_graph (current_loops);
- }
-
- struct tree_opt_pass pass_scev =
- {
- NULL, /* name */
- gate_scev, /* gate */
- NULL, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- 0, /* tv_id */
- PROP_cfg | PROP_ssa, /* properties_required */
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- TODO_dump_func /* todo_flags_finish */
- };
-
- struct tree_opt_pass pass_scev_init =
- {
- NULL, /* name */
- NULL, /* gate */
- scev_init, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- 0, /* tv_id */
- PROP_cfg | PROP_ssa, /* properties_required */
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- 0 /* todo_flags_finish */
- };
-
- struct tree_opt_pass pass_scev_anal =
- {
- "scev", /* name */
- gate_scev_analysis, /* gate */
- scev_analysis, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- TV_SCALAR_EVOLUTIONS, /* tv_id */
- PROP_cfg | PROP_ssa, /* properties_required */
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- 0 /* todo_flags_finish */
- };
-
- struct tree_opt_pass pass_scev_depend =
- {
- "ddall", /* name */
- gate_scev_depend, /* gate */
- scev_depend, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- TV_ALL_DATA_DEPS, /* tv_id */
- PROP_cfg | PROP_ssa, /* properties_required */
- PROP_scev, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- 0 /* todo_flags_finish */
- };
-
- struct tree_opt_pass pass_scev_vectorize =
- {
- "vect", /* name */
- gate_scev_vectorize, /* gate */
- scev_vectorize, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- TV_TREE_VECTORIZATION, /* tv_id */
- PROP_cfg | PROP_ssa, /* properties_required */
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- TODO_dump_func | TODO_rename_vars /* todo_flags_finish */
- };
-
- struct tree_opt_pass pass_scev_linear_transform =
- {
- "ltrans", /* name */
- gate_scev_linear_transform, /* gate */
- scev_linear_transform, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- TV_TREE_LINEAR_TRANSFORM, /* tv_id */
- PROP_cfg | PROP_ssa, /* properties_required */
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- TODO_dump_func /* todo_flags_finish */
- };
-
- struct tree_opt_pass pass_scev_iv_canon =
- {
- "ivcan", /* name */
- gate_scev_iv_canon, /* gate */
- scev_iv_canon, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- TV_TREE_LOOP_IVCANON, /* tv_id */
- PROP_cfg | PROP_ssa, /* properties_required */
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- TODO_dump_func /* todo_flags_finish */
- };
-
- struct tree_opt_pass pass_scev_elim_checks =
- {
- "elck", /* name */
- gate_scev_elim_checks, /* gate */
- scev_elim_checks, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- TV_TREE_ELIM_CHECKS, /* tv_id */
- PROP_cfg | PROP_ssa, /* properties_required */
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- TODO_dump_func /* todo_flags_finish */
- };
-
- struct tree_opt_pass pass_scev_done =
- {
- NULL, /* name */
- NULL, /* gate */
- scev_done, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- 0, /* tv_id */
- PROP_cfg | PROP_ssa, /* properties_required */
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- 0 /* todo_flags_finish */
- };
-
- struct tree_opt_pass pass_ddg =
- {
- "ddg", /* name */
- gate_ddg, /* gate */
- create_dg_graph, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- TV_DEP_GRAPH, /* tv_id */
- PROP_scev, /* properties_required */
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- 0 /* todo_flags_finish */
- };
-
- struct tree_opt_pass pass_delete_ddg =
- {
- "delete ddg", /* name */
- gate_delete_ddg, /* gate */
- dg_delete_graph, /* execute */
- NULL, /* sub */
- NULL, /* next */
- 0, /* static_pass_number */
- TV_DEP_GRAPH, /* tv_id */
- 0, /* properties_required */
- 0, /* properties_provided */
- 0, /* properties_destroyed */
- 0, /* todo_flags_start */
- 0 /* todo_flags_finish */
- };
--- 2960,2964 ----
Index: tree-scalar-evolution.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-scalar-evolution.h,v
retrieving revision 1.1.2.12
diff -c -p -3 -r1.1.2.12 tree-scalar-evolution.h
*** tree-scalar-evolution.h 10 Jun 2004 06:57:04 -0000 1.1.2.12
--- tree-scalar-evolution.h 11 Jun 2004 02:50:43 -0000
*************** extern tree analyze_scalar_evolution_in_
*** 36,41 ****
--- 36,42 ----
extern tree instantiate_parameters (struct loop *, tree);
extern void eliminate_redundant_checks (void);
extern void gather_stats_on_scev_database (void);
+ extern void scev_analysis (void);
bool simple_iv (struct loop *, tree, tree, tree *, tree *);
Index: tree-ssa-loop-ch.c
===================================================================
RCS file: tree-ssa-loop-ch.c
diff -N tree-ssa-loop-ch.c
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- tree-ssa-loop-ch.c 11 Jun 2004 02:50:43 -0000
***************
*** 0 ****
--- 1,341 ----
+ /* Loop header copying on trees.
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ GCC is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING. If not, write to the Free
+ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm.h"
+ #include "tree.h"
+ #include "rtl.h"
+ #include "tm_p.h"
+ #include "hard-reg-set.h"
+ #include "basic-block.h"
+ #include "output.h"
+ #include "diagnostic.h"
+ #include "tree-flow.h"
+ #include "tree-dump.h"
+ #include "tree-pass.h"
+ #include "timevar.h"
+ #include "cfgloop.h"
+ #include "tree-inline.h"
+ #include "flags.h"
+ #include "tree-inline.h"
+
+ /* Duplicates headers of loops if they are small enough, so that the statements
+ in the loop body are always executed when the loop is entered. This
+ increases effectivity of code motion optimizations, and reduces the need
+ for loop preconditioning. */
+
+ /* Check whether we should duplicate HEADER of LOOP. At most *LIMIT
+ instructions should be duplicated, limit is decreased by the actual
+ amount. */
+
+ static bool
+ should_duplicate_loop_header_p (basic_block header, struct loop *loop,
+ int *limit)
+ {
+ block_stmt_iterator bsi;
+ tree last;
+
+ /* Do not copy one block more than once (we do not really want to do
+ loop peeling here). */
+ if (header->aux)
+ return false;
+
+ if (!header->succ)
+ abort ();
+ if (!header->succ->succ_next)
+ return false;
+ if (header->succ->succ_next->succ_next)
+ return false;
+ if (flow_bb_inside_loop_p (loop, header->succ->dest)
+ && flow_bb_inside_loop_p (loop, header->succ->succ_next->dest))
+ return false;
+
+ /* If this is not the original loop header, we want it to have just
+ one predecessor in order to match the && pattern. */
+ if (header != loop->header
+ && header->pred->pred_next)
+ return false;
+
+ last = last_stmt (header);
+ if (TREE_CODE (last) != COND_EXPR)
+ return false;
+
+ /* Approximately copy the conditions that used to be used in jump.c --
+ at most 20 insns and no calls. */
+ for (bsi = bsi_start (header); !bsi_end_p (bsi); bsi_next (&bsi))
+ {
+ last = bsi_stmt (bsi);
+
+ if (TREE_CODE (last) == LABEL_EXPR)
+ continue;
+
+ if (get_call_expr_in (last))
+ return false;
+
+ *limit -= estimate_num_insns (last);
+ if (*limit < 0)
+ return false;
+ }
+
+ return true;
+ }
+
+ /* Marks variables defined in basic block BB for rewriting. */
+
+ static void
+ mark_defs_for_rewrite (basic_block bb)
+ {
+ tree stmt, var;
+ block_stmt_iterator bsi;
+ stmt_ann_t ann;
+ def_optype defs;
+ vdef_optype vdefs;
+ unsigned i;
+
+ for (stmt = phi_nodes (bb); stmt; stmt = TREE_CHAIN (stmt))
+ {
+ var = PHI_RESULT (stmt);
+ bitmap_set_bit (vars_to_rename, SSA_NAME_VERSION (var));
+ }
+
+ for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
+ {
+ stmt = bsi_stmt (bsi);
+ get_stmt_operands (stmt);
+ ann = stmt_ann (stmt);
+
+ defs = DEF_OPS (ann);
+ for (i = 0; i < NUM_DEFS (defs); i++)
+ {
+ var = DEF_OP (defs, i);
+ bitmap_set_bit (vars_to_rename, SSA_NAME_VERSION (var));
+ }
+
+ vdefs = VDEF_OPS (ann);
+ for (i = 0; i < NUM_VDEFS (vdefs); i++)
+ {
+ var = VDEF_RESULT (vdefs, i);
+ bitmap_set_bit (vars_to_rename, SSA_NAME_VERSION (var));
+ }
+ }
+ }
+
+ /* Duplicates destinations of edges in BBS_TO_DUPLICATE. */
+
+ static void
+ duplicate_blocks (varray_type bbs_to_duplicate)
+ {
+ unsigned i;
+ edge preheader_edge, e, e1;
+ basic_block header, new_header;
+ tree phi, new_phi, var;
+
+ /* TODO: It should be quite easy to keep the dominance information
+ up-to-date. */
+ free_dominance_info (CDI_DOMINATORS);
+
+ for (i = 0; i < VARRAY_ACTIVE_SIZE (bbs_to_duplicate); i++)
+ {
+ preheader_edge = VARRAY_GENERIC_PTR_NOGC (bbs_to_duplicate, i);
+ header = preheader_edge->dest;
+
+ /* It is sufficient to rewrite the definitions, since the uses of
+ the operands defined outside of the duplicated basic block are
+ still valid (every basic block that dominates the original block
+ also dominates the duplicate). */
+ mark_defs_for_rewrite (header);
+ }
+
+ for (i = 0; i < VARRAY_ACTIVE_SIZE (bbs_to_duplicate); i++)
+ {
+ preheader_edge = VARRAY_GENERIC_PTR_NOGC (bbs_to_duplicate, i);
+ header = preheader_edge->dest;
+
+ if (!header->aux)
+ abort ();
+ header->aux = NULL;
+
+ new_header = duplicate_block (header, preheader_edge);
+
+ /* Create the phi nodes on on entry to new_header. */
+ for (phi = phi_nodes (header), var = PENDING_STMT (preheader_edge);
+ phi;
+ phi = TREE_CHAIN (phi), var = TREE_CHAIN (var))
+ {
+ new_phi = create_phi_node (PHI_RESULT (phi), new_header);
+ add_phi_arg (&new_phi, TREE_VALUE (var), preheader_edge);
+ }
+ PENDING_STMT (preheader_edge) = NULL;
+
+ /* Add the phi arguments to the outgoing edges. */
+ for (e = header->succ; e; e = e->succ_next)
+ {
+ for (e1 = new_header->succ; e1->dest != e->dest; e1 = e1->succ_next)
+ continue;
+
+ for (phi = phi_nodes (e->dest); phi; phi = TREE_CHAIN (phi))
+ {
+ tree def = phi_element_for_edge (phi, e)->def;
+ add_phi_arg (&phi, def, e1);
+ }
+ }
+ }
+
+ calculate_dominance_info (CDI_DOMINATORS);
+
+ rewrite_ssa_into_ssa (vars_to_rename);
+ bitmap_clear (vars_to_rename);
+ }
+
+ /* Checks whether LOOP is a do-while style loop. */
+
+ static bool
+ do_while_loop_p (struct loop *loop)
+ {
+ tree stmt = last_stmt (loop->latch);
+
+ /* If the latch of the loop is not empty, it is not a do-while loop. */
+ if (stmt
+ && TREE_CODE (stmt) != LABEL_EXPR)
+ return false;
+
+ /* If the header contains just a condition, it is not a do-while loop. */
+ stmt = last_and_only_stmt (loop->header);
+ if (stmt
+ && TREE_CODE (stmt) == COND_EXPR)
+ return false;
+
+ return true;
+ }
+
+ /* For all loops, copy the condition at the end of the loop body in front
+ of the loop. This is beneficial since it increases efficiency of
+ code motion optimizations. It also saves one jump on entry to the loop. */
+
+ static void
+ copy_loop_headers (void)
+ {
+ struct loops *loops;
+ unsigned i;
+ struct loop *loop;
+ basic_block header;
+ edge preheader_edge;
+ varray_type bbs_to_duplicate = NULL;
+
+ loops = tree_loop_optimizer_init (dump_file, false);
+ if (!loops)
+ return;
+
+ /* We do not try to keep the information about irreducible regions
+ up-to-date. */
+ loops->state &= ~LOOPS_HAVE_MARKED_IRREDUCIBLE_REGIONS;
+
+ #ifdef ENABLE_CHECKING
+ verify_loop_structure (loops);
+ #endif
+
+ for (i = 1; i < loops->num; i++)
+ {
+ /* Copy at most 20 insns. */
+ int limit = 20;
+
+ loop = loops->parray[i];
+ preheader_edge = loop_preheader_edge (loop);
+ header = preheader_edge->dest;
+
+ /* If the loop is already a do-while style one (either because it was
+ written as such, or because jump threading transformed it into one),
+ we might be in fact peeling the first iteration of the loop. This
+ in general is not a good idea. */
+ if (do_while_loop_p (loop))
+ continue;
+
+ /* Iterate the header copying up to limit; this takes care of the cases
+ like while (a && b) {...}, where we want to have both of the conditions
+ copied. TODO -- handle while (a || b) - like cases, by not requiring
+ the header to have just a single successor and copying up to
+ postdominator.
+
+ We do not really copy the blocks immediately, so that we do not have
+ to worry about updating loop structures, and also so that we do not
+ have to rewrite variables out of and into ssa form for each block.
+ Instead we just record the block into worklist and duplicate all of
+ them at once. */
+ while (should_duplicate_loop_header_p (header, loop, &limit))
+ {
+ if (!bbs_to_duplicate)
+ VARRAY_GENERIC_PTR_NOGC_INIT (bbs_to_duplicate, 10,
+ "bbs_to_duplicate");
+ VARRAY_PUSH_GENERIC_PTR_NOGC (bbs_to_duplicate, preheader_edge);
+ header->aux = &header->aux;
+
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file,
+ "Scheduled basic block %d for duplication.\n",
+ header->index);
+
+ /* Find a successor of header that is inside a loop; i.e. the new
+ header after the condition is copied. */
+ if (flow_bb_inside_loop_p (loop, header->succ->dest))
+ preheader_edge = header->succ;
+ else
+ preheader_edge = header->succ->succ_next;
+ header = preheader_edge->dest;
+ }
+ }
+
+ loop_optimizer_finalize (loops, NULL);
+
+ if (bbs_to_duplicate)
+ {
+ duplicate_blocks (bbs_to_duplicate);
+ VARRAY_FREE (bbs_to_duplicate);
+ }
+
+ /* Run cleanup_tree_cfg here regardless of whether we have done anything, so
+ that we cleanup the blocks created in order to get the loops into a
+ canonical shape. */
+ cleanup_tree_cfg ();
+ }
+
+ static bool
+ gate_ch (void)
+ {
+ return flag_tree_ch != 0;
+ }
+
+ struct tree_opt_pass pass_ch =
+ {
+ "ch", /* name */
+ gate_ch, /* gate */
+ copy_loop_headers, /* execute */
+ NULL, /* sub */
+ NULL, /* next */
+ 0, /* static_pass_number */
+ TV_TREE_CH, /* tv_id */
+ PROP_cfg | PROP_ssa, /* properties_required */
+ 0, /* properties_provided */
+ 0, /* properties_destroyed */
+ 0, /* todo_flags_start */
+ (TODO_dump_func
+ | TODO_verify_ssa) /* todo_flags_finish */
+ };
Index: tree-ssa-loop-ivcanon.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-ssa-loop-ivcanon.c,v
retrieving revision 1.1.2.11
diff -c -p -3 -r1.1.2.11 tree-ssa-loop-ivcanon.c
*** tree-ssa-loop-ivcanon.c 8 Jun 2004 15:44:24 -0000 1.1.2.11
--- tree-ssa-loop-ivcanon.c 11 Jun 2004 02:50:43 -0000
*************** try_unroll_loop_completely (struct loops
*** 179,189 ****
/* Adds a canonical induction variable to LOOP if suitable. LOOPS is the loops
tree. CREATE_IV is true if we may create a new iv. COMPLETELY_UNROLL is
true if we should do complete unrolling even if it may cause the code
! growth. */
static void
canonicalize_loop_induction_variables (struct loops *loops, struct loop *loop,
! bool create_iv, bool completely_unroll)
{
edge exit = NULL;
tree niter;
--- 179,191 ----
/* Adds a canonical induction variable to LOOP if suitable. LOOPS is the loops
tree. CREATE_IV is true if we may create a new iv. COMPLETELY_UNROLL is
true if we should do complete unrolling even if it may cause the code
! growth. If TRY_EVAL is true, we try to determine the number of iterations
! of a loop by direct evaluation. */
static void
canonicalize_loop_induction_variables (struct loops *loops, struct loop *loop,
! bool create_iv, bool completely_unroll,
! bool try_eval)
{
edge exit = NULL;
tree niter;
*************** canonicalize_loop_induction_variables (s
*** 192,202 ****
if (TREE_CODE (niter) == INTEGER_CST)
{
- #ifdef ENABLE_CHECKING
- tree nit;
- edge ex;
- #endif
-
exit = loop_exit_edge (loop, 0);
if (!just_once_each_iteration_p (loop, exit->src))
return;
--- 194,199 ----
*************** canonicalize_loop_induction_variables (s
*** 207,223 ****
niter = fold (build (PLUS_EXPR, TREE_TYPE (niter), niter,
convert (TREE_TYPE (niter),
integer_minus_one_node)));
-
- #ifdef ENABLE_CHECKING
- nit = find_loop_niter_by_eval (loop, &ex);
-
- if (ex == exit
- && TREE_CODE (nit) == INTEGER_CST
- && !operand_equal_p (niter, convert (TREE_TYPE (niter), nit), 0))
- abort ();
- #endif
}
! else
niter = find_loop_niter_by_eval (loop, &exit);
if (TREE_CODE (niter) != INTEGER_CST)
--- 204,211 ----
niter = fold (build (PLUS_EXPR, TREE_TYPE (niter), niter,
convert (TREE_TYPE (niter),
integer_minus_one_node)));
}
! else if (try_eval)
niter = find_loop_niter_by_eval (loop, &exit);
if (TREE_CODE (niter) != INTEGER_CST)
*************** canonicalize_induction_variables (struct
*** 245,259 ****
{
unsigned i;
struct loop *loop;
! bool create_ivs = flag_unroll_loops || flag_branch_on_count_reg;
! bool completely_unroll_loops = flag_unroll_loops;
for (i = 1; i < loops->num; i++)
{
loop = loops->parray[i];
if (loop)
! canonicalize_loop_induction_variables (loops, loop, create_ivs,
! completely_unroll_loops);
}
}
--- 233,262 ----
{
unsigned i;
struct loop *loop;
!
! for (i = 1; i < loops->num; i++)
! {
! loop = loops->parray[i];
!
! if (loop)
! canonicalize_loop_induction_variables (loops, loop, true, false, true);
! }
! }
!
! /* Unroll LOOPS completely if they iterate just few times. */
!
! void
! tree_unroll_loops_completely (struct loops *loops)
! {
! unsigned i;
! struct loop *loop;
for (i = 1; i < loops->num; i++)
{
loop = loops->parray[i];
if (loop)
! canonicalize_loop_induction_variables (loops, loop, false, true,
! !flag_ivcanon);
}
}
Index: tree-ssa-loop-ivopts.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-ssa-loop-ivopts.c,v
retrieving revision 1.1.2.35
diff -c -p -3 -r1.1.2.35 tree-ssa-loop-ivopts.c
*** tree-ssa-loop-ivopts.c 9 Jun 2004 23:03:58 -0000 1.1.2.35
--- tree-ssa-loop-ivopts.c 11 Jun 2004 02:50:44 -0000
*************** tree_ssa_iv_optimize_init (struct loops
*** 932,941 ****
VARRAY_GENERIC_PTR_NOGC_INIT (data->iv_uses, 20, "iv_uses");
VARRAY_GENERIC_PTR_NOGC_INIT (data->iv_candidates, 20, "iv_candidates");
VARRAY_GENERIC_PTR_NOGC_INIT (decl_rtl_to_reset, 20, "decl_rtl_to_reset");
-
- scev_initialize (loops);
- estimate_numbers_of_iterations (loops);
- scev_reset ();
}
/* Allocates an induction variable with given initial value BASE and step STEP
--- 932,937 ----
*************** tree_ssa_iv_optimize_finalize (struct lo
*** 4629,4637 ****
VARRAY_FREE (decl_rtl_to_reset);
VARRAY_FREE (data->iv_uses);
VARRAY_FREE (data->iv_candidates);
-
- scev_finalize ();
- free_numbers_of_iterations_estimates (loops);
}
/* Optimizes the LOOP. Returns true if anything changed. */
--- 4625,4630 ----
*************** tree_ssa_iv_optimize (struct loops *loop
*** 4714,4720 ****
struct loop *loop;
struct ivopts_data data;
- timevar_push (TV_TREE_LOOP_IVOPTS);
tree_ssa_iv_optimize_init (loops, &data);
/* Optimize the loops starting with the innermost ones. */
--- 4707,4712 ----
*************** tree_ssa_iv_optimize (struct loops *loop
*** 4747,4752 ****
}
tree_ssa_iv_optimize_finalize (loops, &data);
-
- timevar_pop (TV_TREE_LOOP_IVOPTS);
}
--- 4739,4742 ----
Index: tree-ssa-loop-manip.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-ssa-loop-manip.c,v
retrieving revision 1.1.2.18
diff -c -p -3 -r1.1.2.18 tree-ssa-loop-manip.c
*** tree-ssa-loop-manip.c 9 Jun 2004 10:32:31 -0000 1.1.2.18
--- tree-ssa-loop-manip.c 11 Jun 2004 02:50:44 -0000
*************** tree_duplicate_loop_to_header_edge (stru
*** 429,462 ****
return true;
}
- /* Unrolls and peels each loop twice for testing. */
-
- void
- test_unrolling_and_peeling (struct loops *loops)
- {
- struct loop *loop;
- unsigned i;
-
- for (i = 1; i < loops->num; i++)
- {
- loop = loops->parray[i];
-
- if (!loop
- || loop->inner)
- continue;
-
- tree_duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop),
- loops, 2, NULL, NULL, NULL, NULL, 0);
- verify_loop_structure (loops);
- verify_ssa ();
-
- tree_duplicate_loop_to_header_edge (loop, loop_latch_edge (loop),
- loops, 2, NULL, NULL, NULL, NULL, 0);
- verify_loop_structure (loops);
- verify_ssa ();
- }
- }
-
/*---------------------------------------------------------------------------
Loop versioning
---------------------------------------------------------------------------*/
--- 429,434 ----
*************** tree_ssa_loop_version (struct loops *loo
*** 667,672 ****
--- 639,645 ----
/* Update loop versioning condition.
This is used by other optimizations/transformations to disable
one loop version. */
+
void
update_lv_condition (basic_block *bb, tree new_cond)
{
*************** update_lv_condition (basic_block *bb, tr
*** 684,723 ****
abort ();
}
- void
- test_loop_versioning (struct loops *loops)
- {
- struct loop *loop;
- unsigned i;
- tree cond_expr;
-
- for (i = 1; i < loops->num; i = i+ 2)
- {
- struct loop *nloop;
- basic_block condition_bb;
- loop = loops->parray[i];
-
- if (!loop)
- continue;
-
- cond_expr = build (EQ_EXPR, boolean_type_node,
- integer_one_node,
- integer_zero_node);
-
- nloop = tree_ssa_loop_version (loops, loop, cond_expr, &condition_bb);
-
- if (nloop)
- {
- verify_loop_structure (loops);
- verify_dominators (CDI_DOMINATORS);
- verify_ssa ();
-
- update_lv_condition (&condition_bb, boolean_true_node);
- }
- }
-
- }
-
/* Add exit phis for the USE on EXIT. */
static void
--- 657,662 ----
Index: tree-ssa-loop.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-ssa-loop.c,v
retrieving revision 1.1.2.3.2.21
diff -c -p -3 -r1.1.2.3.2.21 tree-ssa-loop.c
*** tree-ssa-loop.c 30 May 2004 16:51:16 -0000 1.1.2.3.2.21
--- tree-ssa-loop.c 11 Jun 2004 02:50:44 -0000
*************** Software Foundation, 59 Temple Place - S
*** 37,42 ****
--- 37,48 ----
#include "tree-inline.h"
#include "flags.h"
#include "tree-inline.h"
+ #include "tree-scalar-evolution.h"
+ #include "tree-vectorizer.h"
+
+ /* The loop tree currently optimized. */
+
+ struct loops *current_loops;
/* Initializes the loop structures. DUMP is the file to that the details
about the analysis should be dumped. If CANONICALIZE_SSA is true, loop
*************** tree_loop_optimizer_init (FILE *dump, bo
*** 70,429 ****
return loops;
}
! /* The main entry into loop optimization pass. PHASE indicates which dump file
! from the DUMP_FILES array to use when dumping debugging information.
! FNDECL is the current function decl. */
static void
! tree_ssa_loop_opt (void)
{
! struct loops *loops;
! loops = tree_loop_optimizer_init (dump_file, true);
! if (loops)
! {
! #if 0
! /* Test unrolling and peeling. */
! test_unrolling_and_peeling (loops);
! #endif
! #if 0
! test_loop_versioning (loops);
! #endif
! /* Move the expensive loop invariants. */
! tree_ssa_lim (loops);
! /* Unswitch the loops. */
! if (flag_unswitch_loops)
! tree_ssa_unswitch_loops (loops);
! /* Optimize the induction variables. */
! tree_ssa_iv_optimize (loops);
! loop_optimizer_finalize (loops,
! (dump_flags & TDF_DETAILS ? dump_file : NULL));
! cleanup_tree_cfg ();
! }
}
static bool
! gate_loop (void)
{
! return flag_tree_loop != 0;
}
! struct tree_opt_pass pass_loop =
{
! "loop", /* name */
! gate_loop, /* gate */
! tree_ssa_loop_opt, /* execute */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
! TV_TREE_LOOP, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
! TODO_ggc_collect, /* todo_flags_start */
! TODO_dump_func | TODO_verify_ssa | TODO_ggc_collect /* todo_flags_finish */
};
! /* Check whether we should duplicate HEADER of LOOP. At most *LIMIT
! instructions should be duplicated, limit is decreased by the actual
! amount. */
! static bool
! should_duplicate_loop_header_p (basic_block header, struct loop *loop,
! int *limit)
{
! block_stmt_iterator bsi;
! tree last;
! /* Do not copy one block more than once (we do not really want to do
! loop peeling here). */
! if (header->aux)
! return false;
!
! if (!header->succ)
! abort ();
! if (!header->succ->succ_next)
! return false;
! if (header->succ->succ_next->succ_next)
! return false;
! if (flow_bb_inside_loop_p (loop, header->succ->dest)
! && flow_bb_inside_loop_p (loop, header->succ->succ_next->dest))
! return false;
!
! /* If this is not the original loop header, we want it to have just
! one predecessor in order to match the && pattern. */
! if (header != loop->header
! && header->pred->pred_next)
! return false;
!
! last = last_stmt (header);
! if (TREE_CODE (last) != COND_EXPR)
! return false;
!
! /* Approximately copy the conditions that used to be used in jump.c --
! at most 20 insns and no calls. */
! for (bsi = bsi_start (header); !bsi_end_p (bsi); bsi_next (&bsi))
! {
! last = bsi_stmt (bsi);
!
! if (TREE_CODE (last) == LABEL_EXPR)
! continue;
!
! if (get_call_expr_in (last))
! return false;
!
! *limit -= estimate_num_insns (last);
! if (*limit < 0)
! return false;
! }
! return true;
}
! /* Marks variables defined in basic block BB for rewriting. */
static void
! mark_defs_for_rewrite (basic_block bb)
{
! tree stmt, var;
! block_stmt_iterator bsi;
! stmt_ann_t ann;
! def_optype defs;
! vdef_optype vdefs;
! unsigned i;
!
! for (stmt = phi_nodes (bb); stmt; stmt = TREE_CHAIN (stmt))
! {
! var = PHI_RESULT (stmt);
! bitmap_set_bit (vars_to_rename, SSA_NAME_VERSION (var));
! }
!
! for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
! {
! stmt = bsi_stmt (bsi);
! get_stmt_operands (stmt);
! ann = stmt_ann (stmt);
!
! defs = DEF_OPS (ann);
! for (i = 0; i < NUM_DEFS (defs); i++)
! {
! var = DEF_OP (defs, i);
! bitmap_set_bit (vars_to_rename, SSA_NAME_VERSION (var));
! }
!
! vdefs = VDEF_OPS (ann);
! for (i = 0; i < NUM_VDEFS (vdefs); i++)
! {
! var = VDEF_RESULT (vdefs, i);
! bitmap_set_bit (vars_to_rename, SSA_NAME_VERSION (var));
! }
! }
! }
!
! /* Duplicates destinations of edges in BBS_TO_DUPLICATE. */
!
! static void
! duplicate_blocks (varray_type bbs_to_duplicate)
! {
! unsigned i;
! edge preheader_edge, e, e1;
! basic_block header, new_header;
! tree phi, new_phi, var;
!
! /* TODO: It should be quite easy to keep the dominance information
! up-to-date. */
! free_dominance_info (CDI_DOMINATORS);
!
! for (i = 0; i < VARRAY_ACTIVE_SIZE (bbs_to_duplicate); i++)
! {
! preheader_edge = VARRAY_GENERIC_PTR_NOGC (bbs_to_duplicate, i);
! header = preheader_edge->dest;
!
! /* It is sufficient to rewrite the definitions, since the uses of
! the operands defined outside of the duplicated basic block are
! still valid (every basic block that dominates the original block
! also dominates the duplicate). */
! mark_defs_for_rewrite (header);
! }
!
! for (i = 0; i < VARRAY_ACTIVE_SIZE (bbs_to_duplicate); i++)
! {
! preheader_edge = VARRAY_GENERIC_PTR_NOGC (bbs_to_duplicate, i);
! header = preheader_edge->dest;
!
! if (!header->aux)
! abort ();
! header->aux = NULL;
!
! new_header = duplicate_block (header, preheader_edge);
!
! /* Create the phi nodes on on entry to new_header. */
! for (phi = phi_nodes (header), var = PENDING_STMT (preheader_edge);
! phi;
! phi = TREE_CHAIN (phi), var = TREE_CHAIN (var))
! {
! new_phi = create_phi_node (PHI_RESULT (phi), new_header);
! add_phi_arg (&new_phi, TREE_VALUE (var), preheader_edge);
! }
! PENDING_STMT (preheader_edge) = NULL;
!
! /* Add the phi arguments to the outgoing edges. */
! for (e = header->succ; e; e = e->succ_next)
! {
! for (e1 = new_header->succ; e1->dest != e->dest; e1 = e1->succ_next)
! continue;
!
! for (phi = phi_nodes (e->dest); phi; phi = TREE_CHAIN (phi))
! {
! tree def = phi_element_for_edge (phi, e)->def;
! add_phi_arg (&phi, def, e1);
! }
! }
! }
! calculate_dominance_info (CDI_DOMINATORS);
! rewrite_ssa_into_ssa (vars_to_rename);
! bitmap_clear (vars_to_rename);
}
! /* Checks whether LOOP is a do-while style loop. */
static bool
! do_while_loop_p (struct loop *loop)
{
! tree stmt = last_stmt (loop->latch);
! /* If the latch of the loop is not empty, it is not a do-while loop. */
! if (stmt
! && TREE_CODE (stmt) != LABEL_EXPR)
! return false;
!
! /* If the header contains just a condition, it is not a do-while loop. */
! stmt = last_and_only_stmt (loop->header);
! if (stmt
! && TREE_CODE (stmt) == COND_EXPR)
! return false;
! return true;
}
! /* For all loops, copy the condition at the end of the loop body in front
! of the loop. This is beneficial since it increases efficiency of
! code motion optimizations. It also saves one jump on entry to the loop. */
static void
! copy_loop_headers (void)
{
! struct loops *loops;
! unsigned i;
! struct loop *loop;
! basic_block header;
! edge preheader_edge;
! varray_type bbs_to_duplicate = NULL;
! loops = tree_loop_optimizer_init (dump_file, false);
! if (!loops)
return;
-
- /* We do not try to keep the information about irreducible regions
- up-to-date. */
- loops->state &= ~LOOPS_HAVE_MARKED_IRREDUCIBLE_REGIONS;
! #ifdef ENABLE_CHECKING
! verify_loop_structure (loops);
! #endif
! for (i = 1; i < loops->num; i++)
! {
! /* Copy at most 20 insns. */
! int limit = 20;
!
! loop = loops->parray[i];
! preheader_edge = loop_preheader_edge (loop);
! header = preheader_edge->dest;
!
! /* If the loop is already a do-while style one (either because it was
! written as such, or because jump threading transformed it into one),
! we might be in fact peeling the first iteration of the loop. This
! in general is not a good idea. */
! if (do_while_loop_p (loop))
! continue;
!
! /* Iterate the header copying up to limit; this takes care of the cases
! like while (a && b) {...}, where we want to have both of the conditions
! copied. TODO -- handle while (a || b) - like cases, by not requiring
! the header to have just a single successor and copying up to
! postdominator.
!
! We do not really copy the blocks immediately, so that we do not have
! to worry about updating loop structures, and also so that we do not
! have to rewrite variables out of and into ssa form for each block.
! Instead we just record the block into worklist and duplicate all of
! them at once. */
! while (should_duplicate_loop_header_p (header, loop, &limit))
! {
! if (!bbs_to_duplicate)
! VARRAY_GENERIC_PTR_NOGC_INIT (bbs_to_duplicate, 10,
! "bbs_to_duplicate");
! VARRAY_PUSH_GENERIC_PTR_NOGC (bbs_to_duplicate, preheader_edge);
! header->aux = &header->aux;
!
! if (dump_file && (dump_flags & TDF_DETAILS))
! fprintf (dump_file,
! "Scheduled basic block %d for duplication.\n",
! header->index);
!
! /* Find a successor of header that is inside a loop; i.e. the new
! header after the condition is copied. */
! if (flow_bb_inside_loop_p (loop, header->succ->dest))
! preheader_edge = header->succ;
! else
! preheader_edge = header->succ->succ_next;
! header = preheader_edge->dest;
! }
! }
!
! loop_optimizer_finalize (loops, NULL);
!
! if (bbs_to_duplicate)
! {
! duplicate_blocks (bbs_to_duplicate);
! VARRAY_FREE (bbs_to_duplicate);
! }
!
! /* Run cleanup_tree_cfg here regardless of whether we have done anything, so
! that we cleanup the blocks created in order to get the loops into a
! canonical shape. */
! cleanup_tree_cfg ();
}
static bool
! gate_ch (void)
{
! return flag_tree_ch != 0;
}
! struct tree_opt_pass pass_ch =
{
! "ch", /* name */
! gate_ch, /* gate */
! copy_loop_headers, /* execute */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
! TV_TREE_CH, /* tv_id */
PROP_cfg | PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
! (TODO_dump_func
! | TODO_verify_ssa) /* todo_flags_finish */
};
--- 76,500 ----
return loops;
}
! /* The loop superpass. */
!
! static bool
! gate_loop (void)
! {
! return true;
! }
!
! struct tree_opt_pass pass_loop =
! {
! "loop", /* name */
! gate_loop, /* gate */
! NULL, /* execute */
! NULL, /* sub */
! NULL, /* next */
! 0, /* static_pass_number */
! TV_TREE_LOOP, /* tv_id */
! PROP_cfg, /* properties_required */
! 0, /* properties_provided */
! 0, /* properties_destroyed */
! TODO_ggc_collect, /* todo_flags_start */
! TODO_dump_func | TODO_verify_ssa | TODO_ggc_collect /* todo_flags_finish */
! };
!
! /* Loop optimizer initialization. */
static void
! tree_ssa_loop_init (void)
{
! current_loops = tree_loop_optimizer_init (dump_file, true);
! if (!current_loops)
! return;
! scev_initialize (current_loops);
! }
! struct tree_opt_pass pass_loop_init =
! {
! "loopinit", /* name */
! NULL, /* gate */
! tree_ssa_loop_init, /* execute */
! NULL, /* sub */
! NULL, /* next */
! 0, /* static_pass_number */
! 0, /* tv_id */
! PROP_cfg, /* properties_required */
! 0, /* properties_provided */
! 0, /* properties_destroyed */
! 0, /* todo_flags_start */
! 0 /* todo_flags_finish */
! };
! /* Loop invariant motion pass. */
! static void
! tree_ssa_loop_im (void)
! {
! if (!current_loops)
! return;
! tree_ssa_lim (current_loops);
! }
! static bool
! gate_tree_ssa_loop_im (void)
! {
! return flag_tree_lim != 0;
! }
!
! struct tree_opt_pass pass_lim =
! {
! "lim", /* name */
! gate_tree_ssa_loop_im, /* gate */
! tree_ssa_loop_im, /* execute */
! NULL, /* sub */
! NULL, /* next */
! 0, /* static_pass_number */
! TV_LIM, /* tv_id */
! PROP_cfg, /* properties_required */
! 0, /* properties_provided */
! 0, /* properties_destroyed */
! 0, /* todo_flags_start */
! TODO_dump_func /* todo_flags_finish */
! };
! /* Loop unswitching pass. */
! static void
! tree_ssa_loop_unswitch (void)
! {
! if (!current_loops)
! return;
! tree_ssa_unswitch_loops (current_loops);
}
static bool
! gate_tree_ssa_loop_unswitch (void)
{
! return flag_unswitch_loops != 0;
}
! struct tree_opt_pass pass_unswitch =
{
! "unswitch", /* name */
! gate_tree_ssa_loop_unswitch, /* gate */
! tree_ssa_loop_unswitch, /* execute */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
! TV_UNSWITCH, /* tv_id */
PROP_cfg, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
! 0, /* todo_flags_start */
! TODO_dump_func /* todo_flags_finish */
};
! /* Canonical induction variable creation pass. */
! static void
! tree_ssa_loop_ivcanon (void)
{
! if (!current_loops)
! return;
! canonicalize_induction_variables (current_loops);
! }
! static bool
! gate_tree_ssa_loop_ivcanon (void)
! {
! return flag_ivcanon != 0;
}
! struct tree_opt_pass pass_iv_canon =
! {
! "ivcanon", /* name */
! gate_tree_ssa_loop_ivcanon, /* gate */
! tree_ssa_loop_ivcanon, /* execute */
! NULL, /* sub */
! NULL, /* next */
! 0, /* static_pass_number */
! TV_TREE_LOOP_IVCANON, /* tv_id */
! PROP_cfg | PROP_ssa, /* properties_required */
! 0, /* properties_provided */
! 0, /* properties_destroyed */
! 0, /* todo_flags_start */
! TODO_dump_func /* todo_flags_finish */
! };
!
! /* Record bounds on numbers of iterations of loops. */
static void
! tree_ssa_loop_bounds (void)
{
! if (!current_loops)
! return;
! estimate_numbers_of_iterations (current_loops);
! scev_reset ();
! }
! struct tree_opt_pass pass_record_bounds =
! {
! "bounds", /* name */
! NULL, /* gate */
! tree_ssa_loop_bounds, /* execute */
! NULL, /* sub */
! NULL, /* next */
! 0, /* static_pass_number */
! 0, /* tv_id */
! PROP_cfg | PROP_ssa, /* properties_required */
! 0, /* properties_provided */
! 0, /* properties_destroyed */
! 0, /* todo_flags_start */
! 0 /* todo_flags_finish */
! };
!
! /* A pass for testing of loop infrastructure. */
!
! static void
! tree_ssa_loop_test (void)
! {
! scev_analysis ();
! analyze_all_data_dependences (current_loops);
}
! static bool
! gate_tree_ssa_loop_test (void)
! {
! return flag_tree_ssa_loop_test != 0;
! }
!
! struct tree_opt_pass pass_loop_test =
! {
! "lptest", /* name */
! gate_tree_ssa_loop_test, /* gate */
! tree_ssa_loop_test, /* execute */
! NULL, /* sub */
! NULL, /* next */
! 0, /* static_pass_number */
! 0, /* tv_id */
! PROP_cfg, /* properties_required */
! 0, /* properties_provided */
! 0, /* properties_destroyed */
! 0, /* todo_flags_start */
! 0 /* todo_flags_finish */
! };
!
! /* Removal of redundant checks. */
!
! static void
! tree_elim_checks (void)
! {
! if (!current_loops)
! return;
!
! eliminate_redundant_checks ();
! }
static bool
! gate_tree_elim_checks (void)
{
! return flag_tree_elim_checks != 0;
! }
! struct tree_opt_pass pass_elim_checks =
! {
! "elck", /* name */
! gate_tree_elim_checks, /* gate */
! tree_elim_checks, /* execute */
! NULL, /* sub */
! NULL, /* next */
! 0, /* static_pass_number */
! TV_TREE_ELIM_CHECKS, /* tv_id */
! PROP_cfg | PROP_ssa, /* properties_required */
! 0, /* properties_provided */
! 0, /* properties_destroyed */
! 0, /* todo_flags_start */
! TODO_dump_func /* todo_flags_finish */
! };
! /* Vectorizer. */
!
! static void
! tree_vectorize (void)
! {
! if (!current_loops)
! return;
!
! timevar_push (TV_DEP_GRAPH);
! dg_create_graph (current_loops);
! timevar_pop (TV_DEP_GRAPH);
!
! bitmap_clear (vars_to_rename);
! vectorize_loops (current_loops);
!
! timevar_push (TV_DEP_GRAPH);
! dg_delete_graph ();
! timevar_pop (TV_DEP_GRAPH);
! }
!
! static bool
! gate_tree_vectorize (void)
! {
! return flag_tree_vectorize != 0;
}
! struct tree_opt_pass pass_vectorize =
! {
! "vect", /* name */
! gate_tree_vectorize, /* gate */
! tree_vectorize, /* execute */
! NULL, /* sub */
! NULL, /* next */
! 0, /* static_pass_number */
! TV_TREE_VECTORIZATION, /* tv_id */
! PROP_cfg | PROP_ssa, /* properties_required */
! 0, /* properties_provided */
! 0, /* properties_destroyed */
! 0, /* todo_flags_start */
! TODO_dump_func | TODO_rename_vars /* todo_flags_finish */
! };
!
! /* Complete unrolling of loops. */
static void
! tree_complete_unroll (void)
{
! if (!current_loops)
! return;
! tree_unroll_loops_completely (current_loops);
! }
!
! static bool
! gate_tree_complete_unroll (void)
! {
! return flag_unroll_loops != 0;
! }
!
! struct tree_opt_pass pass_complete_unroll =
! {
! "cunroll", /* name */
! gate_tree_complete_unroll, /* gate */
! tree_complete_unroll, /* execute */
! NULL, /* sub */
! NULL, /* next */
! 0, /* static_pass_number */
! TV_COMPLETE_UNROLL, /* tv_id */
! PROP_cfg | PROP_ssa, /* properties_required */
! 0, /* properties_provided */
! 0, /* properties_destroyed */
! 0, /* todo_flags_start */
! TODO_dump_func /* todo_flags_finish */
! };
!
! /* Loop nest optimizations. */
!
! static void
! tree_linear_transform (void)
! {
! if (!current_loops)
return;
! timevar_push (TV_DEP_GRAPH);
! dg_create_graph (current_loops);
! timevar_pop (TV_DEP_GRAPH);
!
! linear_transform_loops (current_loops);
!
! timevar_push (TV_DEP_GRAPH);
! dg_delete_graph ();
! timevar_pop (TV_DEP_GRAPH);
! }
! static bool
! gate_tree_linear_transform (void)
! {
! return flag_tree_loop_linear != 0;
! }
!
! struct tree_opt_pass pass_linear_transform =
! {
! "ltrans", /* name */
! gate_tree_linear_transform, /* gate */
! tree_linear_transform, /* execute */
! NULL, /* sub */
! NULL, /* next */
! 0, /* static_pass_number */
! TV_TREE_LINEAR_TRANSFORM, /* tv_id */
! PROP_cfg | PROP_ssa, /* properties_required */
! 0, /* properties_provided */
! 0, /* properties_destroyed */
! 0, /* todo_flags_start */
! TODO_dump_func /* todo_flags_finish */
! };
!
! /* Induction variable optimizations. */
!
! static void
! tree_ssa_loop_ivopts (void)
! {
! if (!current_loops)
! return;
!
! tree_ssa_iv_optimize (current_loops);
}
static bool
! gate_tree_ssa_loop_ivopts (void)
{
! return flag_ivopts != 0;
}
! struct tree_opt_pass pass_iv_optimize =
{
! "ivopts", /* name */
! gate_tree_ssa_loop_ivopts, /* gate */
! tree_ssa_loop_ivopts, /* execute */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
! TV_TREE_LOOP_IVOPTS, /* tv_id */
PROP_cfg | PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
! TODO_dump_func /* todo_flags_finish */
! };
!
! /* Loop optimizer finalization. */
!
! static void
! tree_ssa_loop_done (void)
! {
! if (!current_loops)
! return;
!
! free_numbers_of_iterations_estimates (current_loops);
! scev_finalize ();
! loop_optimizer_finalize (current_loops,
! (dump_flags & TDF_DETAILS ? dump_file : NULL));
! current_loops = NULL;
! cleanup_tree_cfg ();
! }
!
! struct tree_opt_pass pass_loop_done =
! {
! "loopdone", /* name */
! NULL, /* gate */
! tree_ssa_loop_done, /* execute */
! NULL, /* sub */
! NULL, /* next */
! 0, /* static_pass_number */
! 0, /* tv_id */
! PROP_cfg, /* properties_required */
! 0, /* properties_provided */
! 0, /* properties_destroyed */
! 0, /* todo_flags_start */
! 0 /* todo_flags_finish */
};
Index: testsuite/gcc.dg/tree-ssa-chrec/20040216-1.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/20040216-1.c,v
retrieving revision 1.1.2.1
diff -c -p -3 -r1.1.2.1 20040216-1.c
*** testsuite/gcc.dg/tree-ssa-chrec/20040216-1.c 16 Feb 2004 21:59:29 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/20040216-1.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,7 ****
/* Test dependence graph. */
/* { dg-do compile } */
! /* { dg-options "-O2 -fscalar-evolutions -ftree-ddg -c -fdump-tree-all" } */
#define N 16
void bar(int *);
--- 1,7 ----
/* Test dependence graph. */
/* { dg-do compile } */
! /* { dg-options "-O2 -floop-test -c -fdump-tree-all" } */
#define N 16
void bar(int *);
*************** void foo()
*** 23,26 ****
}
/* Find 4 Dependence nodes */
! /* { dg-final { scan-tree-dump-times "Dependence Node" 4 "ddg"} } */
--- 23,26 ----
}
/* Find 4 Dependence nodes */
! /* { dg-final { scan-tree-dump-times "Dependence Node" 4 "lptest"} } */
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-01.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-01.c,v
retrieving revision 1.1.2.7
diff -c -p -3 -r1.1.2.7 ssa-chrec-01.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-01.c 23 Mar 2004 20:13:29 -0000 1.1.2.7
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-01.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main(void)
{
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main(void)
{
*************** int main(void)
*** 29,35 ****
a -> {{22, +, 7}_1, +, 1}_2
c -> {{{23, +, 7}_1, +, 1}_2, +, 1}_3
*/
! /* { dg-final { scan-tree-dump-times "nb_iterations 4" 1 "scev"} } */
! /* { dg-final { scan-tree-dump-times "nb_iterations 6" 1 "scev"} } */
--- 29,35 ----
a -> {{22, +, 7}_1, +, 1}_2
c -> {{{23, +, 7}_1, +, 1}_2, +, 1}_3
*/
! /* { dg-final { scan-tree-dump-times "nb_iterations 4" 1 "lptest"} } */
! /* { dg-final { scan-tree-dump-times "nb_iterations 6" 1 "lptest"} } */
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-02.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-02.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-02.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-02.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-02.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main(void)
{
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main(void)
{
*************** int main(void)
*** 24,28 ****
b -> {8, +, 5}_2
a -> {{11, +, 19}_1, +, 2}_2
*/
! /* { dg-final { scan-tree-dump-times "nb_iterations 3" 1 "scev"} } */
! /* { dg-final { scan-tree-dump-times "nb_iterations 9" 1 "scev"} } */
--- 24,28 ----
b -> {8, +, 5}_2
a -> {{11, +, 19}_1, +, 2}_2
*/
! /* { dg-final { scan-tree-dump-times "nb_iterations 3" 1 "lptest"} } */
! /* { dg-final { scan-tree-dump-times "nb_iterations 9" 1 "lptest"} } */
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-03.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-03.c,v
retrieving revision 1.1.2.4
diff -c -p -3 -r1.1.2.4 ssa-chrec-03.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-03.c 3 Mar 2004 18:42:17 -0000 1.1.2.4
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-03.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-stats" } */
int main(void)
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-stats" } */
int main(void)
*************** int main(void)
*** 24,29 ****
b -> {8, +, 6}_2
a -> {{11, +, 8}_1, +, 1}_2
*/
! /* { dg-final { scan-tree-dump-times "nb_iterations 5" 1 "scev"} } */
! /* { dg-final { scan-tree-dump-times "nb_iterations 7" 1 "scev"} } */
--- 24,29 ----
b -> {8, +, 6}_2
a -> {{11, +, 8}_1, +, 1}_2
*/
! /* { dg-final { scan-tree-dump-times "nb_iterations 5" 1 "lptest"} } */
! /* { dg-final { scan-tree-dump-times "nb_iterations 7" 1 "lptest"} } */
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-04.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-04.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-04.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-04.c 3 Mar 2004 18:42:17 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-04.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -ftree-elim-checks -fdump-tree-scev-details -fdump-tree-elck-details -fdump-tree-optimized" } */
void remove_me (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -ftree-elim-checks -fdump-tree-lptest-details -fdump-tree-elck-details -fdump-tree-optimized" } */
void remove_me (void);
*************** int main(void)
*** 17,21 ****
}
}
! /* { dg-final { scan-tree-dump-times "nb_iterations 28" 1 "scev"} } */
/* { dg-final { scan-tree-dump-times "remove_me" 0 "optimized"} } */
--- 17,21 ----
}
}
! /* { dg-final { scan-tree-dump-times "nb_iterations 28" 1 "lptest"} } */
/* { dg-final { scan-tree-dump-times "remove_me" 0 "optimized"} } */
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-05.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-05.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-05.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-05.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-05.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main(void)
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main(void)
*************** int main(void)
*** 28,32 ****
b -> {23, +, 5}_2
c -> {{22, +, 1}_1, +, 1}_3
*/
! /* { dg-final { scan-tree-dump-times "nb_iterations 28" 1 "scev"} } */
! /* { dg-final { scan-tree-dump-times "nb_iterations 6" 1 "scev"} } */
--- 28,32 ----
b -> {23, +, 5}_2
c -> {{22, +, 1}_1, +, 1}_3
*/
! /* { dg-final { scan-tree-dump-times "nb_iterations 28" 1 "lptest"} } */
! /* { dg-final { scan-tree-dump-times "nb_iterations 6" 1 "lptest"} } */
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-06.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-06.c,v
retrieving revision 1.1.2.7
diff -c -p -3 -r1.1.2.7 ssa-chrec-06.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-06.c 23 Mar 2004 20:13:29 -0000 1.1.2.7
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-06.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -ftree-elim-checks -fdump-tree-scev-details -fdump-tree-optimized" } */
void remove_me (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -ftree-elim-checks -fdump-tree-lptest-details -fdump-tree-optimized" } */
void remove_me (void);
*************** int main(void)
*** 45,50 ****
}
}
! /* { dg-final { scan-tree-dump-times "nb_iterations 2" 1 "scev"} } */
! /* { dg-final { scan-tree-dump-times "nb_iterations 6" 1 "scev"} } */
/* { dg-final { scan-tree-dump-times "remove_me" 0 "optimized"} } */
--- 45,50 ----
}
}
! /* { dg-final { scan-tree-dump-times "nb_iterations 2" 1 "lptest"} } */
! /* { dg-final { scan-tree-dump-times "nb_iterations 6" 1 "lptest"} } */
/* { dg-final { scan-tree-dump-times "remove_me" 0 "optimized"} } */
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-09.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-09.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-09.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-09.c 23 Mar 2004 20:13:29 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-09.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main(void)
{
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main(void)
{
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-10.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-10.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-10.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-10.c 3 Mar 2004 18:42:17 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-10.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev -fall-data-deps -fdump-tree-ddall" } */
void bar (int);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest " } */
void bar (int);
*************** int foo (void)
*** 26,30 ****
x-1 -> {15, +, 1}_1
*/
! /* { dg-final { scan-tree-dump-times "nb_iterations 39" 1 "scev"} } */
/* { dg-final { diff-tree-dumps "ddall" } } */
--- 26,30 ----
x-1 -> {15, +, 1}_1
*/
! /* { dg-final { scan-tree-dump-times "nb_iterations 39" 1 "lptest"} } */
/* { dg-final { diff-tree-dumps "ddall" } } */
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-11.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-11.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-11.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-11.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-11.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main(void)
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main(void)
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-12.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-12.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-12.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-12.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-12.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int bar (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int bar (void);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-13.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-13.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-13.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-13.c 23 Mar 2004 20:13:29 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-13.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int foo (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int foo (void);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-14.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-14.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-14.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-14.c 23 Mar 2004 20:13:29 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-14.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int foo (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int foo (void);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-15.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-15.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-15.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-15.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-15.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main (void)
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main (void)
*************** int main (void)
*** 19,23 ****
a -> {100, +, -1}_1
*/
! /* { dg-final { scan-tree-dump-times "nb_iterations 50" 1 "scev"} } */
--- 19,23 ----
a -> {100, +, -1}_1
*/
! /* { dg-final { scan-tree-dump-times "nb_iterations 50" 1 "lptest"} } */
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-16.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-16.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-16.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-16.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-16.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main (void)
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main (void)
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-17.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-17.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-17.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-17.c 23 Mar 2004 20:13:29 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-17.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int bar (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int bar (void);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-18.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-18.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-18.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-18.c 23 Mar 2004 20:13:29 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-18.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int bar (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int bar (void);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-19.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-19.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-19.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-19.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-19.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main ()
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main ()
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-20.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-20.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-20.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-20.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-20.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main ()
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main ()
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-21.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-21.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-21.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-21.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-21.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main ()
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main ()
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-22.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-22.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-22.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-22.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-22.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main ()
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main ()
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-23.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-23.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-23.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-23.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-23.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main ()
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main ()
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-24.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-24.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-24.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-24.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-24.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int bar (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int bar (void);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-25.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-25.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-25.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-25.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-25.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int bar (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int bar (void);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-26.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-26.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-26.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-26.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-26.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int bar (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int bar (void);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-27.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-27.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-27.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-27.c 23 Mar 2004 20:13:29 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-27.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int bar (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int bar (void);
*************** int foo ()
*** 34,40 ****
*/
! /* { dg-final { scan-tree-dump-times "nb_iterations 100" 1 "scev"} } */
! /* { dg-final { scan-tree-dump-times "nb_iterations 26" 1 "scev"} } */
--- 34,40 ----
*/
! /* { dg-final { scan-tree-dump-times "nb_iterations 100" 1 "lptest"} } */
! /* { dg-final { scan-tree-dump-times "nb_iterations 26" 1 "lptest"} } */
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-28.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-28.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-28.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-28.c 23 Mar 2004 20:13:29 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-28.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int bar (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int bar (void);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-29.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-29.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-29.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-29.c 23 Mar 2004 20:13:29 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-29.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int bar (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int bar (void);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-30.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-30.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-30.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-30.c 23 Mar 2004 20:13:29 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-30.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details -fall-data-deps -fdump-tree-ddall" } */
void foo (int);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details " } */
void foo (int);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-31.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-31.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-31.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-31.c 23 Mar 2004 20:13:29 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-31.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details -fall-data-deps -fdump-tree-ddall" } */
void bar (short);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details " } */
void bar (short);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-32.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-32.c,v
retrieving revision 1.1.2.7
diff -c -p -3 -r1.1.2.7 ssa-chrec-32.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-32.c 23 Mar 2004 20:13:29 -0000 1.1.2.7
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-32.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details -fall-data-deps -fdump-tree-ddall" } */
void bar (short);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details " } */
void bar (short);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-33.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-33.c,v
retrieving revision 1.1.2.7
diff -c -p -3 -r1.1.2.7 ssa-chrec-33.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-33.c 23 Mar 2004 20:13:30 -0000 1.1.2.7
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-33.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details -fall-data-deps -fdump-tree-ddall" } */
void bar (int);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details " } */
void bar (int);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-34.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-34.c,v
retrieving revision 1.1.2.7
diff -c -p -3 -r1.1.2.7 ssa-chrec-34.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-34.c 23 Mar 2004 20:13:30 -0000 1.1.2.7
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-34.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details -fall-data-deps -fdump-tree-ddall" } */
void bar (int);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details " } */
void bar (int);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-35.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-35.c,v
retrieving revision 1.1.2.7
diff -c -p -3 -r1.1.2.7 ssa-chrec-35.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-35.c 23 Mar 2004 20:13:30 -0000 1.1.2.7
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-35.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details -fall-data-deps -fdump-tree-ddall" } */
#define L 100
#define M 100
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details " } */
#define L 100
#define M 100
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-36.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-36.c,v
retrieving revision 1.1.2.7
diff -c -p -3 -r1.1.2.7 ssa-chrec-36.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-36.c 6 May 2004 14:41:56 -0000 1.1.2.7
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-36.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details -fall-data-deps -fdump-tree-ddall" } */
int foo (int);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details " } */
int foo (int);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-37.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-37.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-37.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-37.c 23 Mar 2004 20:13:30 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-37.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main ()
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main ()
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-38.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-38.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-38.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-38.c 23 Mar 2004 20:13:30 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-38.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main ()
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main ()
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-39.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-39.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-39.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-39.c 23 Mar 2004 20:13:30 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-39.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int foo (int ParmN)
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int foo (int ParmN)
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-40.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-40.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-40.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-40.c 23 Mar 2004 20:13:30 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-40.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main ()
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main ()
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-41.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-41.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-41.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-41.c 23 Mar 2004 20:13:30 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-41.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main ()
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main ()
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-42.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-42.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-42.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-42.c 23 Mar 2004 20:13:30 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-42.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main ()
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main ()
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-43.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-43.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-43.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-43.c 23 Mar 2004 20:13:30 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-43.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main ()
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main ()
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-44.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-44.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-44.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-44.c 23 Mar 2004 20:13:30 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-44.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
/* That's a reduced testcase of one of my favourite simulation programs.
This is also known under the name: "Newton's falling apple".
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
/* That's a reduced testcase of one of my favourite simulation programs.
This is also known under the name: "Newton's falling apple".
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-45.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-45.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-45.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-45.c 23 Mar 2004 20:13:30 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-45.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
/* That's a reduced testcase of one of my favourite simulation programs.
This is also known under the name: "Newton's falling apple".
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
/* That's a reduced testcase of one of my favourite simulation programs.
This is also known under the name: "Newton's falling apple".
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-46.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-46.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-46.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-46.c 23 Mar 2004 20:13:30 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-46.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int
foo (int i,
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int
foo (int i,
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-47.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-47.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-47.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-47.c 23 Mar 2004 20:13:30 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-47.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int
foo (int unknown_parm, int a, int b)
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int
foo (int unknown_parm, int a, int b)
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-48.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-48.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-48.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-48.c 23 Mar 2004 20:13:30 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-48.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int
foo (int *c)
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int
foo (int *c)
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-49.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-49.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-49.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-49.c 23 Mar 2004 20:13:30 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-49.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int
foo (int *c)
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int
foo (int *c)
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-50.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-50.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-50.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-50.c 23 Mar 2004 20:13:30 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-50.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int
foo (int *c)
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int
foo (int *c)
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-51.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-51.c,v
retrieving revision 1.1.2.5
diff -c -p -3 -r1.1.2.5 ssa-chrec-51.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-51.c 23 Mar 2004 20:13:30 -0000 1.1.2.5
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-51.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int
foo (int j)
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int
foo (int j)
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-52.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-52.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-52.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-52.c 23 Mar 2004 20:13:30 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-52.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details -fall-data-deps -fdump-tree-ddall" } */
int bar (int);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details " } */
int bar (int);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-53.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-53.c,v
retrieving revision 1.1.2.6
diff -c -p -3 -r1.1.2.6 ssa-chrec-53.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-53.c 23 Mar 2004 20:13:30 -0000 1.1.2.6
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-53.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details -fall-data-deps -fdump-tree-ddall" } */
#define N 16
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details " } */
#define N 16
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-54.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-54.c,v
retrieving revision 1.1.2.2
diff -c -p -3 -r1.1.2.2 ssa-chrec-54.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-54.c 23 Mar 2004 20:13:30 -0000 1.1.2.2
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-54.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main(void)
{
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main(void)
{
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-55.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-55.c,v
retrieving revision 1.1.2.1
diff -c -p -3 -r1.1.2.1 ssa-chrec-55.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-55.c 3 Mar 2004 18:42:17 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-55.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev-details" } */
int main(int argc)
{
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest-details" } */
int main(int argc)
{
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-56.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-56.c,v
retrieving revision 1.1.2.1
diff -c -p -3 -r1.1.2.1 ssa-chrec-56.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-56.c 3 Mar 2004 18:42:17 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-56.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -ftree-elim-checks -fdump-tree-elck-details -fdump-tree-optimized" } */
void remove_me (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -ftree-elim-checks -fdump-tree-elck-details -fdump-tree-optimized" } */
void remove_me (void);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-57.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-57.c,v
retrieving revision 1.1.2.1
diff -c -p -3 -r1.1.2.1 ssa-chrec-57.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-57.c 3 Mar 2004 18:42:17 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-57.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -ftree-elim-checks -fdump-tree-elck-details -fdump-tree-optimized" } */
void remove_me (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -ftree-elim-checks -fdump-tree-elck-details -fdump-tree-optimized" } */
void remove_me (void);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-58.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-58.c,v
retrieving revision 1.1.2.1
diff -c -p -3 -r1.1.2.1 ssa-chrec-58.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-58.c 3 Mar 2004 18:42:17 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-58.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -ftree-elim-checks -fdump-tree-elck-details -fdump-tree-optimized" } */
void remove_me (void);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -ftree-elim-checks -fdump-tree-elck-details -fdump-tree-optimized" } */
void remove_me (void);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-59.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-59.c,v
retrieving revision 1.1.2.1
diff -c -p -3 -r1.1.2.1 ssa-chrec-59.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-59.c 3 Mar 2004 18:42:17 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-59.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev -fall-data-deps -fdump-tree-ddall" } */
extern int foo (float A[100][200]);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest " } */
extern int foo (float A[100][200]);
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-60.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-60.c,v
retrieving revision 1.1.2.1
diff -c -p -3 -r1.1.2.1 ssa-chrec-60.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-60.c 3 Mar 2004 18:42:17 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-60.c 11 Jun 2004 02:50:44 -0000
***************
*** 1,5 ****
/* { dg-do compile } */
! /* { dg-options "-O1 -fscalar-evolutions -fdump-tree-scev -fall-data-deps -fdump-tree-ddall" } */
extern int foo (float A[100]);
--- 1,5 ----
/* { dg-do compile } */
! /* { dg-options "-O1 -floop-test -fdump-tree-lptest " } */
extern int foo (float A[100]);