25 #include "pips_config.h"
45 #include "resources.h"
107 pips_assert(
"syntax_call_p(expression_syntax(loopInit))",
110 pips_assert(
"syntax_call_p(expression_syntax(loopCond))",
113 pips_assert(
"syntax_call_p(expression_syntax(loopInc))",
141 pips_assert(
"Statement is FORLOOP in FSM_GENERATION",
158 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)
control make_control(statement a1, list a2, list a3)
const char * module_name(const char *s)
Return the module part of an entity name.
static control make_body_from_forloop(forloop curLoop, const char *module_name)
static control make_exit_from_forloop()
static unstructured make_unstructured_from_forloop(forloop curLoop, statement stat, const char *module_name)
static control make_condition_from_forloop(forloop curLoop, statement stat)
The spaghettifier is used in context of PHRASE project while creating "Finite State Machine"-like cod...
statement spaghettify_forloop(statement stat, const char *module_name)
This function takes the statement stat as parameter and return a new spaghettized statement,...
void link_2_control_nodes(control source, control target)
Add an edge between 2 control nodes.
#define NIL
The empty list (nil in Lisp)
statement make_continue_statement(entity)
#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
#define call_to_statement(c)
#define empty_comments
Empty comments (i.e.
entity entity_empty_label(void)
#define forloop_initialization(x)
#define forloop_increment(x)
#define statement_ordering(x)
@ is_instruction_unstructured
#define instruction_tag(x)
#define statement_extensions(x)
#define instruction_forloop(x)
#define statement_instruction(x)
#define forloop_condition(x)
#define statement_number(x)
#define expression_syntax(x)