This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]