PIPS
sc_read.c File Reference
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "linear_assert.h"
#include "arithmetique.h"
#include "boolean.h"
#include "vecteur.h"
#include "contrainte.h"
#include "sc.h"
+ Include dependency graph for sc_read.c:

Go to the source code of this file.

Macros

#define OPINF   1
 quelques constantes symboliques More...
 
#define OPINFEGAL   2
 
#define OPEGAL   3
 
#define OPSUPEGAL   4
 
#define OPSUP   5
 
#define CHAINE   0
 

Functions

void init_globals ()
 void init_globals: initialisation des variables globales More...
 
void new_ident (Psysteme ps, Variable s)
 void new_ident(Psysteme ps, char s[]): fonction introduisant un nouvel identificateur dans la liste des variables du systeme en cours de lecture More...
 
Variable rec_ident (Psysteme ps, Variable s)
 int rec_ident(Psysteme ps, char * s): cette fonction recherche dans la liste des variables du systeme la variable de nom s More...
 
void creer_eg (Psysteme ps, Pcontrainte peq)
 void creer_eg(Psysteme ps,Pcontrainte peq): ajout de la contrainte (egalite) peq au systeme ps. More...
 
void creer_ineg (Psysteme ps, Pcontrainte peq, int sens)
 void creer_ineg(Psysteme ps, Pcontrainte peq, int sens): ajout d'une nouvelle inegalite peq dans la liste des inegalites du systeme ps More...
 
Psysteme sc_reversal (Psysteme sc)
 Psysteme sc_reversal(Psysteme sc) More...
 
Pcontrainte contrainte_reversal (Pcontrainte c)
 Pcontrainte contrainte_reversal(Pcontrainte c) More...
 

Variables

Pcontrainte p_eg_fin
 ensemble des fonctions utilisees dans le programme 'sc_gram.y' permettant de construire la structure de donnees 'Psysteme ' a partir de la grammaire definie dans 'sc_gram.y' More...
 
Pcontrainte p_ineg_fin
 pointeur sur la derniere inegalite
More...
 
Pvecteur p_pred
 pointeur sur le predecesseur du couple courant More...
 
Pvecteur p_membre_courant
 
Pvecteur cp
 pointeur sur le couple courant
More...
 
char * nom_var [100]
 

Macro Definition Documentation

◆ CHAINE

#define CHAINE   0

Definition at line 99 of file sc_read.c.

◆ OPEGAL

#define OPEGAL   3

Definition at line 96 of file sc_read.c.

◆ OPINF

#define OPINF   1

quelques constantes symboliques

Definition at line 94 of file sc_read.c.

◆ OPINFEGAL

#define OPINFEGAL   2

Definition at line 95 of file sc_read.c.

◆ OPSUP

#define OPSUP   5

Definition at line 98 of file sc_read.c.

◆ OPSUPEGAL

#define OPSUPEGAL   4

Definition at line 97 of file sc_read.c.

Function Documentation

◆ contrainte_reversal()

Pcontrainte contrainte_reversal ( Pcontrainte  c)

Pcontrainte contrainte_reversal(Pcontrainte c)

Definition at line 227 of file sc_read.c.

229 {
231  Pvecteur rv = VECTEUR_NUL;
232 
233  rv = (Pvecteur) vect_reversal((Pbase) v);
234  contrainte_vecteur(c) = rv;
235  vect_rm(v);
236 
237  return c;
238 }
#define contrainte_vecteur(c)
passage au champ vecteur d'une contrainte "a la Newgen"
Pvecteur vect_reversal(Pvecteur vect_in)
Pvecteur vect_reversal(Pvecteur vect_in); produces the reversal vector of the vect_in.
Definition: private.c:237
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
Definition: vecteur-local.h:89
#define VECTEUR_NUL
DEFINITION DU VECTEUR NUL.
struct Svecteur * Pvecteur
void vect_rm(Pvecteur v)
void vect_rm(Pvecteur v): desallocation des couples de v;
Definition: alloc.c:78

References contrainte_vecteur, vect_reversal(), vect_rm(), and VECTEUR_NUL.

Referenced by sc_reversal().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ creer_eg()

void creer_eg ( Psysteme  ps,
Pcontrainte  peq 
)

void creer_eg(Psysteme ps,Pcontrainte peq): ajout de la contrainte (egalite) peq au systeme ps.

Inutilisable car elle utilise la variable globale p_eg_fin pour faire des chainages rapides en FIN de liste

Definition at line 159 of file sc_read.c.

162 {
163  ps->nb_eq++;
164 
165  if (ps->egalites != NULL) {
166  p_eg_fin->succ = peq;
167  p_eg_fin = peq;
168  }
169  else {
170  ps->egalites = peq;
171  p_eg_fin = peq;
172  }
173 }
Pcontrainte p_eg_fin
ensemble des fonctions utilisees dans le programme 'sc_gram.y' permettant de construire la structure ...
Definition: sc_read.c:76
struct Scontrainte * succ
Pcontrainte egalites
Definition: sc-local.h:70
int nb_eq
Definition: sc-local.h:72

References p_eg_fin, and Scontrainte::succ.

◆ creer_ineg()

void creer_ineg ( Psysteme  ps,
Pcontrainte  peq,
int  sens 
)

void creer_ineg(Psysteme ps, Pcontrainte peq, int sens): ajout d'une nouvelle inegalite peq dans la liste des inegalites du systeme ps

Si sens vaut -1, l'inegalite est multipliee par -1; ceci est utilise pour convertir une inegalite de type >= en <=

Inutilisable hors contexte car la variable globale p_ineg_fin est utilisee pour effectuer rapidement des chainages en FIN de liste

multiplication par "-1" des coefficients de chaque variable si l'inegalite est "superieure"

Definition at line 185 of file sc_read.c.

189 {
190  ps->nb_ineq +=1;
191 
192  /* multiplication par "-1" des coefficients de chaque variable
193  si l'inegalite est "superieure" */
194  if (sens == -1)
195  vect_chg_sgn(peq->vecteur);
196 
197  if (ps->inegalites != NULL) {
198  p_ineg_fin->succ = peq;
199  p_ineg_fin = peq;
200  }
201  else {
202  ps->inegalites = peq;
203  p_ineg_fin = peq;
204  }
205 }
int sens
facteur multiplicatif suivant qu'on analyse un terme
Definition: sc_gram.c:100
Pcontrainte p_ineg_fin
pointeur sur la derniere inegalite
Definition: sc_read.c:79
void vect_chg_sgn(Pvecteur v)
void vect_chg_sgn(Pvecteur v): multiplie v par -1
Definition: scalaires.c:151
Pvecteur vecteur
Pcontrainte inegalites
Definition: sc-local.h:71
int nb_ineq
Definition: sc-local.h:73

References p_ineg_fin, sens, Scontrainte::succ, vect_chg_sgn(), and Scontrainte::vecteur.

+ Here is the call graph for this function:

◆ init_globals()

void init_globals ( )

void init_globals: initialisation des variables globales

Definition at line 102 of file sc_read.c.

103 {
104  p_eg_fin = NULL;
105  p_ineg_fin = NULL;
106  p_pred = NULL;
107  cp = NULL;
108 }
Pvecteur p_pred
pointeur sur le predecesseur du couple courant
Definition: sc_read.c:82
Pvecteur cp
pointeur sur le couple courant
Definition: sc_read.c:87

References cp, p_eg_fin, p_ineg_fin, and p_pred.

◆ new_ident()

void new_ident ( Psysteme  ps,
Variable  s 
)

void new_ident(Psysteme ps, char s[]): fonction introduisant un nouvel identificateur dans la liste des variables du systeme en cours de lecture

Modification:

  • utilisation des bases (FI, 13/12/89)
  • symbols handled in sc_lex.l (FC, 02/05/2000)

Definition at line 118 of file sc_read.c.

119 {
120  Pbase b = ps->base;
121 
122  if (!base_contains_variable_p(b, s)) {
123  ps->base = vect_add_variable(b, s);
124  ps->dimension ++;
125  }
126 }
bool base_contains_variable_p(Pbase b, Variable v)
bool base_contains_variable_p(Pbase b, Variable v): returns true if variable v is one of b's elements...
Definition: base.c:136
Pbase vect_add_variable(Pbase b, Variable v)
package vecteur - routines sur les bases
Definition: base.c:61
Pbase base
Definition: sc-local.h:75
int dimension
Definition: sc-local.h:74

References Ssysteme::base, base_contains_variable_p(), Ssysteme::dimension, and vect_add_variable().

+ Here is the call graph for this function:

◆ rec_ident()

Variable rec_ident ( Psysteme  ps,
Variable  s 
)

int rec_ident(Psysteme ps, char * s): cette fonction recherche dans la liste des variables du systeme la variable de nom s

Modifications:

  • utilisation des bases (FI, 13/12/89)
  • parcours direct de la base avec strcmp pour eviter des problemes avec variable_equal() (FI, 3/1/90)

Definition at line 136 of file sc_read.c.

137 {
138  Variable v;
139 
140  v = base_find_variable(ps->base, s);
141 
142  if(VARIABLE_UNDEFINED_P(v)) {
143  (void) fprintf(stderr,
144  "Variable %s not declared. Add it to the VAR list!\n",
146  exit(1);
147  }
148 
149  return v;
150 }
Variable base_find_variable(Pbase b, Variable v)
Variable base_find_variable(Pbase b, Variable v): returns variable v if variable v is one of b's elem...
Definition: base.c:155
char * variable_default_name(Variable v)
char * variable_default_name(Variable v): returns the name of variable v
Definition: variable.c:81
#define exit(code)
Definition: misc-local.h:54
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
Definition: vecteur-local.h:60
#define VARIABLE_UNDEFINED_P(v)
Definition: vecteur-local.h:65

References Ssysteme::base, base_find_variable(), exit, fprintf(), variable_default_name(), and VARIABLE_UNDEFINED_P.

+ Here is the call graph for this function:

◆ sc_reversal()

Psysteme sc_reversal ( Psysteme  sc)

Psysteme sc_reversal(Psysteme sc)

Definition at line 208 of file sc_read.c.

210 {
211 
212  if(!(SC_EMPTY_P(sc) || sc_empty_p(sc) || sc_rn_p(sc))) {
214 
215  for(c = sc_egalites(sc); !CONTRAINTE_UNDEFINED_P(c); c = c->succ) {
216  c = contrainte_reversal(c);
217  }
218  for(c = sc_inegalites(sc); !CONTRAINTE_UNDEFINED_P(c); c = c->succ) {
219  c = contrainte_reversal(c);
220  }
221  }
222 
223  return sc;
224 }
#define CONTRAINTE_UNDEFINED_P(c)
#define CONTRAINTE_UNDEFINED
bool sc_rn_p(Psysteme sc)
bool sc_rn_p(Psysteme sc): check if the set associated to sc is the whole space, rn
Definition: sc_alloc.c:369
bool sc_empty_p(Psysteme sc)
bool sc_empty_p(Psysteme sc): check if the set associated to sc is the constant sc_empty or not.
Definition: sc_alloc.c:350
Pcontrainte contrainte_reversal(Pcontrainte c)
Pcontrainte contrainte_reversal(Pcontrainte c)
Definition: sc_read.c:227

References contrainte_reversal(), CONTRAINTE_UNDEFINED, CONTRAINTE_UNDEFINED_P, sc_empty_p(), sc_rn_p(), and Scontrainte::succ.

Referenced by sc_fscan().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ cp

pointeur sur le couple courant

pointeur sur l'egalite ou l'inegalite courante

Definition at line 87 of file sc_read.c.

Referenced by adg_sc_dup(), any_assign_to_transformer(), any_basic_update_to_transformer(), any_update_to_transformer(), assign_rhs_to_cp_to_transformer(), atomic_constant_path_p(), C_any_comment_to_text(), callnodeclfilter(), char_pointer_to_double_type(), chunk_for_domain(), cons_of_gen_chunk(), constant_memory_access_path_to_location_entity(), constant_memory_access_path_to_location_name(), context_dup(), controlize_sequence(), copy_obj_out_constructed(), do_simdizer_auto_tile_generate_all_tests(), fuse_2_control_nodes(), gen_alloc(), gen_alloc_constructed(), gen_do_enter_tabulated(), gen_enter_tabulated(), gen_length(), gen_map(), gen_mapl(), gen_nreverse(), gen_reduce(), gen_some(), gen_trav_obj_constructed(), generic_unary_operation_to_transformer(), gfc2pips_buildCaseTest(), gfc2pips_dumpSELECT(), init_globals(), lhs_expression_to_transformer(), make_location_entity(), make_ref(), mat_sys_conv(), matrices_to_constraints(), matrices_to_constraints_with_sym_cst(), matrices_to_contraintes_with_sym_cst(), matrices_to_loop_sc(), matrices_to_sc(), my_matrices_to_constraints_with_sym_cst(), my_matrices_to_constraints_with_sym_cst_2(), points_to_unary_operation_to_transformer(), PRINTF_PARSE(), pu_matrices_to_contraintes(), sc_copy(), sc_dup1(), struct_reference_assignment_or_equality_to_transformer(), transitive_closure_pass(), update_cp_with_rhs_to_transformer(), var_posit(), VASNPRINTF(), and wide_forward_control_map_get_blocs().

◆ nom_var

◆ p_eg_fin

Pcontrainte p_eg_fin

ensemble des fonctions utilisees dans le programme 'sc_gram.y' permettant de construire la structure de donnees 'Psysteme ' a partir de la grammaire definie dans 'sc_gram.y'

dernier operateur rencontre

Ces fonction ne sont utilisables que dans ce contexte particulier car elles utilisent des variables globales

     * init_globals(): initialisation des variables globales

     * new_ident (ps,s) : - introduction de la nouvelle variable s
                         dans la base

     * rec_ident (ps,s) : - recherche du rang de la variable s
                         dans la base

     * creer_eg (p)  : - ajout d'une egalite, dont les couples
                         (variable,coefficient) sont pointes
                         par p

     * creer_ineg (p): - ajout d'une inegalite, dont les couples
                         (variable,coefficient) sont pointes
                         par p

Corinne Ancourt

Modifications:

  • introduction de la notion de base (FI, 3/1/90) Variables globales malencontreusement utilisees pour rendre les modules non reutilisables

Introduites pour utilisation avec le module YACC gram.y pointeur sur la derniere egalite

Definition at line 76 of file sc_read.c.

Referenced by creer_eg(), and init_globals().

◆ p_ineg_fin

Pcontrainte p_ineg_fin

pointeur sur la derniere inegalite

Definition at line 79 of file sc_read.c.

Referenced by creer_ineg(), and init_globals().

◆ p_membre_courant

Pvecteur p_membre_courant

Definition at line 84 of file sc_read.c.

◆ p_pred

Pvecteur p_pred

pointeur sur le predecesseur du couple courant

Definition at line 82 of file sc_read.c.

Referenced by init_globals().