GCC Middle and Back End API Reference
Main Page
Namespaces
Data Structures
Files
File List
Globals
tree-scalar-evolution.h
Go to the documentation of this file.
1
/* Scalar evolution detector.
2
Copyright (C) 2003-2013 Free Software Foundation, Inc.
3
Contributed by Sebastian Pop <s.pop@laposte.net>
4
5
This file is part of GCC.
6
7
GCC is free software; you can redistribute it and/or modify it under
8
the terms of the GNU General Public License as published by the Free
9
Software Foundation; either version 3, or (at your option) any later
10
version.
11
12
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13
WARRANTY; without even the implied warranty of MERCHANTABILITY or
14
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15
for more details.
16
17
You should have received a copy of the GNU General Public License
18
along with GCC; see the file COPYING3. If not see
19
<http://www.gnu.org/licenses/>. */
20
21
#ifndef GCC_TREE_SCALAR_EVOLUTION_H
22
#define GCC_TREE_SCALAR_EVOLUTION_H
23
24
extern
tree
number_of_latch_executions
(
struct
loop
*);
25
extern
tree
number_of_exit_cond_executions
(
struct
loop
*);
26
extern
gimple
get_loop_exit_condition
(
const
struct
loop
*);
27
28
extern
void
scev_initialize
(
void
);
29
extern
bool
scev_initialized_p
(
void
);
30
extern
void
scev_reset
(
void
);
31
extern
void
scev_reset_htab
(
void
);
32
extern
void
scev_finalize
(
void
);
33
extern
tree
analyze_scalar_evolution
(
struct
loop
*,
tree
);
34
extern
tree
instantiate_scev
(
basic_block
,
struct
loop
*,
tree
);
35
extern
tree
resolve_mixers
(
struct
loop
*,
tree
);
36
extern
void
gather_stats_on_scev_database
(
void
);
37
extern
unsigned
int
scev_const_prop
(
void
);
38
extern
bool
expression_expensive_p
(
tree
);
39
extern
bool
simple_iv
(
struct
loop
*,
struct
loop
*,
tree
,
affine_iv
*,
bool
);
40
extern
tree
compute_overall_effect_of_inner_loop
(
struct
loop
*,
tree
);
41
42
/* Returns the basic block preceding LOOP or ENTRY_BLOCK_PTR when the
43
loop is function's body. */
44
45
static
inline
basic_block
46
block_before_loop
(
loop_p
loop
)
47
{
48
edge
preheader =
loop_preheader_edge
(loop);
49
return
(preheader ? preheader->
src
: ENTRY_BLOCK_PTR);
50
}
51
52
/* Analyze all the parameters of the chrec that were left under a
53
symbolic form. LOOP is the loop in which symbolic names have to
54
be analyzed and instantiated. */
55
56
static
inline
tree
57
instantiate_parameters
(
struct
loop
*
loop
,
tree
chrec)
58
{
59
return
instantiate_scev
(
block_before_loop
(loop), loop, chrec);
60
}
61
62
/* Returns the loop of the polynomial chrec CHREC. */
63
64
static
inline
struct
loop
*
65
get_chrec_loop
(
const_tree
chrec)
66
{
67
return
get_loop
(
cfun
, CHREC_VARIABLE (chrec));
68
}
69
70
#endif
/* GCC_TREE_SCALAR_EVOLUTION_H */
gcc
tree-scalar-evolution.h
Generated by
1.8.1.1