1169689Skan/* Scalar evolution detector.
2169689Skan   Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
3169689Skan   Contributed by Sebastian Pop <s.pop@laposte.net>
4169689Skan
5169689SkanThis file is part of GCC.
6169689Skan
7169689SkanGCC is free software; you can redistribute it and/or modify it under
8169689Skanthe terms of the GNU General Public License as published by the Free
9169689SkanSoftware Foundation; either version 2, or (at your option) any later
10169689Skanversion.
11169689Skan
12169689SkanGCC is distributed in the hope that it will be useful, but WITHOUT ANY
13169689SkanWARRANTY; without even the implied warranty of MERCHANTABILITY or
14169689SkanFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15169689Skanfor more details.
16169689Skan
17169689SkanYou should have received a copy of the GNU General Public License
18169689Skanalong with GCC; see the file COPYING.  If not, write to the Free
19169689SkanSoftware Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
20169689Skan02110-1301, USA.  */
21169689Skan
22169689Skan#ifndef GCC_TREE_SCALAR_EVOLUTION_H
23169689Skan#define GCC_TREE_SCALAR_EVOLUTION_H
24169689Skan
25169689Skanextern tree number_of_iterations_in_loop (struct loop *);
26169689Skanextern tree get_loop_exit_condition (struct loop *);
27169689Skan
28169689Skanextern void scev_initialize (struct loops *loops);
29169689Skanextern void scev_reset (void);
30169689Skanextern void scev_finalize (void);
31169689Skanextern tree analyze_scalar_evolution (struct loop *, tree);
32169689Skanextern tree instantiate_parameters (struct loop *, tree);
33169689Skanextern void gather_stats_on_scev_database (void);
34169689Skanextern void scev_analysis (void);
35169689Skanunsigned int scev_const_prop (void);
36169689Skan
37169689Skanextern bool simple_iv (struct loop *, tree, tree, affine_iv *, bool);
38169689Skan
39169689Skan#endif  /* GCC_TREE_SCALAR_EVOLUTION_H  */
40