2 #include "pips_config.h"
27 #include "resources.h"
55 #include "constants.h"
60 #include "resources.h"
192 char* s =
"REGIONS-PACKAGE:autogen";
196 bool modified =
false;
200 if (!
ENDP(ref_indices)) {
205 sprintf(s2,
"%s_%d_%d", s, indNum, indIntern);
267 list declarations_to_add =
NIL;
288 if (l_read ==
NIL && l_write ==
NIL) {
324 declarations_to_add =
gen_nconc(declarations_to_add, readVar);
entity gen_find_entity(char *s)
ram make_ram(entity a1, entity a2, intptr_t a3, list a4)
reference make_reference(entity a1, list a2)
bool statement_consistent_p(statement p)
storage make_storage_ram(ram _field_)
void free_statement(statement p)
static reference ref
Current stmt (an integer)
void const char const char const int
Pbase base_add_variable(Pbase b, Variable var)
Pbase base_add_variable(Pbase b, Variable v): add variable v as a new dimension to basis b at the end...
bdt base
Current expression.
struct _newgen_struct_statement_ * statement
statement systeme_to_loop_nest(Psysteme, list, statement, entity)
sc is used to generate the loop nest bounds for variables vars.
#define region_system(reg)
#define effect_region_p(e)
#define region
simulation of the type region
bool region_consistent_p(region reg)
list regions_write_regions(list)
Psysteme sc_list_variables_rename(Psysteme, list, list)
list regions_read_regions(list)
void set_methods_for_convex_effects(void)
methods.c
void reset_out_summary_regions_list(void)
void reset_out_summary_effects_list(void)
out_effects_engine.c
void generic_effects_reset_all_methods(void)
#define effect_any_reference(e)
FI: cannot be used as a left hand side.
list effects_to_list(effects)
#define effect_descriptor(x)
#define descriptor_none_p(x)
const char * module_name(const char *s)
Return the module part of an entity name.
statement make_block_statement(list)
Make a block statement from a list of statement.
statement make_block_with_stmt_if_not_already(statement)
Build a statement block from a statement if not already a statement block.
void reset_current_module_entity(void)
Reset the current module entity.
void reset_current_module_statement(void)
Reset the current module statement.
statement set_current_module_statement(statement)
Set the current module statement.
entity set_current_module_entity(entity)
static.c
entity get_current_module_entity(void)
Get the entity of the current module.
#define ENDP(l)
Test if a list is empty.
list gen_nreverse(list cp)
reverse a list in place
void gen_remove(list *cpp, const void *o)
remove all occurences of item o from list *cpp, which is thus modified.
#define POP(l)
Modify a list pointer to point on the next element of the list.
void gen_remove_once(list *pl, const void *o)
Remove the first occurence of o in list pl:
#define NIL
The empty list (nil in Lisp)
list gen_copy_seq(list l)
Copy a list structure.
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)
list gen_nconc(list cp1, list cp2)
physically concatenates CP1 and CP2 but do not duplicates the elements
#define CAR(pcons)
Get the value of the first element of a list.
#define FOREACH(_fe_CASTER, _fe_item, _fe_list)
Apply/map an instruction block on all the elements of a list.
list gen_full_copy_list(list l)
Copy a list structure with element copy.
string db_get_memory_resource(const char *rname, const char *oname, bool pure)
Return the pointer to the resource, whatever it is.
#define DB_PUT_MEMORY_RESOURCE(res_name, own_name, res_val)
conform to old interface.
bool statement_sequence_p(statement)
Statement classes induced from instruction type.
statement make_assign_statement(expression, expression)
void append_comments_to_statement(statement, string)
Append a comment string (if non empty) to the comments of a statement, if the c.
statement add_declaration_statement(statement, entity)
list base_to_list(Pbase base)
Most includes are centralized here.
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
#define pips_internal_error
#define DYNAMIC_AREA_LOCAL_NAME
hash_table set_ordering_to_statement(statement s)
To be used instead of initialize_ordering_to_statement() to make sure that the hash table ots is in s...
void reset_ordering_to_statement(void)
Reset the mapping from ordering to statement.
static entity dynamic_area
static void filter_regions(list *l)
tatic_control
statement make_read_loopbody(entity v, entity readVar, list vl)
Makes the body of a "read" loop.
void replace_indices_region(region r, list *dadd, int indNum, entity module)
This function is in charge of replacing the PHI entity of the region by generated indices.
expression make_addition(expression e1, expression e2)
Makes an addition expression from two expressions.
bool regions_to_loops(char *module_name)
This phase replaces the body of a function by automatically generated loops where the read and write ...
statement make_write_loopbody(entity v, expression exp, list vl)
Makes the body of a "write" loop.
statement make_sequence_from_statement_list(list l)
Make a sequence from a statement list The equivalent of this function was already made somewhere else...
static statement Psysteme_to_loop_nest(entity v, list vl, Pbase b, Psysteme p, bool isRead, entity readVar, expression exp, list l_var)
Builds a loop from a Psysteme.
statement region_to_loop_nest(region r, bool isRead, entity readVar, expression exp)
Returns the entity corresponding to the global name.
bool module_reorder(statement body)
Reorder a module and recompute order to statement if any.
#define make_nop_statement
An alias for make_empty_block_statement.
#define DIVIDE_OPERATOR_NAME
int current_offset_of_area(entity a, entity v)
entity FindEntity(const char *package, const char *name)
Retrieve an entity from its package/module name and its local name.
entity local_name_to_top_level_entity(const char *n)
This function try to find a top-level entity from a local name.
const char * module_local_name(entity e)
Returns the module local user name.
entity entity_intrinsic(const char *name)
FI: I do not understand this function name (see next one!).
entity make_entity_copy_with_new_name(entity e, string global_new_name, bool move_initialization_p)
Create a copy of an entity, with (almost) identical type, storage and initial value if move_initializ...
expression reference_to_expression(reference r)
expression make_call_expression(entity e, list l)
Build an expression that call an function entity with an argument list.
expression entity_to_expression(entity e)
if v is a constant, returns a constant call.
entity make_new_module_variable(entity, int)
Make a new module integer variable of name X<d>.
entity make_integer_constant_entity(_int)
entity make_integer_constant_entity(int c) make entity for integer constant c
#define syntax_reference(x)
#define reference_variable(x)
#define entity_storage(x)
#define EXPRESSION(x)
EXPRESSION.
#define expression_undefined
#define reference_indices(x)
#define variable_dimensions(x)
#define expression_syntax(x)
#define type_variable_p(x)
#define statement_undefined
#define STATEMENT(x)
STATEMENT.
void algorithm_row_echelon_generic(Psysteme scn, Pbase base_index, Psysteme *pcondition, Psysteme *penumeration, bool redundancy)
each variable should be at least within one <= and one >=; scn IS NOT modified.
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
The structure used to build lists in NewGen.
#define exp
Avoid some warnings from "gcc -Wshadow".
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
#define BASE_NULLE
MACROS SUR LES BASES.