25 #include "pips_config.h"
170 pips_debug(8,
"complex: based on transformer\n");
179 debug(8,
"unstructured_to_total_precondition",
180 "filtered precondition pre_u:\n");
184 pips_assert(
"A valid total_precondition is returned",
204 # define DEBUG_TEST_TO_TOTAL_PRECONDITION 7
299 pips_debug(9,
"begin t_post=%p tf=%p\n", t_post, tf);
322 "which are not handled directly\n");
328 "FOR_TO_WHILE_LOOP_IN_CONTROLIZER to eliminate C for loops, which are"
329 "not (yet) handled directly\n");
374 (void)
fprintf(stderr,
"statement %03td (%td,%td), total postcondition %p:\n",
383 pips_debug(9,
"statement %03td (%td,%td), transformer %p:\n",
425 fprintf(stderr,
"statement %03td (%td,%td), precondition %p end:\n",
441 pips_debug(8,
"total precondition already available:\n");
443 pips_debug(8,
"for statement %03td (%td,%td), total precondition %p end:\n",
451 fprintf(stderr,
"statement %03td (%td,%td), total precondition %p end:\n",
459 fprintf(stderr,
"statement %03td (%td,%td), total_precondition %p:\n",
void free_transformer(transformer p)
cons * arguments_difference(cons *a1, cons *a2)
set difference: a1 - a2 ; similar to set intersection
transformer transformer_dup(transformer t_in)
transformer package - basic routines
void transformer_free(transformer t)
bool transformer_consistency_p(transformer t)
FI: I do not know if this procedure should always return or fail when an inconsistency is found.
transformer transformer_empty()
Allocate an empty transformer.
bool statement_reachable_p(statement)
Test if the given statement is reachable from some statements given at init_reachable(start)
#define ENDP(l)
Test if a list is empty.
list gen_nreverse(list cp)
reverse a list in place
#define POP(l)
Modify a list pointer to point on the next element of the list.
#define NIL
The empty list (nil in Lisp)
#define CAR(pcons)
Get the value of the first element of a list.
void gen_free_list(list l)
free the spine of the list
#define MAPL(_map_list_cp, _code, _l)
Apply some code on the addresses of all the elements of a list.
#define list_undefined
Undefined list definition :-)
#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
#define pips_internal_error
void debug(const int the_expected_debug_level, const char *calling_function_name, const char *a_message_format,...)
ARARGS0.
#define print_transformer(t)
#define pips_flag_p(p)
for upwards compatibility with Francois's modified version
#define SEMANTICS_FLOW_SENSITIVE
#define ORDERING_NUMBER(o)
#define ORDERING_STATEMENT(o)
#define unstructured_control
After the modification in Newgen: unstructured = entry:control x exit:control we have create a macro ...
#define is_instruction_block
soft block->sequence transition
#define instruction_block(i)
#define transformer_undefined
#define transformer_undefined_p(x)
#define control_predecessors(x)
#define instruction_loop(x)
#define statement_ordering(x)
#define whileloop_evaluation(x)
#define unstructured_undefined
@ is_instruction_unstructured
@ is_instruction_whileloop
#define instruction_tag(x)
#define transformer_arguments(x)
#define control_successors(x)
#define test_condition(x)
#define instruction_whileloop(x)
#define statement_instruction(x)
#define instruction_call(x)
#define control_statement(x)
#define instruction_test(x)
#define statement_number(x)
#define evaluation_before_p(x)
#define instruction_unstructured(x)
#define STATEMENT(x)
STATEMENT.
#define entity_initial(x)
list get_module_global_arguments()
ri_to_preconditions.c
static transformer test_to_total_precondition(transformer t_post, test t, transformer tf, transformer context)
static transformer unstructured_to_total_precondition(transformer pre, unstructured u, transformer tf)
transformer statement_to_total_precondition(transformer, statement)
semantical analysis
#define DEBUG_TEST_TO_TOTAL_PRECONDITION
static transformer block_to_total_precondition(transformer t_post, list b)
static transformer call_to_total_precondition(transformer t_post, call c, transformer tf)
static transformer instruction_to_total_precondition(transformer t_post, instruction i, transformer tf, transformer context)
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
transformer transformer_add_domain_condition(transformer tf, expression c, transformer context, bool veracity)
transformer whileloop_to_total_precondition(transformer t_post, whileloop l, transformer tf, transformer context)
transformer loop_to_total_precondition(transformer t_post, loop l, transformer tf, transformer context)
transformer tf_equivalence_equalities_add(transformer tf)
mappings.c
transformer unstructured_to_flow_sensitive_total_preconditions(transformer, transformer, unstructured)
transformer load_statement_precondition(statement)
transformer load_statement_total_precondition(statement)
transformer load_statement_transformer(statement)
transformer unstructured_to_flow_insensitive_transformer(unstructured)
This simple fix-point over-approximates the CFG by a fully connected graph.
void store_statement_total_precondition(statement, transformer)
The structure used to build lists in NewGen.