25 #include "pips_config.h"
339 bool analyzed_p =
false;
389 bool analyzed_p =
false;
408 bool analyzed_p =
false;
436 bool analyzed_p =
false;
448 bool analyzed_p =
false;
459 bool analyzed_p =
false;
536 pips_debug(7,
"analyzed_reference_p result : %i\n", result);
561 (void) sprintf(value_name+2,
"%d",n);
683 pips_assert(
"global_new_value",
new ==
false && e==e);
707 bool intermediate =
false;
722 pips_assert(
"new value must be a real variable entity, denoting the new value",
791 " for current module \"%s\"",
834 string indice = strstr(temp,
"[");
995 (void)
fprintf(stderr,
"\nhash table value to name:\n");
999 (void)
fprintf(stderr,
"\nhash table entity to new value:\n");
1007 (void)
fprintf(stderr,
"\nhash table entity to old value:\n");
1011 (void)
fprintf(stderr,
"\nhash table entity to intermediate value:\n");
1015 (void)
fprintf(stderr,
"\nhash table reference to address_of value:\n");
1019 (void)
fprintf(stderr,
"\nhash table entity to sizeof value:\n");
1036 pips_assert(
"The number of insertions is equal to the list length",
1060 pips_assert(
"The number of insertions is equal to the list length",
1084 pips_assert(
"The number of insertions is equal to the list length",
1119 pips_assert(
"The number of old values is equal to the number of intermediate values",
1142 pips_assert(
"The number of values with a name is greater than the number"
1143 " of new, old and intermediate values",
1256 string new_value_name =
1263 free(new_value_name);
1314 string address_of_value_name;
1355 string sizeof_value_name;
1380 (
char *) sizeof_value);
1401 pips_assert(
"hash_entity_to_new_value is defined",
1429 string old_value_name;
1443 string old_value_name;
1478 entity intermediate_value;
1481 if((intermediate_value =
1486 (
char *) intermediate_value);
1528 entity intermediate_value;
1531 if((intermediate_value =
1536 (
char *) intermediate_value);
1554 pips_assert(
"remove_entity_values", s != (
char *) NULL);
1567 pips_assert(
"remove_entity_values", s != (
char *) NULL);
1570 pips_assert(
"remove_entity_values", s != (
char *) NULL);
1585 entity intermediate_value;
1587 pips_debug(8,
"Begin for registered variable %s"
1588 " equivalenced with new variable %s"
1589 " with status %s\n",
1591 readonly?
"readonly" :
"read/write");
1594 (
char *) new_value);
1600 (
char *) intermediate_value);
1602 (
char *) old_value);
1681 *(var_name+strlen(var_name)-l_suffix) =
'\0';
1683 string temp = strstr(var_name,
"[");
1747 pips_debug(8,
"return: %s\n",
"entity_undefined");
functional make_functional(list a1, type a2)
basic make_basic(enum basic_utype tag, void *val)
storage make_storage_rom(void)
type copy_type(type p)
TYPE.
basic copy_basic(basic p)
BASIC.
storage make_storage(enum storage_utype tag, void *val)
type make_type_functional(functional _field_)
symbolic make_symbolic(expression a1, constant a2)
variable make_variable(basic a1, list a2, list a3)
reference copy_reference(reference p)
REFERENCE.
constant make_constant_unknown(void)
type make_type(enum type_utype tag, void *val)
value make_value_symbolic(symbolic _field_)
struct _newgen_struct_entity_ * entity
bool entity_heap_location_p(entity b)
package abstract location.
bool entity_typed_anywhere_locations_p(entity e)
Test if an entity is the bottom of the lattice.
Pvecteur vect_rename_variables(Pvecteur v, bool(*renamed_p)(Variable), Variable(*new_variable)(Variable))
Pvecteur vect_rename_variables(v, renamed_p, new_variable) Pvecteur v; bool (*renamed_p)(Variable); V...
type points_to_reference_to_concrete_type(reference)
bool generic_atomic_points_to_reference_p(reference, bool)
Is it a unique concrete memory location?
bool null_pointer_value_entity_p(entity)
bool store_independent_points_to_reference_p(reference)
Functions for points-to references, the kind of references used in points-to cells.
const char * local_name(const char *s)
Does not take care of block scopes and returns a pointer.
const char * module_name(const char *s)
Return the module part of an entity name.
bool get_bool_property(const string)
FC 2015-07-20: yuk, moved out to prevent an include cycle dependency include "properties....
gen_chunk * gen_check(gen_chunk *obj, int t)
GEN_CHECK checks that the gen_chunk received OBJ is of the appropriate TYPE.
bool entities_may_conflict_p(entity e1, entity e2)
Check if two entities may conflict.
entity get_current_module_entity(void)
Get the entity of the current module.
#define ENDP(l)
Test if a list is empty.
#define NIL
The empty list (nil in Lisp)
size_t gen_length(const list l)
#define CONS(_t_, _i_, _l_)
List element cell constructor (insert an element at the beginning of a list)
void gen_free_list(list l)
free the spine of the list
bool gen_in_list_p(const void *vo, const list lx)
tell whether vo belongs to lx
#define FOREACH(_fe_CASTER, _fe_item, _fe_list)
Apply/map an instruction block on all the elements of a list.
void hash_table_fprintf(FILE *f, gen_string_func_t key_to_string, gen_string_func_t value_to_string, const hash_table htp)
This function prints the content of the hash_table pointed to by htp on file descriptor f,...
hash_table hash_table_make(hash_key_type key_type, size_t size)
void * hash_get(const hash_table htp, const void *key)
this function retrieves in the hash table pointed to by htp the couple whose key is equal to key.
void hash_put(hash_table htp, const void *key, const void *val)
This functions stores a couple (key,val) in the hash table pointed to by htp.
void hash_update(hash_table htp, const void *key, const void *val)
update key->val in htp, that MUST be pre-existent.
void hash_table_free(hash_table htp)
this function deletes a hash table that is no longer useful.
bool hash_defined_p(const hash_table htp, const void *key)
true if key has e value in htp.
void * hash_del(hash_table htp, const void *key)
this function removes from the hash table pointed to by htp the couple whose key is equal to key.
int hash_table_entry_count(hash_table htp)
now we define observers in order to hide the hash_table type...
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
#define pips_internal_error
void reset_hooks_unregister(reset_func_t)
remove registered cleanup hook.
#define TOP_LEVEL_MODULE_NAME
Module containing the global variables in Fortran and C.
#define MODULE_SEP_STRING
const char * entity_minimal_name(entity e)
Do preserve scope informations.
string concatenate(const char *,...)
Return the concatenation of the given strings.
#define HASH_MAP(k, v, code, ht)
#define HASH_UNDEFINED_VALUE
value returned by hash_get() when the key is not found; could also be called HASH_KEY_NOT_FOUND,...
#define HASH_FOREACH(key_type, k, value_type, v, ht)
#define hash_table_undefined_p(h)
#define hash_table_undefined
Value of an undefined hash_table.
void * gen_find_tabulated(const char *, int)
string(* gen_string_func_t)(const void *)
int f(int off1, int off2, int n, float r[n], float a[n], float b[n])
string reference_to_string(reference r)
string type_to_full_string_definition(type)
type.c
#define make_entity(n, t, s, i)
#define entity_symbolic_p(e)
#define unary_intrinsic_expression(name, e)
Building quickly bool expressions, FC.
#define ADDRESS_OF_OPERATOR_NAME
#define entity_constant_p(e)
const char * entity_user_name(entity e)
Since entity_local_name may contain PIPS special characters such as prefixes (label,...
const char * entity_local_name(entity e)
entity_local_name modified so that it does not core when used in vect_fprint, since someone thought t...
entity FindOrCreateEntity(const char *package, const char *local_name)
Problem: A functional global entity may be referenced without parenthesis or CALL keyword in a functi...
bool typedef_entity_p(entity e)
bool effects_package_entity_p(entity e)
checks if an entity is an IO_EFFECTS_PACKAGE_NAME, a MALLOC_EFFECTS_NAME or a RAND_EFFECTS_PACKAGE_NA...
const char * module_local_name(entity e)
Returns the module local user name.
bool abstract_state_variable_p(entity v)
const char * entity_module_name(entity e)
See comments about module_name().
expression reference_to_expression(reference r)
bool place_holder_variable_p(entity)
bool variable_entity_p(entity)
variable.c
bool type_equal_p(type, type)
bool variable_in_module_p(entity, entity)
This test can only be applied to variables, not to functions, subroutines or commons visible from a m...
type entity_basic_concrete_type(entity)
retrieves or computes and then returns the basic concrete type of an entity
list struct_type_to_fields(type)
bool struct_type_p(type)
Returns true if t is of type derived and if the derived type is a struct.
type array_type_to_element_type(type)
returns the type of the elements of an array type, as a newly allocated type.
type compute_basic_concrete_type(type)
computes a new type which is the basic concrete type of the input type (this new type is not stored i...
bool volatile_variable_p(variable)
string type_to_string(const type)
type.c
list struct_variable_to_fields(entity)
Assume that v is declared as a struct.
#define functional_result(x)
#define basic_complex_p(x)
#define reference_variable(x)
#define type_functional(x)
#define basic_pointer_p(x)
#define basic_derived_p(x)
#define entity_storage(x)
#define variable_dimensions(x)
#define basic_string_p(x)
#define type_variable_p(x)
#define entity_domain
newgen_syntax_domain_defined
#define variable_basic(x)
#define basic_logical_p(x)
#define entity_initial(x)
Pcontrainte eq
element du vecteur colonne du systeme donne par l'analyse
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
The structure used to build lists in NewGen.
A gen_chunk is used to store every object.
#define TCST
VARIABLE REPRESENTANT LE TERME CONSTANT.
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....