PIPS
|
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "genC.h"
#include "boolean.h"
#include "arithmetique.h"
#include "vecteur.h"
#include "contrainte.h"
#include "ray_dte.h"
#include "sommet.h"
#include "sg.h"
#include "sc.h"
#include "polyedre.h"
#include "union.h"
#include "matrix.h"
#include "ri.h"
#include "constants.h"
#include "ri-util.h"
#include "misc.h"
#include "complexity_ri.h"
#include "database.h"
#include "graph.h"
#include "dg.h"
#include "paf_ri.h"
#include "parser_private.h"
#include "property.h"
#include "reduction.h"
#include "text.h"
#include "text-util.h"
#include "tiling.h"
#include "pipsdbm.h"
#include "resources.h"
#include "static_controlize.h"
#include "paf-util.h"
#include "pip.h"
#include "array_dfg.h"
#include "reindexing.h"
Go to the source code of this file.
Macros | |
#define | SUCC(cp) (((cp) == NULL) ? NULL : (cp)->succ) |
Typedefs | |
typedef dfg_vertex_label | vertex_label |
Name : reindexing_utils.c Package : reindexing Author : Alexis Platonoff & Antoine Cloue Date : May 1994 Historic : More... | |
typedef dfg_arc_label | arc_label |
Functions | |
Psyslist | reverse_psyslist (Psyslist l) |
====================================================================== More... | |
expression | psystem_to_expression (Psysteme ps) |
====================================================================== More... | |
reference | my_build_new_ref (int kind, int n, list subscripts, reference old_r) |
======================================================================== More... | |
void | my_lhs_subs_in_ins (instruction ins, string SA, int n, list subscripts) |
======================================================================== More... | |
list | ADD_LIST_TO_LIST (list l1, list l2) |
======================================================================= More... | |
void | fprint_list_of_ins (FILE *fp, list li) |
======================================================================= More... | |
void | fprint_loop (FILE *fp, loop lp) |
======================================================================= More... | |
void | fprint_call (FILE *fp, call ca) |
======================================================================= More... | |
void | print_detailed_ins (instruction ins) |
====================================================================== More... | |
Psyslist | add_sclist_to_sclist (Psyslist l1, Psyslist l2) |
======================================================================= More... | |
Psysteme | base_complete (Psysteme sys, list var_l, list par_l, list *new_l) |
======================================================================= More... | |
Psysteme | sc_add_egalite_at_end (Psysteme ps, Pcontrainte co) |
======================================================================= More... | |
void | matrix_coef_mult (Pmatrix A, Value nb) |
======================================================================== More... | |
void | my_constraints_with_sym_cst_to_matrices (Pcontrainte pc, Pbase index_base, Pbase const_base, Pmatrix A, Pmatrix B) |
===================================================================== More... | |
void | my_matrices_to_constraints_with_sym_cst (Pcontrainte *pc, Pbase new_base, Pbase index_base, Pbase const_base, Pmatrix A, Pmatrix B) |
===================================================================== More... | |
void | my_matrices_to_constraints_with_sym_cst_2 (Pcontrainte *pc, Pbase new_base, Pbase index_base, Pbase const_base, Pmatrix A, Pmatrix B) |
===================================================================== More... | |
Psysteme | matrix_to_system (Pmatrix A, Pbase b) |
================================================================== More... | |
Psysteme | sc_reverse_constraints (Psysteme ps) |
======================================================================== More... | |
bool | vars_in_vect_p (Pvecteur pv, list vars) |
====================================================================== More... | |
expression | merge_expressions (expression exp1, expression exp2, int max_or_min) |
=================================================================== More... | |
bool | min_or_max_expression_p (expression exp) |
=================================================================== More... | |
list | extract_bdt (bdt b, int cn) |
======================================================================= More... | |
placement | extract_plc (plc p, int cn) |
======================================================================== More... | |
entity | create_new_entity (int st, char *typ, int nb) |
======================================================================== More... | |
Psysteme | change_base_in_sc (Psysteme ps, list lvar, Psysteme lequ) |
======================================================================== More... | |
list | find_new_variables (list l1, list l2) |
======================================================================== More... | |
Psysteme | my_clean_ps (Psysteme ps) |
======================================================================= More... | |
bool | is_vect_constant_p (Pvecteur v) |
======================================================================== More... | |
bool | cst_vector_p (Pvecteur v, Pbase b) |
======================================================================== More... | |
list | remove_minmax (list le) |
===================================================================== More... | |
bool | array_ref_exp_p (expression e) |
====================================================================== More... | |
Definition at line 94 of file reindexing_utils.c.
typedef dfg_arc_label arc_label |
Definition at line 92 of file reindexing_utils.c.
typedef dfg_vertex_label vertex_label |
Name : reindexing_utils.c Package : reindexing Author : Alexis Platonoff & Antoine Cloue Date : May 1994 Historic :
Documents: SOON Comments : contains some usefull functions. Ansi includes
Newgen includes
C3 includes
Pips includes
Macro functions
Internal variables
Local defines
Definition at line 91 of file reindexing_utils.c.
=======================================================================
list ADD_LIST_TO_LIST(l1, l2): add the list l2 at the end of the list l1
AC 94/06/07
Definition at line 312 of file reindexing_utils.c.
References cons::cdr, and NIL.
Referenced by build_first_comb(), and build_second_comb().
=======================================================================
Psyslist add_sclist_to_sclist(l1, l2): add the list of systems l2 at the end of the list of system l1.
Ac 94/05/05
Definition at line 498 of file reindexing_utils.c.
References Ssyslist::succ.
Referenced by build_list_of_min().
bool array_ref_exp_p | ( | expression | e | ) |
======================================================================
bool array_ref_exp_p(e)
Tests if an expression is an array, that is we test the field "reference" of the expression which should not be empty.
AC 94/07/28
Never reached.
Definition at line 1370 of file reindexing_utils.c.
References expression_syntax, NIL, pips_internal_error, reference_indices, syntax_reference, and syntax_reference_p.
Referenced by assignation_filter().
=======================================================================
Psysteme base_complete(Psysteme sys, list var_l, list par_l): "sys" gives a family of free vectors {V1, ..., Vs} represented by a linear combinations of indices from "var_l". This function wants to find the indices (I1, ..., Id) of "var_l" for which we have that {V1, ..., Vs, I1, ..., Id} is a family of free vectors. "par_l" gives the symbolic constants that may appear in "sys".
"s" is the number of equations of "sys" (its number of vectors). "d" is the number of vectors we have to find in order to get as much equations in "sys" as there are indices in "var_l".
Example: with "sys" equal to {i+j = 0, i-k+2j = 0}, and "var_l" equal to {i, j, k} we obtain the new system {i+j = 0, i-k+2j = 0, i = 0}
function written by Alexis in "utils.c". The difference is that it returns the list of new free vectors added. (AC 94/03/18)
Definition at line 539 of file reindexing_utils.c.
References ADD_ELEMENT_TO_LIST, append_eg(), Ssysteme::base, CAR, contrainte_make(), ENDP, ENTITY, gen_length(), list_to_base(), POP, sc_add_egalite(), sc_creer_base(), sc_dup(), sc_new(), sc_rm(), vect_new(), and vecteurs_libres_p().
Referenced by prepare_reindexing().
========================================================================
Psysteme change_base_in_sc(ps, lvar, lequ)
Change in the system ps all variables given by lvar by the corresponding equation of lequ. In fact, to each variable of lvar corresponds an equality of lequ which gives its value. We then substitute in ps each variable of lvar by its value given by lequ.
The system ps is modified and its new value is returned.
AC 94/03/22
There should be as many equalities in lequ as there are variables in lvar.
We have to substitute the occurrences of "cvar" in "ps" by its counterpart in "cequ->vecteur", which represents the following equality : cequ->vecteur = 0. We note it "vec" : val*cvar-vec=0, so we have : vec = -(cequ->vecteur-val*cvar)
Definition at line 1160 of file reindexing_utils.c.
References CAR, ENTITY, fprintf(), gen_length(), get_debug_level(), NIL, POP, sc_creer_base(), substitute_var_with_vec(), Scontrainte::succ, user_error, vect_chg_sgn(), vect_coeff(), vect_dup(), vect_erase_var(), and Scontrainte::vecteur.
Referenced by include_trans_on_LC_in_sc(), include_trans_on_LC_in_sc2(), and prepare_reindexing().
========================================================================
entity create_new_entity(st, typ, nb): create a new entity with the following form : "STAT_SYMstTYPnb" where st is the statement number.
This new entity is put in the list of entities that have to be declared.
AC 94/03/15
AP 95/04/20: entities must have in their full name the current module name instead of RE_MODULE_NAME
Create the entity
f_name = concatenate(RE_MODULE_NAME, MODULE_SEP_STRING, name, NULL);
Declare the entity
Definition at line 1113 of file reindexing_utils.c.
References code_declarations, concatenate(), CONS, db_get_current_module_name(), ENTITY, entity_code(), free(), gen_nconc(), get_current_module_entity(), is_basic_int, is_storage_rom, is_type_variable, is_value_unknown, make_basic(), make_entity, make_storage(), make_type(), make_value(), make_variable(), malloc(), MODULE_SEP_STRING, NIL, STAT_SYM, strdup(), and UU.
Referenced by get_time_ent(), prepare_reindexing(), and re_do_it().
========================================================================
bool cst_vector_p(Pvecteur v, Pbase b)
Tests if a vector is constant, i.e. does not depend on one of the variables given in b.
AC 94/07/01
Definition at line 1296 of file reindexing_utils.c.
References Svecteur::succ, value_zero_p, Svecteur::var, vect_coeff(), and VECTEUR_NUL_P.
Referenced by calculate_delay().
=======================================================================
list extract_bdt(b, cn):extract in the global bdt b the bdt of the instruction of statement cn.
AC 94/03/15
Definition at line 1060 of file reindexing_utils.c.
References ADD_ELEMENT_TO_LIST, bdt_schedules, CAR, ENDP, NIL, POP, SCHEDULE, and schedule_statement.
Referenced by cmf_layout_align(), craft_layout_align(), and prepare_reindexing().
========================================================================
placement extract_plc(p, cn): extract in the global distribution p, the placement function of statement "cn".
AC 94/03/15
Definition at line 1083 of file reindexing_utils.c.
References CAR, ENDP, PLACEMENT, placement_statement, placement_undefined, plc_placements, POP, and user_error.
Referenced by prepare_reindexing().
========================================================================
list find_new_variables(l1, l2): replace the n first variables of list l1 by those of list l2 (gen_length(l2) = n).
AC 93/03/31
Definition at line 1212 of file reindexing_utils.c.
References ADD_ELEMENT_TO_LIST, CAR, CDR, ENTITY, gen_length(), and NIL.
Referenced by prepare_reindexing().
void fprint_call | ( | FILE * | fp, |
call | ca | ||
) |
=======================================================================
void fprint_call(fp, ca): print a call.
AC 94/06/07
Definition at line 395 of file reindexing_utils.c.
References call_arguments, call_function, CAR, CONS, entity_local_name(), EXPRESSION, fprint_list_of_exp(), fprintf(), and NIL.
Referenced by print_detailed_ins().
void fprint_list_of_ins | ( | FILE * | fp, |
list | li | ||
) |
=======================================================================
void fprint_list_of_ins(fp, li): print a list of instruction.
AC 94/06/07
Definition at line 339 of file reindexing_utils.c.
References CAR, CDR, fprintf(), INSTRUCTION, NIL, and sa_print_ins().
void fprint_loop | ( | FILE * | fp, |
loop | lp | ||
) |
=======================================================================
void fprint_loop(fp, lp): print a loop.
AC 94/06/07
Definition at line 363 of file reindexing_utils.c.
References CONS, ENTITY, execution_sequential_p, EXPRESSION, fprint_entity_list(), fprint_list_of_exp(), fprintf(), loop_body, loop_execution, loop_index, loop_label, loop_locals, loop_range, NIL, range_increment, range_lower, range_upper, sa_print_ins(), and statement_instruction.
Referenced by print_detailed_ins().
========================================================================
bool is_vect_constant_p(v): test if a vecteur is constant.
AC 94/07/01
Definition at line 1275 of file reindexing_utils.c.
References TCST, and VECTEUR_NUL_P.
Referenced by calculate_delay().
========================================================================
void matrix_coef_mult(A, nb):multiply all elements of matrix A by the number nb.
AC 94/03/21 also elsewehre...
Definition at line 605 of file reindexing_utils.c.
References MATRIX_ELEM, MATRIX_NB_COLUMNS, MATRIX_NB_LINES, and value_product.
Referenced by prepare_reindexing().
==================================================================
Psysteme matrix_to_system(A, b): transform a Pmatrix in a system following the variables in Pbase b.
AC 94/05/15
Definition at line 892 of file reindexing_utils.c.
References Ssysteme::base, base_to_list(), CAR, CDR, contrainte_make(), ENTITY, fprint_psysteme(), fprintf(), get_debug_level(), MATRIX_ELEM, MATRIX_NB_COLUMNS, MATRIX_NB_LINES, sc_add_egalite_at_end(), sc_new(), vect_add(), vect_dup(), vect_new(), and VECTEUR_NUL.
Referenced by build_contraction_matrices().
expression merge_expressions | ( | expression | exp1, |
expression | exp2, | ||
int | max_or_min | ||
) |
===================================================================
expression merge_expressions(expression exp1, exp2, int max_or_min):
Merges two expression into one using the MAX or MIN function
For example, with expressions (N-1) and (M+2), and IS_MIN, we obtain the following expression : MIN(N-1, M+2).
Note : should be modified in order to avoid the MAX or MIN call when the result can be known (AP)
Definition at line 999 of file reindexing_utils.c.
References CONS, entity_intrinsic(), entity_undefined, exp, EXPRESSION, expression_undefined, IS_MAX, IS_MIN, is_syntax_call, make_call(), make_expression(), make_syntax(), NIL, normalized_undefined, and user_error.
Referenced by bound_compute(), and prepare_array_bounds().
bool min_or_max_expression_p | ( | expression | exp | ) |
===================================================================
Definition at line 1035 of file reindexing_utils.c.
References call_function, ENTITY_MIN_OR_MAX_P, exp, expression_syntax, is_syntax_call, syntax_call, and syntax_tag.
Referenced by constraint_to_bound().
========================================================================
reference build_new_ref(int kind,int n,list subscripts,reference old_r)
builds a new array reference. Its entity name depends on "kind": kind == IS_TEMP => name is : SATn kind == IS_NEW_ARRAY => name is : SAIn We first test if this entity does not exist yet. If not, we have create it with a type_variable with the same basic as the one of the entity of "old_ref" and a dimension depending again on kind: kind == IS_TEMP => dimension is: empty kind == IS_NEW_ARRAY => dimension is: dimension of the loop nest of statement number n
Its indices of the new reference are "subscripts".
"subscripts" is a list of affine expressions. If "subscripts" is empty, then this is a scalar. AC : function that comes from single_assign.c but we have modified it to include the new parameter BASE_NODE_NUMBER.
we duplicate this list
Declare the entity
Definition at line 206 of file reindexing_utils.c.
References BASE_NODE_NUMBER, basic_of_reference(), code_declarations, concatenate(), CONS, create_entity(), dims_of_nest(), ENTITY, entity_code(), entity_domain, entity_local_name(), entity_undefined, fprintf(), gen_find_tabulated(), gen_nconc(), get_current_module_entity(), get_debug_level(), IS_NEW_ARRAY, IS_TEMP, make_reference(), make_variable(), MODULE_SEP_STRING, NIL, num, pips_internal_error, SA_MODULE_NAME, SAI, SAT, and strdup().
Referenced by make_reindex(), and my_lhs_subs_in_ins().
=======================================================================
Psysteme my_clean_ps(ps):
put nb_eq and nb_ineq at the rigth value.
AC 94/05/09
Definition at line 1243 of file reindexing_utils.c.
References count, and Scontrainte::succ.
Referenced by build_list_of_min().
void my_constraints_with_sym_cst_to_matrices | ( | Pcontrainte | pc, |
Pbase | index_base, | ||
Pbase | const_base, | ||
Pmatrix | A, | ||
Pmatrix | B | ||
) |
=====================================================================
void constraints_with_sym_cst_to_matrices(Pcontrainte pc, Pbase index_base const_base, matrice A B, int n m1 m2):
constructs the matrices "A" and "B" corresponding to the linear constraints "pc", so: A.ib + B1.cb + B2 = 0 <=> pc(ib, cb) = 0:
B = ( B1 | B2 ), B2 of dimension (n,1).
The basis "ib" gives the variables of the linear system. The basis "cb" gives the symbolic constants of the linear system.
The matrices "A" and "B" are supposed to have been already allocated in memory, respectively of dimension (n, m1) and (n, m2).
"n" must be the exact number of constraints in "pc". "m1" must be the exact number of variables in "ib". "m2" must be equal to the number of symbolic constants (in "cb") PLUS ONE (the actual constant).
CHANGE HERE !!!
Definition at line 637 of file reindexing_utils.c.
References B, CONTRAINTE_UNDEFINED_P, eq, MATRIX_ELEM, matrix_nulle(), Scontrainte::succ, Svecteur::succ, TCST, vect_coeff(), vect_size(), Scontrainte::vecteur, and vecteur_var.
Referenced by build_contraction_matrices(), make_reindex(), and prepare_reindexing().
void my_lhs_subs_in_ins | ( | instruction | ins, |
string | SA, | ||
int | n, | ||
list | subscripts | ||
) |
========================================================================
void lhs_subs_in_ins(instruction ins, string SA, int n, list subscripts)
Substitutes to the lhs (left Hand Side) reference of "ins" the array reference SAn[subscripts], cf. build_new_ref().
"subscripts" is a list of entity, so we have transform it into a list of expression.
Note: "ins" must be an assign call
Definition at line 271 of file reindexing_utils.c.
References call_arguments, call_function, CAR, entities_to_expressions(), ENTITY_ASSIGN_P, EXPRESSION, expression_syntax, instruction_call, instruction_tag, is_instruction_block, is_instruction_call, is_instruction_goto, is_instruction_loop, is_instruction_test, is_instruction_unstructured, IS_NEW_ARRAY, my_build_new_ref(), pips_internal_error, syntax_reference, and syntax_reference_p.
Referenced by build_first_comb().
void my_matrices_to_constraints_with_sym_cst | ( | Pcontrainte * | pc, |
Pbase | new_base, | ||
Pbase | index_base, | ||
Pbase | const_base, | ||
Pmatrix | A, | ||
Pmatrix | B | ||
) |
=====================================================================
void my_matrices_to_constraints_with_sym_cst(Pcontrainte *pc, Pbase index_base const_base, matrice A B,int n m1 m2):
constructs the constraints "pc" corresponding to the matrices "A" and "B" so: A.ib + B1.cb + B2 = nb <=> pc(nb, ib, cb) = 0, with:
B = ( B1 | B2 ), B2 of dimension (n,1).
The basis "ib" gives the variables of the linear system. The basis "cb" gives the symbolic constants of the linear system. The basis "nb" gives the new variables of the linear system.
The matrices "A" and "B" are respectively of dimension (n, m1) and (n,m2).
"n" will be the exact number of constraints in "pc". "m1" must be the exact number of variables in "ib". "m2" must be equal to the number of symbolic constants (in "cb") PLUS ONE (the actual constant).
Note: the formal parameter pc is a "Pcontrainte *". Instead, the resulting Pcontrainte could have been returned as the result of this function.
TAKE CARE : new_base should be well ordered !!
AC 94/03/30
build the constant terme if it exists
build a new vecteur if there is not constant term
build a new vecteur if there is not constant term
Definition at line 693 of file reindexing_utils.c.
References B, base_to_list(), CAR, CDR, contrainte_new(), cp, ENTITY, gen_nreverse(), MATRIX_DENOMINATOR, MATRIX_ELEM, MATRIX_NB_COLUMNS, MATRIX_NB_LINES, ppcm(), Svecteur::succ, TCST, value_div, value_division, value_mult, value_notzero_p, value_product, vect_chg_coeff(), vect_new(), vect_substract(), vecteur_var, and x.
Referenced by build_third_comb(), include_trans_on_LC_in_ref(), include_trans_on_LC_in_sc(), include_trans_on_LC_in_sc2(), and prepare_reindexing().
void my_matrices_to_constraints_with_sym_cst_2 | ( | Pcontrainte * | pc, |
Pbase | new_base, | ||
Pbase | index_base, | ||
Pbase | const_base, | ||
Pmatrix | A, | ||
Pmatrix | B | ||
) |
=====================================================================
void my_matrices_to_constraints_with_sym_cst_2(Pcontrainte *pc, Pbase index_base const_base, matrice A B,int n m1 m2):
constructs the constraints "pc" corresponding to the matrices "A" and "B" so: A.ib + B1.cb + B2 = nb <=> pc(nb, ib, cb) = 0, with:
B = ( B1 | B2 ), B2 of dimension (n,1).
The basis "ib" gives the variables of the linear system. The basis "cb" gives the symbolic constants of the linear system. The basis "nb" gives the new variables of the linear system.
The matrices "A" and "B" are respectively of dimension (n, m1) and (n,m2).
"n" will be the exact number of constraints in "pc". "m1" must be the exact number of variables in "ib". "m2" must be equal to the number of symbolic constants (in "cb") PLUS ONE (the actual constant).
Note: the formal parameter pc is a "Pcontrainte *". Instead, the resulting Pcontrainte could have been returned as the result of this function.
TAKE CARE : new_base should be well ordered !!
AC 94/03/30
build the constant terme if it exists
build a new vecteur if there is not constant term
build a new vecteur if there is not constant term
Definition at line 806 of file reindexing_utils.c.
References B, contrainte_new(), cp, MATRIX_DENOMINATOR, MATRIX_ELEM, MATRIX_NB_COLUMNS, MATRIX_NB_LINES, ppcm(), Svecteur::succ, TCST, value_div, value_notzero_p, value_product, vect_chg_coeff(), vect_new(), vecteur_var, and x.
Referenced by make_reindex().
void print_detailed_ins | ( | instruction | ins | ) |
======================================================================
void print_detailed_ins(): the instruction is either a test or an unstructured.
AC 01/06/94
loop_normalize_of_unstructured(instruction_unstructured(ins));
Definition at line 417 of file reindexing_utils.c.
References CAR, CDR, control_statement, fprint_call(), fprint_loop(), fprintf(), instruction_block, instruction_call, instruction_goto, instruction_loop, instruction_tag, instruction_test, instruction_unstructured, is_instruction_block, is_instruction_call, is_instruction_goto, is_instruction_loop, is_instruction_test, is_instruction_unstructured, NIL, sa_print_ins(), STATEMENT, statement_instruction, test_false, test_true, and unstructured_control.
Referenced by re_do_it().
expression psystem_to_expression | ( | Psysteme | ps | ) |
======================================================================
expression psystem_to_expression(predicate pred): function that transforms a predicate into an expression. Function that comes from single_assign.c but I have modified it to include the case where pred is NULL.
AC 94/06/24
Definition at line 134 of file reindexing_utils.c.
References AND_OPERATOR_NAME, entity_domain, entity_undefined, EQUAL_OPERATOR_NAME, exp, expression_to_string(), expression_undefined, fprintf(), gen_find_tabulated(), get_debug_level(), int_to_expression(), LESS_OR_EQUAL_OPERATOR_NAME, make_entity_fullname(), make_vecteur_expression(), MakeBinaryCall(), pips_internal_error, Scontrainte::succ, TOP_LEVEL_MODULE_NAME, and Scontrainte::vecteur.
=====================================================================
Parameters:
Result:
AP 95/02/1
Definition at line 1322 of file reindexing_utils.c.
References ADD_ELEMENT_TO_LIST, call_arguments, call_function, CAR, ENDP, ENTITY_MIN_OR_MAX_P, exp, EXPRESSION, expression_syntax, expression_to_string(), ifdebug, is_normalized_complex, is_syntax_call, NIL, NORMALIZE_EXPRESSION, normalized_tag, pips_debug, pips_internal_error, POP, print_expression(), syntax_call, and syntax_tag.
Referenced by build_first_comb(), build_second_comb(), and build_third_comb().
======================================================================
Psyslist reverse_psyslist(l): reverse the psyslist l.
AC 94/06/29
Definition at line 103 of file reindexing_utils.c.
References Ssyslist::succ, and SUCC.
Referenced by separate_variables_2().
Psysteme sc_add_egalite_at_end | ( | Psysteme | ps, |
Pcontrainte | co | ||
) |
=======================================================================
Psysteme sc_add_egalite_at_end(ps, co): idem "sc_add_egalite()" except that it puts the new constraint at the end of the list of constraints.
The system basis is not updated. ps may be inconsistent on return.
AC 94/03/17
Definition at line 582 of file reindexing_utils.c.
References Ssysteme::egalites, Ssysteme::nb_eq, and Scontrainte::succ.
Referenced by build_list_of_min(), make_reindex(), matrix_to_system(), and prepare_reindexing().
========================================================================
Psysteme sc_reverse_constraints(ps): reverse the list of equalities and inequalities in the system ps.
AC 94/03/17
Definition at line 934 of file reindexing_utils.c.
References Scontrainte::succ.
Referenced by prepare_reindexing().
======================================================================
bool vars_in_vect_p(Pvecteur pv, list vars):
returns true if the vector "vec" contains at least one of the variables of "vars". Else, returns FALSE.
Definition at line 970 of file reindexing_utils.c.
References CAR, ENDP, ENTITY, POP, value_notzero_p, vect_coeff(), and VECTEUR_NUL_P.
Referenced by cmf_layout_align(), craft_layout_align(), and prepare_reindexing().