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
,
struct
affine_iv_d
*,
40
bool
);
41
extern
tree
compute_overall_effect_of_inner_loop
(
struct
loop
*,
tree
);
42
43
/* Returns the basic block preceding LOOP or ENTRY_BLOCK_PTR when the
44
loop is function's body. */
45
46
static
inline
basic_block
47
block_before_loop
(
loop_p
loop
)
48
{
49
edge
preheader =
loop_preheader_edge
(loop);
50
return
(preheader ? preheader->
src
:
ENTRY_BLOCK_PTR
);
51
}
52
53
/* Analyze all the parameters of the chrec that were left under a
54
symbolic form. LOOP is the loop in which symbolic names have to
55
be analyzed and instantiated. */
56
57
static
inline
tree
58
instantiate_parameters
(
struct
loop *loop,
tree
chrec)
59
{
60
return
instantiate_scev
(
block_before_loop
(loop), loop, chrec);
61
}
62
63
/* Returns the loop of the polynomial chrec CHREC. */
64
65
static
inline
struct
loop *
66
get_chrec_loop
(
const_tree
chrec)
67
{
68
return
get_loop
(
cfun
,
CHREC_VARIABLE
(chrec));
69
}
70
71
#endif
/* GCC_TREE_SCALAR_EVOLUTION_H */
gcc
tree-scalar-evolution.h
Generated by
1.8.1.1