25 #include "pips_config.h"
44 #include "resources.h"
97 for(
size_t i=0;i<2;i++)
108 expression cond[2], true_val[2], false_val[2];
109 for(
size_t i=0;i<2;i++)
267 debug_on(
"IF_CONVERSION_COMPACT_DEBUG_LEVEL");
void free_expression(expression p)
static reference ref
Current stmt (an integer)
static graph dg
dg is the dependency graph ; FIXME : should not be static global ?
struct _newgen_struct_statement_ * statement
static list successors(list l)
#define CONFLICT(x)
CONFLICT.
#define dg_arc_label_conflicts(x)
#define conflict_source(x)
void reset_proper_rw_effects(void)
void set_proper_rw_effects(statement_effects)
#define effect_write_p(eff)
#define effect_read_p(eff)
#define effect_scalar_p(eff) entity_scalar_p(effect_entity(eff))
char * get_string_property(const char *)
#define gen_context_recurse(start, ctxt, domain_number, flt, rwt)
#define gen_chunk_undefined
union gen_chunk * gen_chunkp
#define successor_vertex(x)
#define successor_arc_label(x)
struct _newgen_struct_graph_ * graph
#define SUCCESSOR(x)
SUCCESSOR.
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
bool gen_true2(__attribute__((unused)) gen_chunk *u1, __attribute__((unused)) void *u2)
instruction make_continue_instruction()
Creates a CONTINUE instruction, that is the FORTRAN nop, the ";" in C or the "pass" in Python for exa...
#define ENDP(l)
Test if a list is empty.
#define POP(l)
Modify a list pointer to point on the next element of the list.
#define REFCAR(pc)
Get the adress of the first element of a list.
#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.
#define CDR(pcons)
Get the list less its first element.
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.
list statement_block(statement)
Get the list of block statements of a statement sequence.
call statement_call(statement)
Get the call of a statement.
statement update_statement_instruction(statement, instruction)
Replace the instruction in statement s by instruction i.
bool assignment_statement_p(statement)
Test if a statement is an assignment.
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_table_free(hash_table htp)
this function deletes a hash table that is no longer useful.
statement vertex_to_statement(vertex v)
Vertex_to_statement looks for the statement that is pointed to by vertex v.
static bool statement_phi_function_p(statement s)
checks wether a statement is a phi function call of the form a=phi(cond, vt,vf) where phi is given by...
bool if_conversion_compact(char *mod_name)
cproto-generated files
static bool compact_phi_functions(statement s0, statement s1)
try to compact two phi-statements into a single one
static bool statement_conflicts_p(statement sink, list source_successors)
checks if there is a write-read conflict between source and sink according to dg successors source_su...
static void if_conversion_compact_stats(statement stat, graph dg)
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
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.
void print_statement(statement)
Print a statement on stderr.
bool module_reorder(statement body)
Reorder a module and recompute order to statement if any.
#define binary_call_rhs(c)
#define statement_block_p(stat)
#define binary_call_lhs(c)
bool same_entity_p(entity e1, entity e2)
predicates on entities
entity module_name_to_entity(const char *mn)
This is an alias for local_name_to_top_level_entity.
entity entity_intrinsic(const char *name)
FI: I do not understand this function name (see next one!).
bool expression_call_p(expression e)
bool expression_equal_p(expression e1, expression e2)
Syntactic equality e1==e2.
call expression_call(expression e)
bool reference_equal_p(reference r1, reference r2)
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.
bool same_expression_p(expression e1, expression e2)
this is slightly different from expression_equal_p, as it will return true for a+b vs b+a
#define statement_domain
newgen_sizeofexpression_domain_defined
#define EXPRESSION(x)
EXPRESSION.
#define call_arguments(x)
#define STATEMENT(x)
STATEMENT.
hash_table statements_to_successors(list, graph)
creates a hash_table containing statements from statements as keys and their respective succesors acc...
The structure used to build lists in NewGen.