25 #include "pips_config.h"
53 pips_debug(7,
"\tSuccessor list: %p for statement ordering %td\n",
96 set def_use_variables;
107 (
char *) def_use_variables);
116 pips_debug(6,
"\tUse: statement %p (%#tx). Def: statement %p (%#tx), variable \"%s\".\n",
135 HASH_MAP(a_statement, def_use_variables,
171 bool something_said_about_this_statement =
false;
184 "\n\nNon-initialized variables:"
185 "\n--------------------------\n");
188 if (!something_said_about_this_statement) {
190 "In statement number %d (%d.%d):\n",
194 something_said_about_this_statement =
true;
197 "\t\"%s\" used but not initialized.\n",
static graph dependence_graph
#define dg_vertex_label_statement(x)
#define CONFLICT(x)
CONFLICT.
#define dg_arc_label_conflicts(x)
#define conflict_source(x)
list load_proper_rw_effects_list(statement)
list words_effect(effect)
#define effect_any_reference(e)
FI: cannot be used as a left hand side.
#define action_write_p(x)
void raw_flint_message(bool count, char *fmt,...)
Same as flint_message but a bare bones version
#define gen_recurse(start, domain_number, flt, rwt)
#define successor_vertex(x)
#define successor_arc_label(x)
#define vertex_vertex_label(x)
#define vertex_successors(x)
#define SUCCESSOR(x)
SUCCESSOR.
#define graph_vertices(x)
void gen_null(__attribute__((unused)) void *unused)
Ignore the argument.
#define FOREACH(_fe_CASTER, _fe_item, _fe_list)
Apply/map an instruction block on all the elements of a 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)
hash_table hash_table_make(hash_key_type key_type, size_t size)
void * hash_get(const hash_table htp, const void *key)
this function retrieves in the hash table pointed to by htp the couple whose key is equal to key.
void hash_put(hash_table htp, const void *key, const void *val)
This functions stores a couple (key,val) in the hash table pointed to by htp.
void hash_table_free(hash_table htp)
this function deletes a hash table that is no longer useful.
statement vertex_to_statement(vertex v)
Vertex_to_statement looks for the statement that is pointed to by vertex v.
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
const char * entity_minimal_name(entity e)
Do preserve scope informations.
#define HASH_MAP(k, v, code, ht)
#define HASH_UNDEFINED_VALUE
value returned by hash_get() when the key is not found; could also be called HASH_KEY_NOT_FOUND,...
bool set_belong_p(const set, const void *)
set set_make(set_type)
Create an empty set of any type but hash_private.
set set_add_element(set, const set, const void *)
#define ORDERING_NUMBER(o)
#define ORDERING_STATEMENT(o)
#define reference_variable(x)
#define statement_ordering(x)
#define statement_domain
newgen_sizeofexpression_domain_defined
#define statement_number(x)
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
FI: I do not understand why the type is duplicated at the set level.
The structure used to build lists in NewGen.
void print_words(FILE *fd, cons *lw)
static void flint_initialize_statement_def_use_variables(graph dependence_graph)
Build the tables relating a statement with the variables it uses that have been initialized elsewhere...
static void flint_free_statement_def_use_variables()
Remove the flint_statement_def_use_variables data structure:
void flint_uninitialized_variables(graph dependence_graph, statement module_stat)
Warn about conservatively uninitialized variables in the module:
static bool flint_no_uninitialized_variable_ouput_yet
static hash_table flint_statement_def_use_variables
static bool flint_check_uninitialized_variables_in_statement(statement s)
Warn about uninitialized variables in this statement:
static bool flint_variable_uninitialize_elsewhere(statement s, entity a_variable)
Return true if a_variable is not initialized elsewhere: