summaryrefslogtreecommitdiff
path: root/gcc/tree-data-ref.c
diff options
context:
space:
mode:
authorspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>2008-09-09 18:39:45 +0000
committerspop <spop@138bc75d-0d04-0410-961f-82ee72b054a4>2008-09-09 18:39:45 +0000
commit089aa66803c604b8b49c6a0b9c42aeefe1d67169 (patch)
tree73195c19addce9aac12faa4c9914cd880f94c5b0 /gcc/tree-data-ref.c
parent6ad53a0c206f512335404bbdbfa89c3c500f194e (diff)
downloadgcc-089aa66803c604b8b49c6a0b9c42aeefe1d67169.tar.gz
2008-09-05 Sebastian Pop <sebastian.pop@amd.com>
PR tree-optimization/37375 * tree-scalar-evolution.c (scev_info_str): Add field instantiated_below. (new_scev_info_str, eq_scev_info, find_var_scev_info, set_scalar_evolution, get_scalar_evolution, get_instantiated_value, set_instantiated_value): Pass instantiated_below. (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls to above functions. (instantiate_scev_1, instantiate_scev): Pass a basic block above which the definitions are not instantiated. * tree-scalar-evolution.h (instantiate_scev): Update declaration. (block_before_loop): New. * tree-data-ref.c (dr_analyze_indices): Update uses of instantiate_scev. * graphite.c (block_before_scop): New. (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a basic block, not a loop for determining the parameters. (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the scop. (idx_record_params, find_params_in_bb, find_scop_parameters, build_loop_iteration_domains, add_conditions_to_domain): Update calls to instantiate_scev. * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@140164 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-data-ref.c')
-rw-r--r--gcc/tree-data-ref.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c
index af1146c7fef..2be0ad1b401 100644
--- a/gcc/tree-data-ref.c
+++ b/gcc/tree-data-ref.c
@@ -747,6 +747,7 @@ dr_analyze_indices (struct data_reference *dr, struct loop *nest)
VEC (tree, heap) *access_fns = NULL;
tree ref = unshare_expr (DR_REF (dr)), aref = ref, op;
tree base, off, access_fn;
+ basic_block before_loop = block_before_loop (nest);
while (handled_component_p (aref))
{
@@ -754,7 +755,7 @@ dr_analyze_indices (struct data_reference *dr, struct loop *nest)
{
op = TREE_OPERAND (aref, 1);
access_fn = analyze_scalar_evolution (loop, op);
- access_fn = instantiate_scev (nest, loop, access_fn);
+ access_fn = instantiate_scev (before_loop, loop, access_fn);
VEC_safe_push (tree, heap, access_fns, access_fn);
TREE_OPERAND (aref, 1) = build_int_cst (TREE_TYPE (op), 0);
@@ -767,7 +768,7 @@ dr_analyze_indices (struct data_reference *dr, struct loop *nest)
{
op = TREE_OPERAND (aref, 0);
access_fn = analyze_scalar_evolution (loop, op);
- access_fn = instantiate_scev (nest, loop, access_fn);
+ access_fn = instantiate_scev (before_loop, loop, access_fn);
base = initial_condition (access_fn);
split_constant_offset (base, &base, &off);
access_fn = chrec_replace_initial_condition (access_fn,