25 #include "pips_config.h"
56 #include "resources.h"
63 #define CONTINUATION (string_undefined_p(continuation)? \
64 strdup(concatenate(get_comment_continuation(), " ", NULL)) \
69 #define ACTION_read "read "
70 #define ACTION_write "written"
71 #define ACTION_in "imported"
72 #define ACTION_out "exported"
73 #define ACTION_live_in "alive (in)"
74 #define ACTION_live_out "alive (out)"
76 #define ACTION_declared "declared"
77 #define ACTION_referenced "referenced"
93 update_an_effect_type(
95 string current_line_in_construction,
96 string an_effect_string)
99 CONTINUATION, an_effect_text);
101 CONTINUATION, an_effect_text);
138 #define is_may " <may be "
139 #define is_exact " < is "
140 #define exact_end ">:"
141 #define may_end exact_end
144 simple_effects_to_text(
158 bool rb =
false, Rb =
false,
159 wb =
false, Wb =
false,
160 db =
false, Db =
false,
161 ub =
false, Ub =
false;
201 for(ce = sefs_list; !
ENDP(ce);
POP(ce))
226 update_an_effect_type(rt, r, t), rb =
true;
228 update_an_effect_type(ut, u, t), ub =
true;
231 update_an_effect_type(wt, w, t), wb =
true;
233 update_an_effect_type(dt, d, t), db =
true;
236 update_an_effect_type(Rt, R, t), Rb =
true;
238 update_an_effect_type(Ut, U, t), Ub =
true;
241 update_an_effect_type(Wt, W, t), Wb =
true;
243 update_an_effect_type(Dt,
D, t), Db =
true;
275 {
return simple_effects_to_text(l, ACTION_read, ACTION_write, ACTION_declared, ACTION_referenced);}
278 {
return simple_effects_to_text(l, ACTION_in, ACTION_out, ACTION_declared, ACTION_referenced);}
281 {
return simple_effects_to_text(l, ACTION_live_in, ACTION_write, ACTION_referenced, ACTION_referenced);}
284 {
return simple_effects_to_text(l, ACTION_live_out, ACTION_write, ACTION_referenced, ACTION_referenced);}
332 fprintf(stderr,
"\t effect undefined\n");
bool effect_consistent_p(effect p)
static reference ref
Current stmt (an integer)
bool print_decorated_call_graph(const string, text(*)(const string))
int compare_effect_reference(effect *e1, effect *e2)
int compare_effect_reference(e1, e2):
int compare_effect_reference_in_common(effect *e1, effect *e2)
int compare_effect_reference_in_common(e1, e2):
text simple_inout_effects_to_text(list)
text simple_rw_effects_to_text(list)
prettyprint.c
bool print_call_graph_with_proper_effects(const string)
text get_text_proper_effects(const string)
text get_text_cumulated_effects(const string)
text simple_live_out_paths_to_text(list)
string effect_to_string(effect)
list words_effect(effect)
text simple_live_in_paths_to_text(list)
bool print_call_graph_with_cumulated_effects(const string)
list words_effect_generic(effect, bool)
list words_effect_without_approximation(effect)
void print_memory_effects(list)
#define effect_any_reference(e)
FI: cannot be used as a left hand side.
list effect_words_reference(reference obj)
made from words_reference this function can print entity_name instead of entity_local_name,...
string full_action_to_short_string(action)
bool store_effect_p(effect)
#define effect_undefined_p(x)
#define action_kind_store(x)
#define approximation_may_p(x)
#define effect_descriptor(x)
#define descriptor_none_p(x)
#define effect_approximation(x)
const char * module_name(const char *s)
Return the module part of an entity name.
bool get_bool_property(const string)
FC 2015-07-20: yuk, moved out to prevent an include cycle dependency include "properties....
#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 NIL
The empty list (nil in Lisp)
void gen_free_string_list(list ls)
list gen_nconc(list cp1, list cp2)
physically concatenates CP1 and CP2 but do not duplicates the elements
#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 list_undefined
Undefined list definition :-)
void gen_sort_list(list l, gen_cmp_func_t compare)
Sorts a list of gen_chunks in place, to avoid allocations...
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
#define pips_internal_error
string concatenate(const char *,...)
Return the concatenation of the given strings.
#define HASH_UNDEFINED_VALUE
value returned by hash_get() when the key is not found; could also be called HASH_KEY_NOT_FOUND,...
int(* gen_cmp_func_t)(const void *, const void *)
string get_comment_sentinel()
Start a single line comment.
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
The structure used to build lists in NewGen.
#define CHAIN_SWORD(l, s)
#define MERGE_TEXTS(r, t)
#define MAX_LINE_LENGTH
maximum length of a line when prettyprinting...
string words_to_string(cons *lw)
void print_words(FILE *fd, cons *lw)
void close_current_line(string, text, string)
void add_to_current_line(string, const char *, string, text)