GCC Middle and Back End API Reference
Main Page
Namespaces
Data Structures
Files
File List
Globals
GCC Middle and Back End API Reference
Namespaces
Data Structures
Files
File List
addresses.h
alias.c
alias.h
alloc-pool.c
alloc-pool.h
asan.c
asan.h
attribs.c
auto-inc-dec.c
basic-block.h
bb-reorder.c
bb-reorder.h
bitmap.c
bitmap.h
bt-load.c
builtins.c
builtins.h
caller-save.c
calls.c
cfg.c
cfganal.c
cfgbuild.c
cfgcleanup.c
cfgexpand.c
cfghooks.c
cfghooks.h
cfgloop.c
cfgloop.h
cfgloopanal.c
cfgloopmanip.c
cfgrtl.c
cgraph.c
cgraph.h
cgraphbuild.c
cgraphclones.c
cgraphunit.c
cilk-common.c
cilk.h
collect2-aix.c
collect2-aix.h
collect2.c
collect2.h
combine-stack-adj.c
combine.c
compare-elim.c
conditions.h
context.c
context.h
convert.c
convert.h
coretypes.h
coverage.c
coverage.h
cppbuiltin.c
cppbuiltin.h
cppdefault.c
cppdefault.h
cprop.c
cse.c
cselib.c
cselib.h
data-streamer-in.c
data-streamer-out.c
data-streamer.c
data-streamer.h
dbgcnt.c
dbgcnt.h
dbxout.c
dbxout.h
dce.c
dce.h
ddg.c
ddg.h
debug.c
debug.h
defaults.h
df-core.c
df-problems.c
df-scan.c
df.h
dfp.c
dfp.h
diagnostic-color.c
diagnostic-color.h
diagnostic-core.h
diagnostic.c
diagnostic.h
dojump.c
dominance.c
domwalk.c
domwalk.h
double-int.c
double-int.h
dse.c
dumpfile.c
dumpfile.h
dwarf2asm.c
dwarf2asm.h
dwarf2cfi.c
dwarf2out.c
dwarf2out.h
emit-rtl.c
emit-rtl.h
errors.c
errors.h
et-forest.c
et-forest.h
except.c
except.h
explow.c
expmed.c
expmed.h
expr.c
expr.h
file-find.c
file-find.h
final.c
fixed-value.c
fixed-value.h
flag-types.h
flags.h
fold-const.c
foo.c
fp-test.c
function.c
function.h
fwprop.c
gcc-ar.c
gcc-plugin.h
gcc.c
gcc.h
gcov-dump.c
gcov-io.c
gcov-io.h
gcov-iov.c
gcov.c
gcse.c
gcse.h
gdbhooks.py
genattr-common.c
genattr.c
genattrtab.c
genautomata.c
gencheck.c
genchecksum.c
gencodes.c
genconditions.c
genconfig.c
genconstants.c
genemit.c
genenums.c
genextract.c
genflags.c
gengenrtl.c
gengtype-parse.c
gengtype-state.c
gengtype.c
gengtype.h
genhooks.c
genmddeps.c
genmddump.c
genmodes.c
genopinit.c
genoutput.c
genpeep.c
genpreds.c
genrecog.c
gensupport.c
gensupport.h
ggc-common.c
ggc-internal.h
ggc-none.c
ggc-page.c
ggc.h
gimple-builder.c
gimple-builder.h
gimple-fold.c
gimple-fold.h
gimple-iterator.c
gimple-low.c
gimple-low.h
gimple-pretty-print.c
gimple-pretty-print.h
gimple-ssa-strength-reduction.c
gimple-ssa.h
gimple-streamer-in.c
gimple-streamer-out.c
gimple-streamer.h
gimple.c
gimple.h
gimplify.c
glimits.h
godump.c
graph.c
graph.h
graphds.c
graphds.h
graphite-blocking.c
graphite-clast-to-gimple.c
graphite-clast-to-gimple.h
graphite-dependences.c
graphite-htab.h
graphite-interchange.c
graphite-optimize-isl.c
graphite-poly.c
graphite-poly.h
graphite-scop-detection.c
graphite-scop-detection.h
graphite-sese-to-poly.c
graphite-sese-to-poly.h
graphite.c
gstab.h
gsyms.h
gsyslimits.h
haifa-sched.c
hard-reg-set.h
hash-table.c
hash-table.h
highlev-plugin-common.h
hooks.c
hooks.h
host-default.c
hosthooks-def.h
hosthooks.h
hw-doloop.c
hw-doloop.h
hwint.c
hwint.h
ifcvt.c
incpath.c
incpath.h
init-regs.c
input.c
input.h
insn-addr.h
internal-fn.c
internal-fn.h
intl.c
intl.h
ipa-cp.c
ipa-devirt.c
ipa-inline-analysis.c
ipa-inline-transform.c
ipa-inline.c
ipa-inline.h
ipa-profile.c
ipa-prop.c
ipa-prop.h
ipa-pure-const.c
ipa-ref-inline.h
ipa-ref.c
ipa-ref.h
ipa-reference.c
ipa-reference.h
ipa-split.c
ipa-utils.c
ipa-utils.h
ipa.c
ira-build.c
ira-color.c
ira-conflicts.c
ira-costs.c
ira-emit.c
ira-int.h
ira-lives.c
ira.c
ira.h
is-a.h
jump.c
langhooks-def.h
langhooks.c
langhooks.h
lcm.c
libfuncs.h
limitx.h
limity.h
lists.c
loop-doloop.c
loop-init.c
loop-invariant.c
loop-iv.c
loop-unroll.c
loop-unswitch.c
lower-subreg.c
lower-subreg.h
lra-assigns.c
lra-coalesce.c
lra-constraints.c
lra-eliminations.c
lra-int.h
lra-lives.c
lra-spills.c
lra.c
lra.h
lto-cgraph.c
lto-compress.c
lto-compress.h
lto-opts.c
lto-section-in.c
lto-section-out.c
lto-streamer-in.c
lto-streamer-out.c
lto-streamer.c
lto-streamer.h
lto-wrapper.c
machmode.h
main.c
mcf.c
mode-switching.c
modulo-sched.c
omega.c
omega.h
omp-low.c
omp-low.h
optabs.c
optabs.h
opts-common.c
opts-diagnostic.h
opts-global.c
opts.c
opts.h
output.h
params.c
params.h
pass_manager.h
passes.c
plugin.c
plugin.h
pointer-set.c
pointer-set.h
postreload-gcse.c
postreload.c
predict.c
predict.h
prefix.c
prefix.h
pretty-print.c
pretty-print.h
print-rtl.c
print-tree.c
profile.c
profile.h
read-md.c
read-md.h
read-rtl.c
real.c
real.h
realmpfr.c
realmpfr.h
recog.c
recog.h
ree.c
reg-stack.c
regcprop.c
reginfo.c
regrename.c
regrename.h
regs.h
regset.h
regstat.c
reload.c
reload.h
reload1.c
reorg.c
resource.c
resource.h
rtl-error.c
rtl-error.h
rtl.c
rtl.h
rtlanal.c
rtlhooks-def.h
rtlhooks.c
sbitmap.c
sbitmap.h
sched-deps.c
sched-ebb.c
sched-int.h
sched-rgn.c
sched-vis.c
sdbout.c
sdbout.h
sel-sched-dump.c
sel-sched-dump.h
sel-sched-ir.c
sel-sched-ir.h
sel-sched.c
sel-sched.h
sese.c
sese.h
simplify-rtx.c
sparseset.c
sparseset.h
sreal.c
sreal.h
ssa-iterators.h
stack-ptr-mod.c
statistics.c
statistics.h
stmt.c
stor-layout.c
store-motion.c
streamer-hooks.c
streamer-hooks.h
stringpool.c
symtab.c
system.h
target-def.h
target-globals.c
target-globals.h
target-hooks-macros.h
target.h
targhooks.c
targhooks.h
timevar.c
timevar.h
tlink.c
toplev.c
toplev.h
tracer.c
trans-mem.c
trans-mem.h
tree-affine.c
tree-affine.h
tree-browser.c
tree-call-cdce.c
tree-cfg.c
tree-cfg.h
tree-cfgcleanup.c
tree-cfgcleanup.h
tree-chrec.c
tree-chrec.h
tree-complex.c
tree-core.h
tree-data-ref.c
tree-data-ref.h
tree-dfa.c
tree-dfa.h
tree-diagnostic.c
tree-diagnostic.h
tree-dump.c
tree-dump.h
tree-eh.c
tree-eh.h
tree-emutls.c
tree-hasher.h
tree-if-conv.c
tree-inline.c
tree-inline.h
tree-into-ssa.c
tree-into-ssa.h
tree-iterator.c
tree-iterator.h
tree-loop-distribution.c
tree-nested.c
tree-nrv.c
tree-object-size.c
tree-outof-ssa.c
tree-outof-ssa.h
tree-parloops.c
tree-parloops.h
tree-pass.h
tree-phinodes.c
tree-phinodes.h
tree-predcom.c
tree-pretty-print.c
tree-pretty-print.h
tree-profile.c
tree-scalar-evolution.c
tree-scalar-evolution.h
tree-sra.c
tree-ssa-address.c
tree-ssa-address.h
tree-ssa-alias.c
tree-ssa-alias.h
tree-ssa-ccp.c
tree-ssa-coalesce.c
tree-ssa-coalesce.h
tree-ssa-copy.c
tree-ssa-copyrename.c
tree-ssa-dce.c
tree-ssa-dom.c
tree-ssa-dom.h
tree-ssa-dse.c
tree-ssa-forwprop.c
tree-ssa-ifcombine.c
tree-ssa-live.c
tree-ssa-live.h
tree-ssa-loop-ch.c
tree-ssa-loop-im.c
tree-ssa-loop-ivcanon.c
tree-ssa-loop-ivopts.c
tree-ssa-loop-ivopts.h
tree-ssa-loop-manip.c
tree-ssa-loop-manip.h
tree-ssa-loop-niter.c
tree-ssa-loop-niter.h
tree-ssa-loop-prefetch.c
tree-ssa-loop-unswitch.c
tree-ssa-loop.c
tree-ssa-loop.h
tree-ssa-math-opts.c
tree-ssa-operands.c
tree-ssa-operands.h
tree-ssa-phiopt.c
tree-ssa-phiprop.c
tree-ssa-pre.c
tree-ssa-propagate.c
tree-ssa-propagate.h
tree-ssa-reassoc.c
tree-ssa-sccvn.c
tree-ssa-sccvn.h
tree-ssa-sink.c
tree-ssa-strlen.c
tree-ssa-structalias.c
tree-ssa-tail-merge.c
tree-ssa-ter.c
tree-ssa-ter.h
tree-ssa-threadedge.c
tree-ssa-threadedge.h
tree-ssa-threadupdate.c
tree-ssa-threadupdate.h
tree-ssa-uncprop.c
tree-ssa-uninit.c
tree-ssa.c
tree-ssa.h
tree-ssanames.c
tree-ssanames.h
tree-stdarg.c
tree-stdarg.h
tree-streamer-in.c
tree-streamer-out.c
tree-streamer.c
tree-streamer.h
tree-switch-conversion.c
tree-tailcall.c
tree-vect-data-refs.c
tree-vect-generic.c
tree-vect-loop-manip.c
tree-vect-loop.c
tree-vect-patterns.c
tree-vect-slp.c
tree-vect-stmts.c
tree-vectorizer.c
tree-vectorizer.h
tree-vrp.c
tree.c
tree.h
tsan.c
tsan.h
tsystem.h
typeclass.h
ubsan.c
ubsan.h
valtrack.c
valtrack.h
value-prof.c
value-prof.h
var-tracking.c
varasm.c
varpool.c
vec.c
vec.h
version.c
version.h
vmsdbg.h
vmsdbgout.c
vtable-verify.c
vtable-verify.h
web.c
xcoff.h
xcoffout.c
xcoffout.h
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