25 #include "pips_config.h"
104 #include "resources.h"
180 entity increment_variable)
195 init_increment_statement
204 init_begin_statement,
208 init_increment_statement,
210 init_index_statement,
232 entity increment_variable)
237 string intrinsic_name;
243 if (increment_value >= 0) {
311 entity increment_variable)
411 return returned_statement;
unstructured make_unstructured(control a1, control a2)
test make_test(expression a1, statement a2, statement a3)
statement make_statement(entity a1, intptr_t a2, intptr_t a3, string a4, instruction a5, list a6, string a7, extensions a8, synchronization a9)
instruction make_instruction(enum instruction_utype tag, void *val)
synchronization make_synchronization_none(void)
sequence make_sequence(list a)
control make_control(statement a1, list a2, list a3)
void initialization(graph dg, gen_array_t annotations)
const char * module_name(const char *s)
Return the module part of an entity name.
void link_2_control_nodes(control source, control target)
Add an edge between 2 control nodes.
#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)
loop statement_loop(statement)
Get the loop of a statement.
statement make_continue_statement(entity)
static control make_condition_from_loop(loop the_loop, statement stat, entity index_variable, entity end_variable, entity increment_variable)
Build and return a new control containing condition statement of the unstructured loop.
static control make_body_from_loop(loop the_loop, const char *module_name, statement stat, entity index_variable, entity increment_variable)
Build and return a new control containing body statement of the unstructured loop.
static entity make_index_variable(loop the_loop, statement stat, const char *module_name)
The spaghettifier is used in context of PHRASE project while creating "Finite State Machine"-like cod...
statement spaghettify_loop(statement stat, const char *module_name)
This function takes the statement stat as parameter and return a new spaghettized statement,...
static control make_initialization_from_loop(loop the_loop, statement stat, entity index_variable, entity begin_variable, entity end_variable, entity increment_variable)
Build and return a new control containing initialization statement of the unstructured loop.
static entity make_increment_variable(loop the_loop, statement stat, const char *module_name)
Creates increment variable for a loop the_loop of a statement stat.
static control make_exit_from_loop()
Build and return a new control containing exit statement of the unstructured loop (this is a continue...
static entity make_end_variable(loop the_loop, statement stat, const char *module_name)
Creates end variable for a loop the_loop of a statement stat.
static unstructured make_unstructured_from_loop(loop the_loop, statement stat, const char *module_name)
Build and return a new unstructured coding the "destructured" loop.
static entity make_begin_variable(loop the_loop, statement stat, const char *module_name)
Creates begin variable for a loop the_loop of a statement stat.
#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
statement spaghettify_statement(statement, const char *)
spaghettify.c
statement make_assignement_statement(entity, expression, statement)
Build and return new statement which is a assignement of variable a_variable with expression an_expre...
entity make_variable_from_name_and_entity(entity, const char *, statement, const char *)
Build and return new entity obtained by cloning variable cloned_variable, with a name obtained by the...
#define PLUS_OPERATOR_NAME
#define AND_OPERATOR_NAME
FI: intrinsics are defined at a third place after bootstrap and effects! I guess the name should be d...
#define GREATER_OR_EQUAL_OPERATOR_NAME
#define empty_comments
Empty comments (i.e.
#define LESS_OR_EQUAL_OPERATOR_NAME
entity entity_empty_label(void)
entity entity_intrinsic(const char *name)
FI: I do not understand this function name (see next one!).
bool expression_integer_value(expression e, intptr_t *pval)
expression entity_to_expression(entity e)
if v is a constant, returns a constant call.
expression MakeBinaryCall(entity f, expression eg, expression ed)
Creates a call expression to a function with 2 arguments.
expression int_to_expression(_int i)
transform an int into an expression and generate the corresponding entity if necessary; it is not cle...
#define statement_ordering(x)
#define range_increment(x)
@ is_instruction_unstructured
@ is_instruction_sequence
#define instruction_tag(x)
#define statement_extensions(x)
#define test_condition(x)
#define statement_instruction(x)
#define statement_number(x)
#define STATEMENT(x)
STATEMENT.
#define END_VARIABLE_NAME
#define BEGIN_VARIABLE_NAME
#define INCREMENT_VARIABLE_NAME
#define INDEX_VARIABLE_NAME