[lno] Canonicalize chrecs
Pop Sébastian
pop@gauvain.u-strasbg.fr
Thu Jan 15 13:45:00 GMT 2004
Hi,
This patch canonicalizes the chains of recurrences representation.
Before this patch we used to construct two representations with the
same semantics: {0, +, {1, +, 2}_1}_1 vs. {{0, +, 1}_1, +, 2}_1.
add_to_evolution and multiply_evolution are modified such that only
the second form is constructed.
This change allows to entirely analyze one of the testcase sent by
Dorit: tree-ssa-vect-1.c
* tree-chrec.c (remove_initial_condition,
add_expr_to_loop_evolution_1, add_expr_to_loop_evolution_2): New functions.
(add_expr_to_loop_evolution): Use these functions.
(build_polynomial_evolution_in_loop,
build_exponential_evolution_in_loop): Move from here...
* tree-chrec.h (build_polynomial_evolution_in_loop,
build_exponential_evolution_in_loop): Remove declarations.
* tree-scalar-evolution.c (build_polynomial_evolution_in_loop,
build_exponential_evolution_in_loop): ... to here. Declare
these functions static.
(select_outer_and_current_evolutions): New function.
(matched_an_increment, scev_analyze_modify_expr,
compute_overall_effect_of_inner_loop,
analyze_scalar_evolution): Use this function.
(add_to_evolution, multiply_evolution): Construct canonical
chains of recurrences.
testsuite/
* ssa-chrec-{06, 38, 42, 43}.c: Modify comments.
* ssa-chrec-{06, 07, 08, 09, 11, 12, 13, 14, 16, 18, 20,
21, 37, 38, 39, 42, 43, 44, 45, 53}.c.scev: Adjusted.
* ssa-chrec-53.c.alldd: Adjusted.
Index: tree-chrec.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-chrec.c,v
retrieving revision 1.1.2.3
diff -c -3 -p -r1.1.2.3 tree-chrec.c
*** tree-chrec.c 12 Jan 2004 14:40:09 -0000 1.1.2.3
--- tree-chrec.c 15 Jan 2004 12:27:09 -0000
*************** static inline tree chrec_fold_multiply_i
*** 64,69 ****
--- 64,73 ----
/* Operations. */
static tree chrec_evaluate (unsigned, tree, tree, tree);
static tree chrec_merge_intervals (tree, tree);
+ static tree remove_initial_condition (tree);
+ static tree add_expr_to_loop_evolution_2 (tree, tree*);
+ static tree add_expr_to_loop_evolution_1 (unsigned, tree, tree*);
+
/* Observers. */
static bool is_multivariate_chrec_rec (tree, unsigned int);
*************** chrec_merge (tree chrec1,
*** 2076,2177 ****
}
}
! /* The expression CHREC_BEFORE has no evolution part in LOOP_NUM.
! This function constructs a new polynomial evolution function for this
! loop. The evolution part is TO_ADD. */
! tree
! build_polynomial_evolution_in_loop (unsigned loop_num,
! tree chrec_before,
! tree to_add)
{
! #if defined ENABLE_CHECKING
! if (to_add == NULL_TREE
! || chrec_before == NULL_TREE)
! abort ();
! #endif
! switch (TREE_CODE (chrec_before))
{
! case POLYNOMIAL_CHREC:
! if (CHREC_VARIABLE (chrec_before) < loop_num)
! return build_polynomial_chrec (loop_num, chrec_before, to_add);
! else
! return build_polynomial_chrec
! (CHREC_VARIABLE (chrec_before),
! build_polynomial_evolution_in_loop (loop_num,
! CHREC_LEFT (chrec_before),
! to_add),
! CHREC_RIGHT (chrec_before));
! case EXPONENTIAL_CHREC:
! if (CHREC_VARIABLE (chrec_before) < loop_num)
! return build_polynomial_chrec (loop_num, chrec_before, to_add);
! else
! return build_exponential_chrec
! (CHREC_VARIABLE (chrec_before),
! build_polynomial_evolution_in_loop (loop_num,
! CHREC_LEFT (chrec_before),
! to_add),
! CHREC_RIGHT (chrec_before));
! case VAR_DECL:
! case PARM_DECL:
! case INTEGER_CST:
! case INTERVAL_CHREC:
! default:
! /* These nodes do not depend on a loop. */
! return build_polynomial_chrec (loop_num, chrec_before, to_add);
}
}
! /* The expression CHREC_BEFORE has no evolution part in LOOP_NUM.
! This function constructs a new exponential evolution function for this
! loop. The evolution part is TO_MULT. */
! tree
! build_exponential_evolution_in_loop (unsigned loop_num,
! tree chrec_before,
! tree to_mult)
{
! #if defined ENABLE_CHECKING
! if (to_mult == NULL_TREE
! || chrec_before == NULL_TREE)
! abort ();
! #endif
! switch (TREE_CODE (chrec_before))
! {
! case POLYNOMIAL_CHREC:
! if (CHREC_VARIABLE (chrec_before) < loop_num)
! return build_exponential_chrec (loop_num, chrec_before, to_mult);
! else
! return build_polynomial_chrec
! (CHREC_VARIABLE (chrec_before),
! build_exponential_evolution_in_loop (loop_num,
! CHREC_LEFT (chrec_before),
! to_mult),
! CHREC_RIGHT (chrec_before));
!
! case EXPONENTIAL_CHREC:
! if (CHREC_VARIABLE (chrec_before) < loop_num)
! return build_exponential_chrec (loop_num, chrec_before, to_mult);
! else
! return build_exponential_chrec
! (CHREC_VARIABLE (chrec_before),
! build_exponential_evolution_in_loop (loop_num,
! CHREC_LEFT (chrec_before),
! to_mult),
! CHREC_RIGHT (chrec_before));
!
! case VAR_DECL:
! case PARM_DECL:
! case INTEGER_CST:
! case INTERVAL_CHREC:
! default:
! /* These nodes do not depend on a loop. */
! return build_exponential_chrec (loop_num, chrec_before, to_mult);
! }
}
/* The expression CHREC_BEFORE has an evolution part in LOOP_NUM.
--- 2080,2179 ----
}
}
! /* Returns a chrec for which the initial condition has been removed.
! Example: {{1, +, 2}, +, 3} returns {2, +, 3}. */
! static tree
! remove_initial_condition (tree chrec)
{
! tree left;
! if (chrec == NULL_TREE)
! return NULL_TREE;
!
! if (TREE_CODE (chrec) != POLYNOMIAL_CHREC
! && TREE_CODE (chrec) != EXPONENTIAL_CHREC)
! return NULL_TREE;
!
! left = remove_initial_condition (CHREC_LEFT (chrec));
! if (left == NULL_TREE)
! return CHREC_RIGHT (chrec);
!
! if (TREE_CODE (chrec) == POLYNOMIAL_CHREC)
! return build_polynomial_chrec
! (CHREC_VARIABLE (chrec), left, CHREC_RIGHT (chrec));
!
! else
! return build_exponential_chrec
! (CHREC_VARIABLE (chrec), left, CHREC_RIGHT (chrec));
! }
!
! /* Search for the leftmost evolution element from CHREC_BEFORE, then
! begin the addition left to right from this locus. */
!
! static tree
! add_expr_to_loop_evolution_1 (unsigned loop_num,
! tree chrec_before,
! tree *to_add)
! {
! if (*to_add == NULL_TREE)
! return chrec_before;
!
! /* Search for the leftmost locus. */
! if (CHREC_VARIABLE (chrec_before) == loop_num
! && ((TREE_CODE (CHREC_LEFT (chrec_before)) != POLYNOMIAL_CHREC
! && TREE_CODE (CHREC_LEFT (chrec_before)) != EXPONENTIAL_CHREC)
! || (CHREC_VARIABLE (CHREC_LEFT (chrec_before)) != loop_num)))
{
! /* And from this point, start adding to the right. */
! tree init_cond = initial_condition (*to_add);
! *to_add = remove_initial_condition (*to_add);
! return build_polynomial_chrec
! (CHREC_VARIABLE (chrec_before), CHREC_LEFT (chrec_before),
! chrec_fold_plus (CHREC_RIGHT (chrec_before), init_cond));
! }
!
! else
! {
! /* Search. */
! tree res = add_expr_to_loop_evolution_1
! (loop_num, CHREC_LEFT (chrec_before), to_add);
! /* If there are elements to be added... */
! if (*to_add != NULL_TREE)
! {
! tree init_cond = initial_condition (*to_add);
! *to_add = remove_initial_condition (*to_add);
!
! /* ...add the element. */
! return build_polynomial_chrec
! (CHREC_VARIABLE (chrec_before), res,
! chrec_fold_plus (CHREC_RIGHT (chrec_before), init_cond));
! }
!
! return build_polynomial_chrec
! (CHREC_VARIABLE (chrec_before), res, CHREC_RIGHT (chrec_before));
}
}
! /* Finish the copying of the evolution from TO_ADD into
! CHREC_BEFORE. */
! static tree
! add_expr_to_loop_evolution_2 (tree chrec_before,
! tree *to_add)
{
! tree init_cond;
! if (*to_add == NULL_TREE)
! return chrec_before;
!
! init_cond = initial_condition (*to_add);
! *to_add = remove_initial_condition (*to_add);
!
! return build_polynomial_chrec
! (CHREC_VARIABLE (chrec_before), chrec_before, init_cond);
}
/* The expression CHREC_BEFORE has an evolution part in LOOP_NUM.
*************** add_expr_to_loop_evolution (unsigned loo
*** 2193,2209 ****
switch (TREE_CODE (chrec_before))
{
case POLYNOMIAL_CHREC:
! if (CHREC_VARIABLE (chrec_before) == loop_num
! /* The evolution has to be added on the leftmost position for
! loop_num. */
! && ((TREE_CODE (CHREC_LEFT (chrec_before)) != POLYNOMIAL_CHREC
! && TREE_CODE (CHREC_LEFT (chrec_before)) != EXPONENTIAL_CHREC)
! || (CHREC_VARIABLE (CHREC_LEFT (chrec_before)) != loop_num)))
! return build_polynomial_chrec
! (loop_num,
! CHREC_LEFT (chrec_before),
! chrec_fold_plus (CHREC_RIGHT (chrec_before), to_add));
else
return build_polynomial_chrec
(CHREC_VARIABLE (chrec_before),
add_expr_to_loop_evolution (loop_num,
--- 2195,2219 ----
switch (TREE_CODE (chrec_before))
{
case POLYNOMIAL_CHREC:
! if (CHREC_VARIABLE (chrec_before) == loop_num)
! {
! /* Add the polynomial TO_ADD to the evolution in LOOP_NUM of
! CHREC_BEFORE. */
! tree res = add_expr_to_loop_evolution_1
! (loop_num, chrec_before, &to_add);
!
! /* When the degree of TO_ADD is greater than the degree of
! CHREC_BEFORE in the LOOP_NUM dimension, build the new
! evolution. */
! if (to_add != NULL_TREE)
! res = add_expr_to_loop_evolution_2
! (res, &to_add);
!
! return res;
! }
!
else
+ /* Search the evolution in LOOP_NUM. */
return build_polynomial_chrec
(CHREC_VARIABLE (chrec_before),
add_expr_to_loop_evolution (loop_num,
Index: tree-chrec.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-chrec.h,v
retrieving revision 1.1.2.3
diff -c -3 -p -r1.1.2.3 tree-chrec.h
*** tree-chrec.h 12 Jan 2004 14:40:09 -0000 1.1.2.3
--- tree-chrec.h 15 Jan 2004 12:27:09 -0000
*************** extern tree evolution_function_in_loop_n
*** 102,109 ****
extern tree reset_evolution_in_loop (unsigned, tree, tree);
extern tree chrec_eval_next_init_cond (unsigned, tree);
extern tree chrec_merge (tree, tree);
- extern tree build_polynomial_evolution_in_loop (unsigned, tree, tree);
- extern tree build_exponential_evolution_in_loop (unsigned, tree, tree);
extern tree add_expr_to_loop_evolution (unsigned, tree, tree);
extern tree multiply_by_expr_the_loop_evolution (unsigned, tree, tree);
extern tree chrec_fold_automatically_generated_operands (tree, tree);
--- 102,107 ----
Index: tree-scalar-evolution.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-scalar-evolution.c,v
retrieving revision 1.1.2.7
diff -c -3 -p -r1.1.2.7 tree-scalar-evolution.c
*** tree-scalar-evolution.c 12 Jan 2004 14:40:09 -0000 1.1.2.7
--- tree-scalar-evolution.c 15 Jan 2004 12:27:10 -0000
*************** static tree merge_evolutions (
*** 172,177 ****
--- 172,180 ----
static void merge_branches_of_condition_phi_node_in_loop (tree, tree);
static void merge_branches_of_condition_phi_node (tree);
static tree evolution_at_version (unsigned, tree);
+ static tree select_outer_and_current_evolutions (unsigned, tree);
+ static tree build_polynomial_evolution_in_loop (unsigned, tree, tree);
+ static tree build_exponential_evolution_in_loop (unsigned, tree, tree);
static tree add_to_evolution (unsigned, tree, tree);
static tree multiply_evolution (unsigned, tree, tree);
static inline tree cannot_analyze_loop_nb_iterations_yet (void);
*************** matched_an_increment (unsigned loop_nb,
*** 1102,1107 ****
--- 1105,1112 ----
(initial_condition (chrec10),
initial_condition (to_be_added));
+ to_be_added = select_outer_and_current_evolutions
+ (loop_nb, to_be_added);
*evolution_function = add_to_evolution
(loop_nb, chrec_before, to_be_added);
}
*************** scev_analyze_modify_expr (unsigned loop_
*** 1473,1479 ****
*effect_after_execution = chrec_fold_plus
(initial_condition (chrec10),
initial_condition (to_be_added));
!
*evolution_function = add_to_evolution
(loop_nb, chrec_before, to_be_added);
}
--- 1478,1486 ----
*effect_after_execution = chrec_fold_plus
(initial_condition (chrec10),
initial_condition (to_be_added));
!
! to_be_added = select_outer_and_current_evolutions
! (loop_nb, to_be_added);
*evolution_function = add_to_evolution
(loop_nb, chrec_before, to_be_added);
}
*************** compute_overall_effect_of_inner_loop (tr
*** 1950,1961 ****
overall_effect);
else
! new_evol = add_to_evolution
! (loop_num (outer_loop (loop_of_stmt (loop_phi_node))),
! get_scev (loop_num (loop_of_stmt (loop_phi_node)),
! SSA_NAME_VAR
! (PHI_RESULT (loop_phi_node))),
! overall_effect);
set_scev (0, SSA_NAME_VAR (PHI_RESULT (loop_phi_node)),
new_evol);
--- 1957,1976 ----
overall_effect);
else
! {
! unsigned loop_nb = loop_num
! (outer_loop (loop_of_stmt (loop_phi_node)));
!
! overall_effect = select_outer_and_current_evolutions
! (loop_nb, overall_effect);
!
! new_evol = add_to_evolution
! (loop_nb,
! get_scev (loop_num (loop_of_stmt (loop_phi_node)),
! SSA_NAME_VAR
! (PHI_RESULT (loop_phi_node))),
! overall_effect);
! }
set_scev (0, SSA_NAME_VAR (PHI_RESULT (loop_phi_node)),
new_evol);
*************** evolution_at_version (unsigned loop_nb,
*** 2493,2498 ****
--- 2508,2647 ----
return res;
}
+ /* Select the evolution function in the current LOOP_NB and in the
+ outer containing loops. */
+
+ static tree
+ select_outer_and_current_evolutions (unsigned loop_nb,
+ tree chrec)
+ {
+ switch (TREE_CODE (chrec))
+ {
+ case POLYNOMIAL_CHREC:
+ if (loop_is_included_in (loop_nb, CHREC_VARIABLE (chrec)))
+ return build_polynomial_chrec
+ (CHREC_VARIABLE (chrec),
+ select_outer_and_current_evolutions (loop_nb, CHREC_LEFT (chrec)),
+ select_outer_and_current_evolutions (loop_nb, CHREC_RIGHT (chrec)));
+
+ else
+ return select_outer_and_current_evolutions
+ (loop_nb, CHREC_LEFT (chrec));
+
+ case EXPONENTIAL_CHREC:
+ if (loop_is_included_in (loop_nb, CHREC_VARIABLE (chrec)))
+ return build_exponential_chrec
+ (CHREC_VARIABLE (chrec),
+ select_outer_and_current_evolutions (loop_nb, CHREC_LEFT (chrec)),
+ select_outer_and_current_evolutions (loop_nb, CHREC_RIGHT (chrec)));
+
+ else
+ return select_outer_and_current_evolutions
+ (loop_nb, CHREC_LEFT (chrec));
+
+ default:
+ return chrec;
+ }
+ }
+
+ /* The expression CHREC_BEFORE has no evolution part in LOOP_NB.
+ This function constructs a new polynomial evolution function for this
+ loop. The evolution part is TO_ADD. */
+
+ static tree
+ build_polynomial_evolution_in_loop (unsigned loop_nb,
+ tree chrec_before,
+ tree to_add)
+ {
+ #if defined ENABLE_CHECKING
+ if (to_add == NULL_TREE
+ || chrec_before == NULL_TREE)
+ abort ();
+ #endif
+
+ switch (TREE_CODE (chrec_before))
+ {
+ case POLYNOMIAL_CHREC:
+ if (CHREC_VARIABLE (chrec_before) < loop_nb)
+ return build_polynomial_chrec (loop_nb, chrec_before, to_add);
+ else
+ return build_polynomial_chrec
+ (CHREC_VARIABLE (chrec_before),
+ build_polynomial_evolution_in_loop (loop_nb,
+ CHREC_LEFT (chrec_before),
+ to_add),
+ CHREC_RIGHT (chrec_before));
+
+ case EXPONENTIAL_CHREC:
+ if (CHREC_VARIABLE (chrec_before) < loop_nb)
+ return build_polynomial_chrec (loop_nb, chrec_before, to_add);
+ else
+ return build_exponential_chrec
+ (CHREC_VARIABLE (chrec_before),
+ build_polynomial_evolution_in_loop (loop_nb,
+ CHREC_LEFT (chrec_before),
+ to_add),
+ CHREC_RIGHT (chrec_before));
+
+ case VAR_DECL:
+ case PARM_DECL:
+ case INTEGER_CST:
+ case INTERVAL_CHREC:
+ default:
+ /* These nodes do not depend on a loop. */
+ return build_polynomial_chrec (loop_nb, chrec_before, to_add);
+ }
+ }
+
+ /* The expression CHREC_BEFORE has no evolution part in LOOP_NUM.
+ This function constructs a new exponential evolution function for this
+ loop. The evolution part is TO_MULT. */
+
+ static tree
+ build_exponential_evolution_in_loop (unsigned loop_num,
+ tree chrec_before,
+ tree to_mult)
+ {
+ #if defined ENABLE_CHECKING
+ if (to_mult == NULL_TREE
+ || chrec_before == NULL_TREE)
+ abort ();
+ #endif
+
+ switch (TREE_CODE (chrec_before))
+ {
+ case POLYNOMIAL_CHREC:
+ if (CHREC_VARIABLE (chrec_before) < loop_num)
+ return build_exponential_chrec (loop_num, chrec_before, to_mult);
+ else
+ return build_polynomial_chrec
+ (CHREC_VARIABLE (chrec_before),
+ build_exponential_evolution_in_loop (loop_num,
+ CHREC_LEFT (chrec_before),
+ to_mult),
+ CHREC_RIGHT (chrec_before));
+
+ case EXPONENTIAL_CHREC:
+ if (CHREC_VARIABLE (chrec_before) < loop_num)
+ return build_exponential_chrec (loop_num, chrec_before, to_mult);
+ else
+ return build_exponential_chrec
+ (CHREC_VARIABLE (chrec_before),
+ build_exponential_evolution_in_loop (loop_num,
+ CHREC_LEFT (chrec_before),
+ to_mult),
+ CHREC_RIGHT (chrec_before));
+
+ case VAR_DECL:
+ case PARM_DECL:
+ case INTEGER_CST:
+ case INTERVAL_CHREC:
+ default:
+ /* These nodes do not depend on a loop. */
+ return build_exponential_chrec (loop_num, chrec_before, to_mult);
+ }
+ }
+
/* Add TO_ADD to the evolution part of CHREC_BEFORE in the dimension
of LOOP_NB. */
*************** add_to_evolution (unsigned loop_nb,
*** 2512,2517 ****
--- 2661,2673 ----
#endif
DBG_S (fprintf (stderr, "(add_to_evolution \n");
+ fprintf (stderr, " (loop_nb = %d)\n", loop_nb);
+ fprintf (stderr, " (chrec_before = ");
+ debug_generic_expr (chrec_before);
+ fprintf (stderr, " )\n");
+ fprintf (stderr, " (to_add = ");
+ debug_generic_expr (to_add);
+ fprintf (stderr, " )\n");
if (TREE_CODE (chrec_before) == POLYNOMIAL_CHREC
&& CHREC_VARIABLE (chrec_before) == loop_nb)
fprintf (stderr, " constructing a polynomial of degree > 1 \n"));
*************** add_to_evolution (unsigned loop_nb,
*** 2520,2529 ****
{
case POLYNOMIAL_CHREC:
if (no_evolution_in_loop_p (chrec_before, loop_nb))
! /* testsuite/.../ssa-chrec-38.c. */
! res = build_polynomial_evolution_in_loop (loop_nb,
! chrec_before,
! to_add);
else
/* testsuite/.../ssa-chrec-37.c. */
res = add_expr_to_loop_evolution (loop_nb, chrec_before, to_add);
--- 2676,2749 ----
{
case POLYNOMIAL_CHREC:
if (no_evolution_in_loop_p (chrec_before, loop_nb))
! {
! switch (TREE_CODE (chrec_before))
! {
! case POLYNOMIAL_CHREC:
! if (loop_nb != CHREC_VARIABLE (to_add)
! && loop_is_included_in (loop_nb, CHREC_VARIABLE (to_add)))
! /* testsuite/.../ssa-chrec-38.c. */
! res = build_polynomial_evolution_in_loop (loop_nb,
! chrec_before,
! to_add);
! else
! /* testsuite/.../ssa-chrec-43.c. */
! res = build_polynomial_chrec
! (CHREC_VARIABLE (chrec_before),
! add_to_evolution (loop_nb, CHREC_LEFT (chrec_before), to_add),
! CHREC_RIGHT (chrec_before));
!
! break;
!
! case EXPONENTIAL_CHREC:
! if (loop_nb != CHREC_VARIABLE (to_add)
! && loop_is_included_in (loop_nb, CHREC_VARIABLE (to_add)))
! /* FIXME taylor. */
! res = reset_evolution_in_loop (loop_nb,
! chrec_before,
! chrec_top);
! else
! res = build_exponential_chrec
! (CHREC_VARIABLE (chrec_before),
! add_to_evolution (loop_nb, CHREC_LEFT (chrec_before), to_add),
! CHREC_RIGHT (chrec_before));
!
! break;
!
! default:
! if (loop_nb != CHREC_VARIABLE (to_add)
! && loop_is_included_in (loop_nb, CHREC_VARIABLE (to_add)))
! /* If TO_ADD has an evolution in an outer containing
! loop, don't restructure the tree. Example:
! {2, +, {0, +, 1}_1}_2 is not equivalent to
! {{2, +, 1}_1, +, 0}_2.
! testsuite/.../ssa-chrec-43.c */
! res = build_polynomial_evolution_in_loop (loop_nb,
! chrec_before,
! to_add);
! else
! {
! /* When CHREC_BEFORE is constant, it becomes the new
! initial condition of the evolution, while the
! initial condition of TO_ADD is added to the
! evolution in LOOP_NB. Example:
! (add_to_evolution
! (loop_nb = 1)
! (chrec_before = 2)
! (to_add = {3, +, 4}_1)
! (res = {{2, +, 3}_1, +, 4}_1))
! testsuite/.../ssa-chrec-08.c */
! tree init_cond_to_add = initial_condition (to_add);
!
! chrec_before = replace_initial_condition
! (to_add, chrec_before);
! res = build_polynomial_evolution_in_loop
! (loop_nb, chrec_before, init_cond_to_add);
! }
! break;
! }
! }
!
else
/* testsuite/.../ssa-chrec-37.c. */
res = add_expr_to_loop_evolution (loop_nb, chrec_before, to_add);
*************** add_to_evolution (unsigned loop_nb,
*** 2558,2571 ****
break;
}
! DBG_S (fprintf (stderr, " (loop_nb = %d)\n", loop_nb);
! fprintf (stderr, " (chrec_before = ");
! debug_generic_expr (chrec_before);
! fprintf (stderr, " )\n");
! fprintf (stderr, " (to_add = ");
! debug_generic_expr (to_add);
! fprintf (stderr, " )\n");
! fprintf (stderr, " (res = ");
debug_generic_expr (res);
fprintf (stderr, " )\n");
fprintf (stderr, ")\n"));
--- 2778,2784 ----
break;
}
! DBG_S (fprintf (stderr, " (res = ");
debug_generic_expr (res);
fprintf (stderr, " )\n");
fprintf (stderr, ")\n"));
*************** multiply_evolution (unsigned loop_nb,
*** 2590,2605 ****
abort ();
#endif
! DBG_S (fprintf (stderr, "(multiply_evolution \n"));
switch (TREE_CODE (to_mult))
{
case EXPONENTIAL_CHREC:
if (no_evolution_in_loop_p (chrec_before, loop_nb))
/* testsuite/.../ssa-chrec-41.c. */
! res = build_exponential_evolution_in_loop (loop_nb,
! chrec_before,
! to_mult);
else
/* testsuite/.../ssa-chrec-22.c. */
res = multiply_by_expr_the_loop_evolution (loop_nb,
--- 2803,2874 ----
abort ();
#endif
! DBG_S (fprintf (stderr, "(multiply_evolution \n");
! fprintf (stderr, " (loop_nb = %d)\n", loop_nb);
! fprintf (stderr, " (chrec_before = ");
! debug_generic_expr (chrec_before);
! fprintf (stderr, " )\n");
! fprintf (stderr, " (to_mult = ");
! debug_generic_expr (to_mult);
! fprintf (stderr, " )\n"));
switch (TREE_CODE (to_mult))
{
case EXPONENTIAL_CHREC:
if (no_evolution_in_loop_p (chrec_before, loop_nb))
/* testsuite/.../ssa-chrec-41.c. */
! {
! switch (TREE_CODE (chrec_before))
! {
! case POLYNOMIAL_CHREC:
!
! if (loop_nb != CHREC_VARIABLE (to_mult)
! && loop_is_included_in (loop_nb, CHREC_VARIABLE (to_mult)))
! /* FIXME taylor. */
! res = reset_evolution_in_loop (loop_nb,
! chrec_before,
! chrec_top);
! else
! res = build_polynomial_chrec
! (CHREC_VARIABLE (chrec_before),
! multiply_evolution (loop_nb, CHREC_LEFT (chrec_before), to_mult),
! CHREC_RIGHT (chrec_before));
!
! break;
!
! case EXPONENTIAL_CHREC:
! if (loop_nb != CHREC_VARIABLE (to_mult)
! && loop_is_included_in (loop_nb, CHREC_VARIABLE (to_mult)))
! res = build_exponential_evolution_in_loop (loop_nb,
! chrec_before,
! to_mult);
! else
! res = build_exponential_chrec
! (CHREC_VARIABLE (chrec_before),
! multiply_evolution (loop_nb, CHREC_LEFT (chrec_before), to_mult),
! CHREC_RIGHT (chrec_before));
!
! break;
!
! default:
! if (loop_nb != CHREC_VARIABLE (to_mult)
! && loop_is_included_in (loop_nb, CHREC_VARIABLE (to_mult)))
! res = build_exponential_evolution_in_loop (loop_nb,
! chrec_before,
! to_mult);
! else
! {
! tree init_cond_to_mult = initial_condition (to_mult);
!
! chrec_before = replace_initial_condition
! (to_mult, chrec_before);
! res = build_exponential_evolution_in_loop
! (loop_nb, chrec_before, init_cond_to_mult);
! }
! break;
! }
! }
!
else
/* testsuite/.../ssa-chrec-22.c. */
res = multiply_by_expr_the_loop_evolution (loop_nb,
*************** multiply_evolution (unsigned loop_nb,
*** 2632,2657 ****
chrec_before,
to_mult);
else
- /* Example:
- LOOP_NB = 1
- TO_ADD = "3*N"
- CHREC_BEFORE = "{{0, +, 1}_1, +, 5}_1"
- --
- RES = "{{0, +, 3*N + 1}_1, +, 5}_1". */
res = multiply_by_expr_the_loop_evolution (loop_nb,
chrec_before,
to_mult);
break;
}
! DBG_S (fprintf (stderr, " (loop_nb = %d)\n", loop_nb);
! fprintf (stderr, " (chrec_before = ");
! debug_generic_expr (chrec_before);
! fprintf (stderr, " )\n");
! fprintf (stderr, " (to_mult = ");
! debug_generic_expr (to_mult);
! fprintf (stderr, " )\n");
! fprintf (stderr, " (res = ");
debug_generic_expr (res);
fprintf (stderr, " )\n");
fprintf (stderr, ")\n"));
--- 2901,2913 ----
chrec_before,
to_mult);
else
res = multiply_by_expr_the_loop_evolution (loop_nb,
chrec_before,
to_mult);
break;
}
! DBG_S (fprintf (stderr, " (res = ");
debug_generic_expr (res);
fprintf (stderr, " )\n");
fprintf (stderr, ")\n"));
*************** analyze_scalar_evolution (unsigned loop_
*** 3576,3581 ****
--- 3832,3842 ----
if (TREE_CODE (version) == SSA_NAME
&& initial_condition (res) == version)
res = analyze_scalar_evolution_1 (loop_nb, version);
+
+ /* Don't expose to the client passes all the information from the
+ evolution knowledge base: select only the evolution parts in the
+ current LOOP_NB and in the outer containing loops. */
+ res = select_outer_and_current_evolutions (loop_nb, res);
DBG_S (fprintf (stderr, ")\n"));
return res;
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-06.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-06.c,v
retrieving revision 1.1.2.2
diff -c -3 -p -r1.1.2.2 ssa-chrec-06.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-06.c 9 Jan 2004 12:15:53 -0000 1.1.2.2
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-06.c 15 Jan 2004 12:27:11 -0000
*************** int main(void)
*** 19,37 ****
In this case the value of B out of the loop is that of the evolution
function of B applied to the number of iterations the inner loop_2 runs.
Value (B) = {23, +, 5}_2 (6) = 53. */
/* At this point, the variable A has the evolution function:
{{22, +, 6}_1, +, 1}_2. */
a = a + b;
/* At this point, the variable A has the evolution function:
! {{22, +, {59, +, 5}_2}_1, +, 1}_2. */
! /* And finally the a+=1 from the FOR_STMT produces the evolution function:
! {{22, +, {60, +, 5}_2}_1, +, 1}_2. */
}
/* Consequently, the outer loop runs exactly 1 times. */
}
/* The analyzer has to detect the following evolution functions:
b -> {23, +, 5}_2
! a -> {{22, +, {60, +, 5}_2}_1, +, 1}_2
*/
/* { dg-final { diff-tree-dumps "scev" } } */
--- 19,42 ----
In this case the value of B out of the loop is that of the evolution
function of B applied to the number of iterations the inner loop_2 runs.
Value (B) = {23, +, 5}_2 (6) = 53. */
+
/* At this point, the variable A has the evolution function:
{{22, +, 6}_1, +, 1}_2. */
a = a + b;
/* At this point, the variable A has the evolution function:
! {{22, +, 59}_1, +, 1}_2. The evolution of the variable B in
! the loop_2 does not matter, and is not recorded in the
! evolution of A. The above statement is equivalent to:
! "a = a + 53", ie. the scalar value of B on exit of the loop_2. */
!
! /* And finally the a+=1 from the FOR_STMT produces the evolution
! function: {{22, +, 60}_1, +, 1}_2. */
}
/* Consequently, the outer loop runs exactly 1 times. */
}
/* The analyzer has to detect the following evolution functions:
b -> {23, +, 5}_2
! a -> {{22, +, 60}_1, +, 1}_2
*/
/* { dg-final { diff-tree-dumps "scev" } } */
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-06.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-06.c.scev,v
retrieving revision 1.1.2.2
diff -c -3 -p -r1.1.2.2 ssa-chrec-06.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-06.c.scev 9 Jan 2004 12:15:53 -0000 1.1.2.2
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-06.c.scev 15 Jan 2004 12:27:11 -0000
*************** b
*** 10,16 ****
Scalar evolution functions:
a
! -> {{22, +, {60, +, 5}_2}_1, +, 1}_2
--- 10,16 ----
Scalar evolution functions:
a
! -> {{22, +, 60}_1, +, 1}_2
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-07.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-07.c.scev,v
retrieving revision 1.1.2.1
diff -c -3 -p -r1.1.2.1 ssa-chrec-07.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-07.c.scev 27 Dec 2003 05:42:51 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-07.c.scev 15 Jan 2004 12:27:11 -0000
*************** b
*** 6,12 ****
-> {2, +, 3}_1
a
! -> {-100, +, {2, +, 3}_1}_1
--- 6,12 ----
-> {2, +, 3}_1
a
! -> {{-100, +, 2}_1, +, 3}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-08.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-08.c.scev,v
retrieving revision 1.1.2.1
diff -c -3 -p -r1.1.2.1 ssa-chrec-08.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-08.c.scev 27 Dec 2003 05:42:51 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-08.c.scev 15 Jan 2004 12:27:11 -0000
*************** c
*** 6,15 ****
-> {3, +, 4}_1
b
! -> {2, +, {3, +, 4}_1}_1
a
! -> {-100, +, {2, +, {3, +, 4}_1}_1}_1
--- 6,15 ----
-> {3, +, 4}_1
b
! -> {{2, +, 3}_1, +, 4}_1
a
! -> {{{-100, +, 2}_1, +, 3}_1, +, 4}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-09.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-09.c.scev,v
retrieving revision 1.1.2.2
diff -c -3 -p -r1.1.2.2 ssa-chrec-09.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-09.c.scev 9 Jan 2004 12:15:53 -0000 1.1.2.2
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-09.c.scev 15 Jan 2004 12:27:11 -0000
*************** e
*** 6,21 ****
-> {5, +, c_13}_1
d
! -> {4, +, {5, +, c_13}_1}_1
c
! -> {3, +, {4, +, {5, +, c_13}_1}_1}_1
b
! -> {2, +, {3, +, {4, +, {5, +, c_13}_1}_1}_1}_1
a
! -> {-100, +, {2, +, {3, +, {4, +, {5, +, c_13}_1}_1}_1}_1}_1
--- 6,21 ----
-> {5, +, c_13}_1
d
! -> {{4, +, 5}_1, +, c_13}_1
c
! -> {{{3, +, 4}_1, +, 5}_1, +, c_13}_1
b
! -> {{{{2, +, 3}_1, +, 4}_1, +, 5}_1, +, c_13}_1
a
! -> {{{{{-100, +, 2}_1, +, 3}_1, +, 4}_1, +, 5}_1, +, c_13}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-11.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-11.c.scev,v
retrieving revision 1.1.2.2
diff -c -3 -p -r1.1.2.2 ssa-chrec-11.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-11.c.scev 9 Jan 2004 12:15:53 -0000 1.1.2.2
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-11.c.scev 15 Jan 2004 12:27:11 -0000
*************** g
*** 9,15 ****
-> {7, +, 8}_1
f
! -> {6, +, {7, +, 8}_1}_1
T.1
-> [-oo, +oo]
--- 9,15 ----
-> {7, +, 8}_1
f
! -> {{6, +, 7}_1, +, 8}_1
T.1
-> [-oo, +oo]
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-12.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-12.c.scev,v
retrieving revision 1.1.2.1
diff -c -3 -p -r1.1.2.1 ssa-chrec-12.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-12.c.scev 27 Dec 2003 05:42:51 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-12.c.scev 15 Jan 2004 12:27:11 -0000
*************** c
*** 6,15 ****
-> {3, +, 4}_1
b
! -> {2, +, {[0, 3], +, [0, 4]}_1}_1
a
! -> {-100, +, {2, +, {[0, 3], +, [0, 4]}_1}_1}_1
--- 6,15 ----
-> {3, +, 4}_1
b
! -> {{2, +, [0, 3]}_1, +, [0, 4]}_1
a
! -> {{{-100, +, 2}_1, +, [0, 3]}_1, +, [0, 4]}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-13.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-13.c.scev,v
retrieving revision 1.1.2.1
diff -c -3 -p -r1.1.2.1 ssa-chrec-13.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-13.c.scev 27 Dec 2003 05:42:51 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-13.c.scev 15 Jan 2004 12:27:11 -0000
*************** b
*** 9,15 ****
-> {2, +, 1}_1
a
! -> {-100, +, {[2, 3], +, 1}_1}_1
--- 9,15 ----
-> {2, +, 1}_1
a
! -> {{-100, +, [2, 3]}_1, +, 1}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-14.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-14.c.scev,v
retrieving revision 1.1.2.1
diff -c -3 -p -r1.1.2.1 ssa-chrec-14.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-14.c.scev 27 Dec 2003 05:42:51 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-14.c.scev 15 Jan 2004 12:27:11 -0000
*************** b
*** 9,18 ****
-> {2, +, 1}_1
a
! -> {-100, +, {[2, 3], +, [1, 5]}_1}_1
d
! -> {4, +, {[-98, -97], +, {[2, 3], +, [1, 5]}_1}_1}_1
--- 9,18 ----
-> {2, +, 1}_1
a
! -> {{-100, +, [2, 3]}_1, +, [1, 5]}_1
d
! -> {{{4, +, [-98, -97]}_1, +, [2, 3]}_1, +, [1, 5]}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-16.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-16.c.scev,v
retrieving revision 1.1.2.1
diff -c -3 -p -r1.1.2.1 ssa-chrec-16.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-16.c.scev 27 Dec 2003 05:42:51 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-16.c.scev 15 Jan 2004 12:27:11 -0000
*************** a
*** 6,12 ****
-> {-100, +, 23}_1
d
! -> {4, +, {-77, +, 23}_1}_1
--- 6,12 ----
-> {-100, +, 23}_1
d
! -> {{4, +, -77}_1, +, 23}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-18.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-18.c.scev,v
retrieving revision 1.1.2.2
diff -c -3 -p -r1.1.2.2 ssa-chrec-18.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-18.c.scev 9 Jan 2004 12:15:53 -0000 1.1.2.2
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-18.c.scev 15 Jan 2004 12:27:11 -0000
*************** a
*** 9,15 ****
-> {-100, +, [MIN_EXPR <T.1_8, 3>, MAX_EXPR <T.1_8, 3>]}_1
b
! -> {2, +, {[MIN_EXPR <T.1_8, 3> + -100, MAX_EXPR <T.1_8, 3> + -100], +, [MIN_EXPR <T.1_8, 3>, MAX_EXPR <T.1_8, 3>]}_1}_1
--- 9,15 ----
-> {-100, +, [MIN_EXPR <T.1_8, 3>, MAX_EXPR <T.1_8, 3>]}_1
b
! -> {{2, +, [MIN_EXPR <T.1_8, 3> + -100, MAX_EXPR <T.1_8, 3> + -100]}_1, +, [MIN_EXPR <T.1_8, 3>, MAX_EXPR <T.1_8, 3>]}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-20.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-20.c.scev,v
retrieving revision 1.1.2.1
diff -c -3 -p -r1.1.2.1 ssa-chrec-20.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-20.c.scev 27 Dec 2003 05:42:51 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-20.c.scev 15 Jan 2004 12:27:11 -0000
*************** b
*** 6,12 ****
-> {2, +, 5}_1
a
! -> {3, +, {9, +, 5}_1}_1
--- 6,12 ----
-> {2, +, 5}_1
a
! -> {{3, +, 9}_1, +, 5}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-21.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-21.c.scev,v
retrieving revision 1.1.2.1
diff -c -3 -p -r1.1.2.1 ssa-chrec-21.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-21.c.scev 27 Dec 2003 05:42:51 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-21.c.scev 15 Jan 2004 12:27:11 -0000
*************** a
*** 6,12 ****
-> {3, *, 4}_1
b
! -> {2, *, {12, *, 4}_1}_1
--- 6,12 ----
-> {3, *, 4}_1
b
! -> {{2, *, 12}_1, *, 4}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-37.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-37.c.scev,v
retrieving revision 1.1.2.2
diff -c -3 -p -r1.1.2.2 ssa-chrec-37.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-37.c.scev 9 Jan 2004 12:15:54 -0000 1.1.2.2
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-37.c.scev 15 Jan 2004 12:27:11 -0000
*************** b
*** 9,15 ****
-> {2, +, 5}_1
a
! -> {-123, +, {13, +, 17}_1}_1
--- 9,15 ----
-> {2, +, 5}_1
a
! -> {{-123, +, 13}_1, +, 17}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-38.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-38.c,v
retrieving revision 1.1.2.1
diff -c -3 -p -r1.1.2.1 ssa-chrec-38.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-38.c 27 Dec 2003 05:42:52 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-38.c 15 Jan 2004 12:27:11 -0000
*************** int main ()
*** 19,27 ****
/* Exercises the build_polynomial_evolution_in_loop function in the following context:
(add_to_evolution
loop_num = 2
! chrec_before = {3, +, {7, +, 5}_1}_1
to_add = {11, +, 12}_1
! res = {{3, +, {7, +, 5}_1}_1, +, {11, +, 12}_1}_2
)
This also exercises the chrec_apply function in the following context:
--- 19,27 ----
/* Exercises the build_polynomial_evolution_in_loop function in the following context:
(add_to_evolution
loop_num = 2
! chrec_before = {3, +, 7, +, 5}_1
to_add = {11, +, 12}_1
! res = {{3, +, 7, +, 5}_1, +, {11, +, 12}_1}_2
)
This also exercises the chrec_apply function in the following context:
*************** int main ()
*** 29,38 ****
var = 2
chrec = {0, +, {11, +, 12}_1}_2
x = 5
! res = [-oo, +oo]
)
!
! The result should be: {{3, +, {(7 + 5*11), +, (5 + 5*12)}_1}_1, +, {(11, +, 12}_1}_2. */
a += c;
}
c += 12;
--- 29,37 ----
var = 2
chrec = {0, +, {11, +, 12}_1}_2
x = 5
! res = {55, +, 60}_1
)
! */
a += c;
}
c += 12;
*************** int main ()
*** 43,49 ****
b -> {2, +, 5}_1
c -> {11, +, 12}_1
d -> {-5, +, 1}_2
! a -> {{3, +, {62, +, 65}_1}_1, +, {11, +, 12}_1}_2
*/
/* { dg-final { diff-tree-dumps "scev" } } */
--- 42,48 ----
b -> {2, +, 5}_1
c -> {11, +, 12}_1
d -> {-5, +, 1}_2
! a -> {{3, +, 62, +, 65}_1, +, {11, +, 12}_1}_2
*/
/* { dg-final { diff-tree-dumps "scev" } } */
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-38.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-38.c.scev,v
retrieving revision 1.1.2.2
diff -c -3 -p -r1.1.2.2 ssa-chrec-38.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-38.c.scev 9 Jan 2004 12:15:54 -0000 1.1.2.2
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-38.c.scev 15 Jan 2004 12:27:11 -0000
*************** c
*** 16,22 ****
-> {11, +, 12}_1
a
! -> {{3, +, {62, +, 65}_1}_1, +, {11, +, 12}_1}_2
--- 16,22 ----
-> {11, +, 12}_1
a
! -> {{{3, +, 62}_1, +, 65}_1, +, {11, +, 12}_1}_2
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-39.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-39.c.scev,v
retrieving revision 1.1.2.2
diff -c -3 -p -r1.1.2.2 ssa-chrec-39.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-39.c.scev 9 Jan 2004 12:15:54 -0000 1.1.2.2
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-39.c.scev 15 Jan 2004 12:27:11 -0000
*************** b
*** 13,26 ****
-> {2, +, 25}_1
a
! -> {{3, +, {ParmN_12 * 5 + 27, +, 25}_1}_1, +, ParmN_12}_2
!
!
!
! Scalar evolution functions:
!
! ParmN
! -> not_analyzed_yet
--- 13,19 ----
-> {2, +, 25}_1
a
! -> {{{3, +, ParmN_12 * 5 + 27}_1, +, 25}_1, +, ParmN_12}_2
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-42.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-42.c,v
retrieving revision 1.1.2.1
diff -c -3 -p -r1.1.2.1 ssa-chrec-42.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-42.c 27 Dec 2003 05:42:52 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-42.c 15 Jan 2004 12:27:11 -0000
*************** int main ()
*** 22,30 ****
/*
c -> {0, +, 1}_1
! b -> {2, +, {0, +, 1}_1}_1
d -> {5, +, 9}_1
! a -> {1, +, {7, +, {9, +, 1}_1}_1}_1
*/
/* { dg-final { diff-tree-dumps "scev" } } */
--- 22,30 ----
/*
c -> {0, +, 1}_1
! b -> {2, +, 0, +, 1}_1
d -> {5, +, 9}_1
! a -> {1, +, 7, +, 9, +, 1}_1
*/
/* { dg-final { diff-tree-dumps "scev" } } */
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-42.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-42.c.scev,v
retrieving revision 1.1.2.2
diff -c -3 -p -r1.1.2.2 ssa-chrec-42.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-42.c.scev 9 Jan 2004 12:15:54 -0000 1.1.2.2
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-42.c.scev 15 Jan 2004 12:27:11 -0000
*************** c
*** 9,18 ****
-> {0, +, 1}_1
b
! -> {2, +, {0, +, 1}_1}_1
a
! -> {1, +, {7, +, {9, +, 1}_1}_1}_1
--- 9,18 ----
-> {0, +, 1}_1
b
! -> {{2, +, 0}_1, +, 1}_1
a
! -> {{{1, +, 7}_1, +, 9}_1, +, 1}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-43.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-43.c,v
retrieving revision 1.1.2.1
diff -c -3 -p -r1.1.2.1 ssa-chrec-43.c
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-43.c 27 Dec 2003 05:42:52 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-43.c 15 Jan 2004 12:27:11 -0000
*************** int main ()
*** 16,32 ****
(add_to_evolution
loop_num = 1
chrec_before = 1
! to_add = {{2, +, {0, +, 10}_1}_1, +, {0, +, 1}_1}_2
! res = {1, +, {{2, +, {0, +, 10}_1}_1, +, {0, +, 1}_1}_2}_1
! ). */
a += b;
/* And finally the following statement produces the expected scev:
(add_to_evolution
loop_num = 1
! chrec_before = {1, +, {{2, +, {0, +, 10}_1}_1, +, {0, +, 1}_1}_2}_1
to_add = {5, +, 9}_1
! res = {1, +, {{7, +, {9, +, 10}_1}_1, +, {0, +, 1}_1}_2}_1
)
That ends this not so formal proof ("CQFD" in french ;-). */
a += d;
--- 16,34 ----
(add_to_evolution
loop_num = 1
chrec_before = 1
! to_add = {{2, +, 0}_1, +, 10}_1
! res = {{{1, +, 2}_1, +, 0}_1, +, 10}_1
! )
! Note that the evolution of B in the inner loop_2 is not
! relevant to the evolution of A in the loop_1. */
a += b;
/* And finally the following statement produces the expected scev:
(add_to_evolution
loop_num = 1
! chrec_before = {{{1, +, 2}_1, +, 0}_1, +, 10}_1
to_add = {5, +, 9}_1
! res = {{{1, +, 7}_1, +, 9}_1, +, 10}_1
)
That ends this not so formal proof ("CQFD" in french ;-). */
a += d;
*************** int main ()
*** 39,45 ****
loop_num = 1
chrec_before = {2, +, {0, +, 1}_1}_2
to_add = {0, +, 10}_1
! res = {{2, +, {0, +, 10}_1}_1, +, {0, +, 1}_1}_2
).
Note that the variable c has not yet been updated in the loop, and thus its value
at this version is "{0, +, 1}_1". Since the loop_2 runs exactly 10 times, the overall
--- 41,47 ----
loop_num = 1
chrec_before = {2, +, {0, +, 1}_1}_2
to_add = {0, +, 10}_1
! res = {{{2, +, 0}_1, +, 10}_1, +, {0, +, 1}_1}_2
).
Note that the variable c has not yet been updated in the loop, and thus its value
at this version is "{0, +, 1}_1". Since the loop_2 runs exactly 10 times, the overall
*************** int main ()
*** 54,62 ****
/*
c -> {0, +, 1}_1
e -> {0, +, 1}_2
! b -> {{2, +, {0, +, 10}_1}_1, +, {0, +, 1}_1}_2
d -> {5, +, 9}_1
! a -> {1, +, {{7, +, {9, +, 10}_1}_1, +, {0, +, 1}_1}_2}_1
*/
/* { dg-final { diff-tree-dumps "scev" } } */
--- 56,64 ----
/*
c -> {0, +, 1}_1
e -> {0, +, 1}_2
! b -> {{2, +, 0, +, 10}_1, +, {0, +, 1}_1}_2
d -> {5, +, 9}_1
! a -> {1, +, 7, +, 9, +, 10}_1
*/
/* { dg-final { diff-tree-dumps "scev" } } */
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-43.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-43.c.scev,v
retrieving revision 1.1.2.2
diff -c -3 -p -r1.1.2.2 ssa-chrec-43.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-43.c.scev 9 Jan 2004 12:15:54 -0000 1.1.2.2
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-43.c.scev 15 Jan 2004 12:27:11 -0000
*************** c
*** 16,25 ****
-> {0, +, 1}_1
b
! -> {{2, +, {0, +, 10}_1}_1, +, {0, +, 1}_1}_2
a
! -> {1, +, {{7, +, {9, +, 10}_1}_1, +, {0, +, 1}_1}_2}_1
--- 16,25 ----
-> {0, +, 1}_1
b
! -> {{{2, +, 0}_1, +, 10}_1, +, {0, +, 1}_1}_2
a
! -> {{{1, +, 7}_1, +, 9}_1, +, 10}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-44.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-44.c.scev,v
retrieving revision 1.1.2.2
diff -c -3 -p -r1.1.2.2 ssa-chrec-44.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-44.c.scev 9 Jan 2004 12:15:54 -0000 1.1.2.2
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-44.c.scev 15 Jan 2004 12:27:11 -0000
*************** T.2
*** 9,15 ****
-> {(0.0 + -1.0e+0) * 1.00000000000000005551115123125782702118158340454e-1, +, -1.0e+0 * 1.00000000000000005551115123125782702118158340454e-1}_1
altitude
! -> {3.0e+3, +, {(0.0 + -1.0e+0) * 1.00000000000000005551115123125782702118158340454e-1, +, -1.0e+0 * 1.00000000000000005551115123125782702118158340454e-1}_1}_1
--- 9,15 ----
-> {(0.0 + -1.0e+0) * 1.00000000000000005551115123125782702118158340454e-1, +, -1.0e+0 * 1.00000000000000005551115123125782702118158340454e-1}_1
altitude
! -> {{3.0e+3, +, (0.0 + -1.0e+0) * 1.00000000000000005551115123125782702118158340454e-1}_1, +, -1.0e+0 * 1.00000000000000005551115123125782702118158340454e-1}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-45.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-45.c.scev,v
retrieving revision 1.1.2.2
diff -c -3 -p -r1.1.2.2 ssa-chrec-45.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-45.c.scev 9 Jan 2004 12:15:54 -0000 1.1.2.2
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-45.c.scev 15 Jan 2004 12:27:11 -0000
*************** T.2
*** 9,15 ****
-> {(0.0 + 1.0e+0) * 1.00000000000000005551115123125782702118158340454e-1, +, 1.0e+0 * 1.00000000000000005551115123125782702118158340454e-1}_1
altitude
! -> {3.0e+3, +, {(0.0 + 1.0e+0) * 1.00000000000000005551115123125782702118158340454e-1 * -1, +, 1.0e+0 * 1.00000000000000005551115123125782702118158340454e-1 * -1}_1}_1
--- 9,15 ----
-> {(0.0 + 1.0e+0) * 1.00000000000000005551115123125782702118158340454e-1, +, 1.0e+0 * 1.00000000000000005551115123125782702118158340454e-1}_1
altitude
! -> {{3.0e+3, +, (0.0 + 1.0e+0) * 1.00000000000000005551115123125782702118158340454e-1 * -1}_1, +, 1.0e+0 * 1.00000000000000005551115123125782702118158340454e-1 * -1}_1
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-53.c.alldd
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-53.c.alldd,v
retrieving revision 1.1.2.1
diff -c -3 -p -r1.1.2.1 ssa-chrec-53.c.alldd
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-53.c.alldd 12 Jan 2004 14:40:10 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-53.c.alldd 15 Jan 2004 12:27:11 -0000
***************
*** 2,73 ****
stmt: T.1_522 = b[i_1];
ref: b[i_1];
base_name: b
! Access function 0: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
)
(Data Ref 1:
stmt: a[i_1] = T.1_522;
ref: a[i_1];
base_name: a
! Access function 0: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
)
(Data Ref 2:
stmt: T.1_519 = b[i_2];
ref: b[i_2];
base_name: b
! Access function 0: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
)
(Data Ref 3:
stmt: a[i_2] = T.1_519;
ref: a[i_2];
base_name: a
! Access function 0: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
)
(Data Ref 4:
stmt: T.2_516 = db[i_3];
ref: db[i_3];
base_name: db
! Access function 0: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
)
(Data Ref 5:
stmt: da[i_3] = T.2_516;
ref: da[i_3];
base_name: da
! Access function 0: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
)
(Data Ref 6:
stmt: a[i_4] = 5.0e+0;
ref: a[i_4];
base_name: a
! Access function 0: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
)
(Data Ref 7:
stmt: T.1_507 = b[i_5];
ref: b[i_5];
base_name: b
! Access function 0: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
)
(Data Ref 8:
stmt: T.3_508 = c[i_5];
ref: c[i_5];
base_name: c
! Access function 0: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
)
(Data Ref 9:
stmt: T.5_510 = d[i_5];
ref: d[i_5];
base_name: d
! Access function 0: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
)
(Data Dep (A = 0, B = 0):
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
--- 2,73 ----
stmt: T.1_522 = b[i_1];
ref: b[i_1];
base_name: b
! Access function 0: {0, +, 1}_1
)
(Data Ref 1:
stmt: a[i_1] = T.1_522;
ref: a[i_1];
base_name: a
! Access function 0: {0, +, 1}_1
)
(Data Ref 2:
stmt: T.1_519 = b[i_2];
ref: b[i_2];
base_name: b
! Access function 0: {0, +, 1}_2
)
(Data Ref 3:
stmt: a[i_2] = T.1_519;
ref: a[i_2];
base_name: a
! Access function 0: {0, +, 1}_2
)
(Data Ref 4:
stmt: T.2_516 = db[i_3];
ref: db[i_3];
base_name: db
! Access function 0: {0, +, 1}_3
)
(Data Ref 5:
stmt: da[i_3] = T.2_516;
ref: da[i_3];
base_name: da
! Access function 0: {0, +, 1}_3
)
(Data Ref 6:
stmt: a[i_4] = 5.0e+0;
ref: a[i_4];
base_name: a
! Access function 0: {0, +, 1}_4
)
(Data Ref 7:
stmt: T.1_507 = b[i_5];
ref: b[i_5];
base_name: b
! Access function 0: {0, +, 1}_5
)
(Data Ref 8:
stmt: T.3_508 = c[i_5];
ref: c[i_5];
base_name: c
! Access function 0: {0, +, 1}_5
)
(Data Ref 9:
stmt: T.5_510 = d[i_5];
ref: d[i_5];
base_name: d
! Access function 0: {0, +, 1}_5
)
(Data Dep (A = 0, B = 0):
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, 1}_1
! access_fn_B: {0, +, 1}_1
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_1
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_1
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
***************
*** 86,104 ****
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! (0
)
)
(Direction Vector:
! (=)
)
)
--- 86,104 ----
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, 1}_1
! access_fn_B: {0, +, 1}_2
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_2
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_1
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! ([-oo, +oo]
)
)
(Direction Vector:
! (*)
)
)
***************
*** 118,136 ****
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! (0
)
)
(Direction Vector:
! (=)
)
)
--- 118,136 ----
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, 1}_1
! access_fn_B: {0, +, 1}_5
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_5
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_1
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! ([-oo, +oo]
)
)
(Direction Vector:
! (*)
)
)
***************
*** 147,157 ****
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
--- 147,157 ----
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, 1}_1
! access_fn_B: {0, +, 1}_1
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_1
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_1
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
***************
*** 170,188 ****
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! (0
)
)
(Direction Vector:
! (=)
)
)
--- 170,188 ----
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, 1}_1
! access_fn_B: {0, +, 1}_2
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_2
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_1
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! ([-oo, +oo]
)
)
(Direction Vector:
! (*)
)
)
***************
*** 196,214 ****
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! (0
)
)
(Direction Vector:
! (=)
)
)
--- 196,214 ----
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, 1}_1
! access_fn_B: {0, +, 1}_4
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_4
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_1
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! ([-oo, +oo]
)
)
(Direction Vector:
! (*)
)
)
***************
*** 225,243 ****
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! (0
)
)
(Direction Vector:
! (=)
)
)
--- 225,243 ----
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, 1}_2
! access_fn_B: {0, +, 1}_1
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_1
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_2
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! ([-oo, +oo]
)
)
(Direction Vector:
! (*)
)
)
***************
*** 248,258 ****
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
--- 248,258 ----
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, 1}_2
! access_fn_B: {0, +, 1}_2
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_2
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_2
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
***************
*** 280,298 ****
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! (0
)
)
(Direction Vector:
! (=)
)
)
--- 280,298 ----
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, 1}_2
! access_fn_B: {0, +, 1}_5
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_5
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_2
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! ([-oo, +oo]
)
)
(Direction Vector:
! (*)
)
)
***************
*** 309,327 ****
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! (0
)
)
(Direction Vector:
! (=)
)
)
--- 309,327 ----
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, 1}_2
! access_fn_B: {0, +, 1}_1
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_1
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_2
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! ([-oo, +oo]
)
)
(Direction Vector:
! (*)
)
)
***************
*** 332,342 ****
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
--- 332,342 ----
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, 1}_2
! access_fn_B: {0, +, 1}_2
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_2
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_2
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
***************
*** 358,376 ****
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! (0
)
)
(Direction Vector:
! (=)
)
)
--- 358,376 ----
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, 1}_2
! access_fn_B: {0, +, 1}_4
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_4
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_2
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! ([-oo, +oo]
)
)
(Direction Vector:
! (*)
)
)
***************
*** 399,409 ****
(subscript 0:
base_name_A: db
base_name_B: db
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
--- 399,409 ----
(subscript 0:
base_name_A: db
base_name_B: db
! access_fn_A: {0, +, 1}_3
! access_fn_B: {0, +, 1}_3
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_3
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_3
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
***************
*** 449,459 ****
(subscript 0:
base_name_A: da
base_name_B: da
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
--- 449,459 ----
(subscript 0:
base_name_A: da
base_name_B: da
! access_fn_A: {0, +, 1}_3
! access_fn_B: {0, +, 1}_3
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_3
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_3
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
***************
*** 484,502 ****
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! (0
)
)
(Direction Vector:
! (=)
)
)
--- 484,502 ----
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, 1}_4
! access_fn_B: {0, +, 1}_1
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_1
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_4
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! ([-oo, +oo]
)
)
(Direction Vector:
! (*)
)
)
***************
*** 507,525 ****
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! (0
)
)
(Direction Vector:
! (=)
)
)
--- 507,525 ----
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, 1}_4
! access_fn_B: {0, +, 1}_2
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_2
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_4
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! ([-oo, +oo]
)
)
(Direction Vector:
! (*)
)
)
***************
*** 533,543 ****
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
--- 533,543 ----
(subscript 0:
base_name_A: a
base_name_B: a
! access_fn_A: {0, +, 1}_4
! access_fn_B: {0, +, 1}_4
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_4
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_4
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
***************
*** 562,580 ****
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! (0
)
)
(Direction Vector:
! (=)
)
)
--- 562,580 ----
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, 1}_5
! access_fn_B: {0, +, 1}_1
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_1
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_5
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! ([-oo, +oo]
)
)
(Direction Vector:
! (*)
)
)
***************
*** 585,603 ****
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! (0
)
)
(Direction Vector:
! (=)
)
)
--- 585,603 ----
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, 1}_5
! access_fn_B: {0, +, 1}_2
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_2
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_5
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
! ([-oo, +oo]
)
)
(Direction Vector:
! (*)
)
)
***************
*** 617,627 ****
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
--- 617,627 ----
(subscript 0:
base_name_A: b
base_name_B: b
! access_fn_A: {0, +, 1}_5
! access_fn_B: {0, +, 1}_5
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_5
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_5
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
***************
*** 667,677 ****
(subscript 0:
base_name_A: c
base_name_B: c
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
--- 667,677 ----
(subscript 0:
base_name_A: c
base_name_B: c
! access_fn_A: {0, +, 1}_5
! access_fn_B: {0, +, 1}_5
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_5
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_5
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
***************
*** 717,727 ****
(subscript 0:
base_name_A: d
base_name_B: d
! access_fn_A: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! access_fn_B: {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
! iterations_that_access_an_element_twice_in_A: 0
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: 0
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
--- 717,727 ----
(subscript 0:
base_name_A: d
base_name_B: d
! access_fn_A: {0, +, 1}_5
! access_fn_B: {0, +, 1}_5
! iterations_that_access_an_element_twice_in_A: {0, +, 1}_5
last_iteration_that_access_an_element_twice_in_A: [-oo, +oo]
! iterations_that_access_an_element_twice_in_B: {0, +, 1}_5
last_iteration_that_access_an_element_twice_in_B: [-oo, +oo]
)
(Distance Vector:
Index: testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-53.c.scev
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa-chrec/Attic/ssa-chrec-53.c.scev,v
retrieving revision 1.1.2.1
diff -c -3 -p -r1.1.2.1 ssa-chrec-53.c.scev
*** testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-53.c.scev 12 Jan 2004 14:40:10 -0000 1.1.2.1
--- testsuite/gcc.dg/tree-ssa-chrec/ssa-chrec-53.c.scev 15 Jan 2004 12:27:11 -0000
*************** T.35
*** 104,144 ****
-> {{{{{{{{{{{{{i_14 + 1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13
i
! -> {0, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
Scalar evolution functions:
T.8
! -> {8, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
Scalar evolution functions:
T.8
! -> {8, +, {{{{{{{{{{{{{1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13}_14
Scalar evolution functions:
T.16
! -> {0, +, {{{{{{{{{{{{{2, +, 2}_1, +, 2}_2, +, 2}_3, +, 2}_4, +, 2}_5, +, 2}_6, +, 2}_7, +, 2}_8, +, 2}_9, +, 2}_10, +, 2}_11, +, 2}_12, +, 2}_13}_14
T.17
! -> {1, +, {{{{{{{{{{{{{2, +, 2}_1, +, 2}_2, +, 2}_3, +, 2}_4, +, 2}_5, +, 2}_6, +, 2}_7, +, 2}_8, +, 2}_9, +, 2}_10, +, 2}_11, +, 2}_12, +, 2}_13}_14
Scalar evolution functions:
T.16
! -> {0, +, {{{{{{{{{{{{{2, +, 2}_1, +, 2}_2, +, 2}_3, +, 2}_4, +, 2}_5, +, 2}_6, +, 2}_7, +, 2}_8, +, 2}_9, +, 2}_10, +, 2}_11, +, 2}_12, +, 2}_13}_14
T.17
! -> {1, +, {{{{{{{{{{{{{2, +, 2}_1, +, 2}_2, +, 2}_3, +, 2}_4, +, 2}_5, +, 2}_6, +, 2}_7, +, 2}_8, +, 2}_9, +, 2}_10, +, 2}_11, +, 2}_12, +, 2}_13}_14
--- 104,144 ----
-> {{{{{{{{{{{{{i_14 + 1, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13
i
! -> {{{{{{{{{{{{{{0, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13, +, 1}_14
Scalar evolution functions:
T.8
! -> {{{{{{{{{{{{{{8, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13, +, 1}_14
Scalar evolution functions:
T.8
! -> {{{{{{{{{{{{{{8, +, 1}_1, +, 1}_2, +, 1}_3, +, 1}_4, +, 1}_5, +, 1}_6, +, 1}_7, +, 1}_8, +, 1}_9, +, 1}_10, +, 1}_11, +, 1}_12, +, 1}_13, +, 1}_14
Scalar evolution functions:
T.16
! -> {{{{{{{{{{{{{{0, +, 2}_1, +, 2}_2, +, 2}_3, +, 2}_4, +, 2}_5, +, 2}_6, +, 2}_7, +, 2}_8, +, 2}_9, +, 2}_10, +, 2}_11, +, 2}_12, +, 2}_13, +, 2}_14
T.17
! -> {{{{{{{{{{{{{{1, +, 2}_1, +, 2}_2, +, 2}_3, +, 2}_4, +, 2}_5, +, 2}_6, +, 2}_7, +, 2}_8, +, 2}_9, +, 2}_10, +, 2}_11, +, 2}_12, +, 2}_13, +, 2}_14
Scalar evolution functions:
T.16
! -> {{{{{{{{{{{{{{0, +, 2}_1, +, 2}_2, +, 2}_3, +, 2}_4, +, 2}_5, +, 2}_6, +, 2}_7, +, 2}_8, +, 2}_9, +, 2}_10, +, 2}_11, +, 2}_12, +, 2}_13, +, 2}_14
T.17
! -> {{{{{{{{{{{{{{1, +, 2}_1, +, 2}_2, +, 2}_3, +, 2}_4, +, 2}_5, +, 2}_6, +, 2}_7, +, 2}_8, +, 2}_9, +, 2}_10, +, 2}_11, +, 2}_12, +, 2}_13, +, 2}_14
More information about the Gcc-patches
mailing list