26 #include "pips_config.h"
54 #include "resources.h"
82 { safe=
false;
break; }
170 debug_on(
"NEW_ATOMIZER_DEBUG_LEVEL");
expression make_expression(syntax a1, normalized a2)
reference make_reference(entity a1, list a2)
syntax make_syntax_reference(reference _field_)
static reference ref
Current stmt (an integer)
bool clean_up_sequences(statement s)
Recursively clean up the statement sequences by fusing them if possible and by removing useless one.
void set_cumulated_rw_effects(statement_effects)
list load_cumulated_rw_effects_list(statement)
list effects_write_effects(list)
void reset_cumulated_rw_effects(void)
list proper_effects_of_expression(expression)
#define effect_any_reference(e)
FI: cannot be used as a left hand side.
#define call_constant_p(C)
#define gen_recurse(start, domain_number, flt, rwt)
void gen_full_free_list(list l)
bool references_may_conflict_p(reference r1, reference r2)
Check if two references may conflict.
statement make_block_statement(list)
Make a block statement from a list of statement.
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.
statement get_current_module_statement(void)
Get 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.
void gen_recurse_stop(void *obj)
Tells the recursion not to go in this object.
void gen_context_multi_recurse(void *o, void *context,...)
Multi-recursion with context function visitor.
bool gen_true(__attribute__((unused)) gen_chunk *unused)
Return true and ignore the argument.
#define ENDP(l)
Test if a list is empty.
list gen_nreverse(list cp)
reverse a list in place
#define NIL
The empty list (nil in Lisp)
#define CONS(_t_, _i_, _l_)
List element cell constructor (insert an element at the beginning of a list)
#define FOREACH(_fe_CASTER, _fe_item, _fe_list)
Apply/map an instruction block on all the elements of a list.
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.
statement make_assign_statement(expression, expression)
void insert_statement(statement, statement, bool)
This is the normal entry point.
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
bool new_atomizer(char *mod_name)
Mappings for the cumulated effects of statements.
static bool atomize_call_filter(expression parent, atomizer_param *p)
static void atomize_call(expression, atomizer_param *)
dg_vertex_label vertex_label
dg_arc_label arc_label
An atomizer that uses the one made by Fabien Coelho for HPFC, and is in fact just a hacked version of...
static void atomize_statement(statement stat)
This function is called for all statements in the code.
static void atomize_all(void *v, atomizer_param *p)
static void do_atomize_call(expression parent, atomizer_param *p, list expressions)
bool module_reorder(statement body)
Reorder a module and recompute order to statement if any.
#define binary_call_rhs(c)
#define ENTITY_POINT_TO_P(e)
#define ENTITY_FIELD_P(e)
C data structure and pointer management.
entity module_name_to_entity(const char *mn)
This is an alias for local_name_to_top_level_entity.
bool entity_field_p(entity e)
e is the field of a structure
bool expression_call_p(expression e)
expression entity_to_expression(entity e)
if v is a constant, returns a constant call.
call expression_call(expression e)
void update_expression_syntax(expression e, syntax s)
frees expression syntax of e and replace it by the new syntax s
bool expression_reference_p(expression e)
Test if an expression is a reference.
reference expression_reference(expression e)
Short cut, meaningful only if expression_reference_p(e) holds.
basic basic_of_expression(expression)
basic basic_of_expression(expression exp): Makes a basic of the same basic as the expression "exp".
entity make_new_scalar_variable(entity, basic)
void AddEntityToCurrentModule(entity)
Add a variable entity to the current module declarations.
#define normalized_undefined
#define expression_domain
newgen_execution_domain_defined
#define REFERENCE(x)
REFERENCE.
#define reference_variable(x)
#define statement_domain
newgen_sizeofexpression_domain_defined
#define EXPRESSION(x)
EXPRESSION.
#define reference_indices(x)
#define instruction_call_p(x)
#define statement_instruction(x)
#define call_arguments(x)
#define expression_syntax(x)
#define instruction_expression_p(x)
#define STATEMENT(x)
STATEMENT.
The structure used to build lists in NewGen.