25 #include "pips_config.h"
40 #include "resources.h"
51 string saved = names, s;
53 pips_assert(
"property EFFECTS_FILTER_ON_VARIABLE is defined",
56 for (s=names; *s; s++)
88 free(saved), saved = NULL;
203 debug_on(
"FILTER_PROPER_EFFECTS_DEBUG_LEVEL");
void user_log(const char *format,...)
list load_proper_rw_effects_list(statement)
void reset_proper_rw_effects(void)
void set_proper_rw_effects(statement_effects)
#define effect_write_p(eff)
#define effect_variable(e)
For COMPATIBILITY purpose only - DO NOT USE anymore.
const char * module_name(const char *s)
Return the module part of an entity name.
char * get_string_property(const char *)
static bool there_is_a_conflict(entity var)
static bool direct_reference_found
static list variables_to_filter
of entity
static void check_if_direct_reference(void *x)
static bool direct_written_reference(statement s, entity var)
bool filter_proper_effects(const char *module_name)
filter_proper_effects.c
static list get_variables_to_filter()
of entity
static void reference_rwt(reference r)
it should be a check on call arguments, whether they are W + ref for user define functions,...
static bool stmt_flt(statement s)
#define gen_recurse(start, domain_number, flt, rwt)
bool entities_may_conflict_p(entity e1, entity e2)
Check if two entities may conflict.
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
void gen_recurse_stop(void *obj)
Tells the recursion not to go in this object.
void gen_null(__attribute__((unused)) void *unused)
Ignore the argument.
bool gen_true(__attribute__((unused)) gen_chunk *unused)
Return true and ignore the argument.
#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)
void gen_free_list(list l)
free the spine of the list
#define MAP(_map_CASTER, _map_item, _map_code, _map_list)
Apply/map an instruction block on all the elements of a list (old fashioned)
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.
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
#define pips_user_warning
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
#define pips_internal_error
#define STATEMENT_ORDERING_UNDEFINED
mapping.h inclusion
#define same_string_p(s1, s2)
void * gen_find_tabulated(const char *, int)
#define ORDERING_NUMBER(o)
#define ORDERING_STATEMENT(o)
entity local_name_to_top_level_entity(const char *n)
This function try to find a top-level entity from a local name.
#define reference_variable(x)
#define instruction_loop(x)
#define statement_ordering(x)
#define statement_domain
newgen_sizeofexpression_domain_defined
#define entity_undefined_p(x)
#define reference_domain
newgen_range_domain_defined
@ is_instruction_whileloop
#define instruction_tag(x)
#define test_condition(x)
#define instruction_whileloop(x)
#define statement_instruction(x)
#define instruction_test(x)
#define whileloop_condition(x)
#define statement_number(x)
#define entity_domain
newgen_syntax_domain_defined
The structure used to build lists in NewGen.