PIPS
set.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include "genC.h"
#include "newgen_set.h"
#include "newgen_include.h"
#include "newgen_string_buffer.h"
+ Include dependency graph for set.c:

Go to the source code of this file.

Data Structures

struct  _set_chunk
 FI: I do not understand why the type is duplicated at the set level. More...
 

Macros

#define INITIAL_SET_SIZE   10
 

Functions

hash_table set_private_get_hash_table (const set s)
 return the internal hash table of set s More...
 
set_type set_get_type (const set s)
 return the type of set s More...
 
set set_generic_make (set_type typ, hash_equals_t private_equal_p, hash_rank_t private_rank)
 Create an empty set of any type. More...
 
set set_make (set_type typ)
 Create an empty set of any type but hash_private. More...
 
set set_singleton (set_type type, const void *p)
 create a singleton set of any type but hash_private More...
 
set set_assign (set s1, const set s2)
 Assign a set with the content of another set. More...
 
set set_dup (const set s)
 
set set_add_element (set s1, const set s2, const void *e)
 
set set_add_elements (set s1, const set s2, const void *e,...)
 
bool set_belong_p (const set s, const void *e)
 
bool list_in_set_p (const list l, const set s)
 
set set_union (set s1, const set s2, const set s3)
 
set set_intersection (set s1, const set s2, const set s3)
 
 set_assign (s1, tmp)
 
 set_free (tmp)
 
 return (s1)
 
set set_difference (set s1, const set s2, const set s3)
 
set set_del_element (set s1, const set s2, const void *e)
 
set set_delfree_element (set s1, const set s2, const void *e)
 May be useful for string sets ... More...
 
bool set_intersection_p (const set s1, const set s2)
 returns whether s1 n s2 <> 0 complexity of the intersection More...
 
bool set_inclusion_p (const set s1, const set s2)
 return whether s1 \included s2 More...
 
bool set_equal_p (const set s1, const set s2)
 returns whether s1 == s2 More...
 
set set_clear (set s)
 Assign the empty set to s s := {}. More...
 
void set_free (set s)
 
void sets_free (set s,...)
 Free several sets in one call. More...
 
int set_size (const set s)
 returns the number of items in s. More...
 
bool set_empty_p (const set s)
 tell whether set s is empty. More...
 
void gen_set_closure_iterate (void(*iterate)(void *, set), set initial, bool dont_iterate_twice)
 
void gen_set_closure (void(*iterate)(void *, set), set initial)
 a set-based implementation of gen_closure that does not go twice in the same object. More...
 
int set_own_allocated_memory (const set s)
 
list set_to_list (const set s)
 create a list from a set the set is not freed More...
 
list set_to_sorted_list (const set s, gen_cmp_func_t cmp)
 
set set_append_list (set s, const list l)
 add list l items to set s, which is returned. More...
 
set set_assign_list (set s, const list l)
 assigns a list contents to a set all duplicated elements are lost More...
 
static string_buffer set_to_string_buffer (string name, const set s, gen_string_func_t item_name)
 convert set s to a string_buffer used internally, but may be exported if needed. More...
 
string set_to_string (string name, const set s, gen_string_func_t item_name)
 return allocated string for set s More...
 
void set_fprint (FILE *out, string name, const set s, gen_string_func_t item_name)
 print set s to file stream out. More...
 

Variables

 else
 
 s1 == s2) ? s3->table : s2->table )
 

Macro Definition Documentation

◆ INITIAL_SET_SIZE

#define INITIAL_SET_SIZE   10

Definition at line 64 of file set.c.

Function Documentation

◆ gen_set_closure()

void gen_set_closure ( void(*)(void *, set iterate,
set  initial 
)

a set-based implementation of gen_closure that does not go twice in the same object.

FC 27/10/95.

Definition at line 418 of file set.c.

419 {
420  gen_set_closure_iterate(iterate, initial, true);
421 }
void gen_set_closure_iterate(void(*iterate)(void *, set), set initial, bool dont_iterate_twice)
Definition: set.c:372

References gen_set_closure_iterate().

+ Here is the call graph for this function:

◆ gen_set_closure_iterate()

void gen_set_closure_iterate ( void(*)(void *, set iterate,
set  initial,
bool  dont_iterate_twice 
)

Definition at line 372 of file set.c.

375 {
376  set curr, next, seen;
377  set_type t = initial->type;
378 
381  hash_table_rank_function(initial->table));
382  curr = set_generic_make(t,
384  hash_table_rank_function(initial->table));
385  next = set_generic_make(t,
387  hash_table_rank_function(initial->table));
388 
389  set_assign(curr, initial);
390 
391  while (!set_empty_p(curr))
392  {
393  SET_FOREACH(void *, x, curr)
394  iterate(x, next);
395 
396  if (dont_iterate_twice)
397  {
398  set_union(seen, seen, curr);
399  set_difference(curr, next, seen);
400  }
401  else
402  {
403  set_assign(curr, next);
404  }
405  set_clear(next);
406  }
407 
408  set_free(curr);
409  set_free(seen);
410  set_free(next);
411 
412 }
static hash_table seen
static function to store whether a module has been seen during the recursive generation of the daVinc...
Definition: graph.c:85
hash_equals_t hash_table_equals_function(hash_table h)
Because the hash table data structure is hidden in this source file hash.c and not exported via the n...
Definition: hash.c:934
hash_rank_t hash_table_rank_function(hash_table h)
Definition: hash.c:939
#define SET_FOREACH(type_name, the_item, the_set)
enumerate set elements in their internal order.
Definition: newgen_set.h:78
set_type
Note: hash_chunk is not included in set_type.
Definition: newgen_set.h:41
set_free(tmp)
set set_generic_make(set_type typ, hash_equals_t private_equal_p, hash_rank_t private_rank)
Create an empty set of any type.
Definition: set.c:83
set set_difference(set s1, const set s2, const set s3)
Definition: set.c:256
set set_clear(set s)
Assign the empty set to s s := {}.
Definition: set.c:326
set set_union(set s1, const set s2, const set s3)
Definition: set.c:211
set set_assign(set s1, const set s2)
Assign a set with the content of another set.
Definition: set.c:129
bool set_empty_p(const set s)
tell whether set s is empty.
Definition: set.c:367
static char * x
Definition: split_file.c:159
FI: I do not understand why the type is duplicated at the set level.
Definition: set.c:59
hash_table table
Definition: set.c:60
set_type type
Definition: set.c:61

References hash_table_equals_function(), hash_table_rank_function(), seen, set_assign(), set_clear(), set_difference(), set_empty_p(), SET_FOREACH, set_free(), set_generic_make(), set_union(), _set_chunk::table, _set_chunk::type, and x.

Referenced by gen_set_closure().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ list_in_set_p()

bool list_in_set_p ( const list  l,
const set  s 
)
Returns
whether all items in l are in s

Definition at line 201 of file set.c.

202 {
203  FOREACH(chunk, c, l)
204  if (!set_belong_p(s, c))
205  return false;
206  return true;
207 }
#define FOREACH(_fe_CASTER, _fe_item, _fe_list)
Apply/map an instruction block on all the elements of a list.
Definition: newgen_list.h:179
bool set_belong_p(const set s, const void *e)
Definition: set.c:194

References FOREACH, and set_belong_p().

Referenced by compute_dead_vertices(), dag_computable_vertices(), freia_dag_optimize(), and opencl_merge_and_compile().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ return()

◆ set_add_element()

set set_add_element ( set  s1,
const set  s2,
const void *  e 
)
Returns
s1 = s2 u { e }.

Definition at line 152 of file set.c.

153 {
154  if( s1 == s2 ) {
155  if (! set_belong_p(s1, e))
156  hash_put(s1->table, e, e);
157  return( s1 ) ;
158  }
159  else {
160  set_clear( s1 ) ;
161  HASH_MAP( k, v, {hash_put( s1->table, k, v ) ;}, s2->table ) ;
162  if (! set_belong_p(s1, e))
163  hash_put(s1->table, e, e);
164  return( s1 ) ;
165  }
166 }
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.
Definition: hash.c:364
#define HASH_MAP(k, v, code, ht)
Definition: newgen_hash.h:60
s1
Definition: set.c:247

References HASH_MAP, hash_put(), s1, set_belong_p(), set_clear(), and _set_chunk::table.

Referenced by __attribute__(), add_arc_to_pt_map(), add_arc_to_pt_map_(), add_arc_to_simple_pt_map(), add_loop_index_entity(), add_read_resource(), add_resource_to_make_cache(), add_stat_called_user_entities(), add_stat_referenced_entities(), add_statement_declarations(), add_subscript_dependent_arc_to_simple_pt_map(), add_write_resource(), array_formal_parameter_to_stub_points_to(), bootstrap(), callgraph(), check_control_coherency(), check_ref(), collect_images(), compact_list(), compute_dead_vertices(), compute_points_to_gen_set(), compute_points_to_kill_set(), conflict_is_a_real_conflict_p(), copy_from_call(), copy_from_loop(), copy_to_call(), cyclic_graph_to_points_to(), dag_cleanup_other_statements(), dag_computable_vertices(), dag_compute_outputs(), dag_connected_component(), dag_consistency_asserts(), dag_dot(), dag_fix_image_reuse(), dag_split_on_scalars(), dag_statements(), dag_stats(), derived_formal_parameter_to_stub_points_to(), display_linked_control_nodes(), distributable_statement_p(), do_get_declared_entities(), do_get_referenced_entities_on_entity(), do_group_constant_entity(), do_group_statement_constant(), do_linearize_array(), do_prune_arcs(), do_reduction_detection(), do_reduction_propagation(), do_redundant_load_store_elimination(), do_scalar_renaming_in_successors(), do_solve_hardware_constraints_on_nb_proc(), do_solve_hardware_constraints_on_volume(), do_unfolding(), DoInvariantsStatements(), DoRedundantsStatements(), effects_to_dma(), expand_call(), expand_reference(), extract_matching_statements(), fcs_call_flt(), find_covering_reference_path(), find_entities_to_wrap(), fis_call_flt(), fix_loop_index_sign(), flint_initialize_statement_def_use_variables(), freia_allocate_new_images_if_needed(), freia_compute_output_images(), freia_dag_optimize(), freia_spoc_pipeline(), freia_substitute_by_helper_call(), freia_terapix_call(), fsi_seq_flt(), fsi_stmt_flt(), full_copy_pt_map(), full_copy_simple_pt_map(), gen_copy_set(), gen_list_cyclic_p(), gen_may_constant_paths(), gen_may_set(), gen_must_constant_paths(), gen_must_set(), generic_type_depth(), genref_one_statement(), get_loop_locals_and_remove_walker(), get_more_derived_resources(), get_referenced_entities_filtered(), get_statement_matching_types(), get_written_entities(), graph_to_live_writes(), init_statement_equivalence_table(), inline_split_declarations(), interprocedural_mapping(), invariant_vertex_to_invariant_entities(), keep_recv_or_send_referenced_entity(), kill_effects(), kill_may_set(), kill_must_set(), loop_basic_workchunk_to_workchunk(), merge_points_to_set(), migrate_statements(), mppa_helper_args_params(), new_points_to_unstructured(), oi_call_rwt(), opencl_generate_special_kernel_ops(), opencl_merge_and_compile(), opgen_null_location(), outliner_independent_recursively(), pixel_name(), pointer_formal_parameter_to_stub_points_to(), points_to_anywhere(), points_to_anywhere_typed(), points_to_independent_store(), points_to_may_filter(), points_to_must_filter(), points_to_nowhere(), pragma_omp_merge_expr(), propagate_constant_image_to_succs(), Ready_p(), ready_to_be_processed_set(), recursive_functional_type_supporting_entities(), recursive_type_supporting_entities(), recursive_type_supporting_references(), recursive_type_supporting_types(), reduction_rewrite_filter(), region_of_statement(), remove_all_unreachable_controls_of_an_unstructured(), remove_simple_scalar_pointers(), replace_entity_by_expression_entity_walker(), rssp_ref(), sbp_context_add_kernel_task_buffer(), sc_delimiter(), scc_region(), set_add_elements(), set_add_scalars(), set_append_list(), set_append_vertex_statements(), set_glopriv(), set_RT_add_local(), simdize_simple_statements_pass2(), SimplifyInvariantVertex(), SimplifyRedundantVertex(), single_image_assignement_p(), step_add_created_symbolic(), step_directive_to_strings(), step_get_comparable_effects(), step_get_directive_reductions(), transfert_statement(), typedef_formal_parameter_to_stub_points_to(), update_number_to_statement(), update_written_variables(), vertex_in_cycle_aux_p(), vertex_to_chains(), and vertices_to_statements().

+ Here is the call graph for this function:

◆ set_add_elements()

set set_add_elements ( set  s1,
const set  s2,
const void *  e,
  ... 
)
Returns
s1 = s2 u { list of e }.

The statement list

Analyze in args the variadic arguments that may be after s2:

Since a variadic function in C must have at least 1 non variadic argument (here the s), just skew the varargs analysis:

Release the variadic analyzis:

Definition at line 171 of file set.c.

172 {
173  bool first = true;
174  va_list args;
175  /* The statement list */
176  /* Analyze in args the variadic arguments that may be after s2: */
177  va_start(args, e);
178  /* Since a variadic function in C must have at least 1 non variadic
179  argument (here the s), just skew the varargs analysis: */
180  e = va_arg(args, void *);
181  while(e) {
182  // may copy s2 on first time
183  s1 = set_add_element(s1, first? s2: s1, e);
184  first = false;
185  // get next element
186  e = va_arg(args, void *);
187  }
188  /* Release the variadic analyzis: */
189  va_end(args);
190  return s1;
191 }
set set_add_element(set s1, const set s2, const void *e)
Definition: set.c:152

References s1, and set_add_element().

Referenced by arithmetic_intrinsic_p(), and io_intrinsic_p().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_append_list()

set set_append_list ( set  s,
const list  l 
)

add list l items to set s, which is returned.

Parameters
smodified set
lprovided list

Definition at line 460 of file set.c.

461 {
462  FOREACH(chunk, i, l)
463  set_add_element(s, s, i);
464  return s;
465 }

References FOREACH, and set_add_element().

Referenced by dag_connected_component(), dag_terapix_measures(), freia_dag_optimize(), get_private_entities_walker(), make_string_set_from_prop(), move_ahead(), set_assign_list(), and step_directive_to_strings().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_assign() [1/2]

set_assign ( s1  ,
tmp   
)

◆ set_assign() [2/2]

set set_assign ( set  s1,
const set  s2 
)

Assign a set with the content of another set.

Parameters
s1the set to write into
s2the set to copy

If the same set is given twice, nothing is done.

Returns
the target set.

Definition at line 129 of file set.c.

130 {
131  if (s1 == s2) {
132  return s1;
133  }
134  else {
135  set_clear(s1);
136  HASH_MAP(k, v, hash_put( s1->table, k, v ), s2->table);
137  return s1;
138  }
139 }

References HASH_MAP, hash_put(), s1, set_clear(), and _set_chunk::table.

Referenced by compute_points_to_binded_set(), copy_from_all_kind_of_loop(), copy_from_block(), copy_from_call(), copy_from_statement(), copy_from_test(), copy_to_all_kind_of_loop(), copy_to_block(), copy_to_call(), copy_to_statement(), copy_to_test(), dag_computable_vertices(), gen_copy_set(), gen_set_closure_iterate(), genref_unstructured(), inout_control(), inout_unstructured(), interprocedural_mapping(), list_assignment_to_points_to(), merge_points_to_set(), new_points_to_unstructured(), points_to_function_projection(), points_to_graph_assign(), set_del_element(), set_delfree_element(), set_difference(), set_union(), and transfert_test().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_assign_list()

set set_assign_list ( set  s,
const list  l 
)

◆ set_belong_p()

bool set_belong_p ( const set  s,
const void *  e 
)
Returns
whether e \in s.

Definition at line 194 of file set.c.

195 {
196  return hash_get(s->table, e) != HASH_UNDEFINED_VALUE;
197 }
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.
Definition: hash.c:449
#define HASH_UNDEFINED_VALUE
value returned by hash_get() when the key is not found; could also be called HASH_KEY_NOT_FOUND,...
Definition: newgen_hash.h:56

References hash_get(), HASH_UNDEFINED_VALUE, and _set_chunk::table.

Referenced by __attribute__(), add_loop_index_entity(), add_stat_called_user_entities(), add_stat_referenced_entities(), add_statement_declarations(), AK_ignore_this_vertex(), all_previous_stats_with_deps_are_computed(), arithmetic_intrinsic_p(), callgraph(), check_control_coherency(), check_private_variables_call_walker(), collect_glopriv_data(), collect_images(), common_ignore_this_vertex(), compact_list(), concat_new_entities(), consistent_points_to_set(), copy_from_call(), copy_from_loop(), CreateIntrinsics(), dag_computable_vertices(), dag_compute_outputs(), dag_connected_component(), dag_consistency_asserts(), dag_dot(), dag_fix_image_reuse(), dagvtx_copy_list_dot(), dagvtx_list_dot(), display_linked_control_nodes(), do_array_expansion(), do_gpu_qualify_pointers(), do_group_statement_constant(), do_linearize_array_manage_callers(), do_loop_expansion(), do_loop_nest_unswitching(), do_reduction_detection(), do_reduction_propagation(), do_redundant_load_store_elimination(), do_resource_usage_check(), do_scalar_renaming_in_successors(), do_solve_hardware_constraints_on_nb_proc(), do_solve_hardware_constraints_on_volume(), DoRedundantsStatements(), effects_to_dma(), expand_call(), expand_expression(), expand_reference(), fcs_call_flt(), find_covering_reference_path(), find_entities_to_wrap(), flint_variable_uninitialize_elsewhere(), freia_allocate_new_images_if_needed(), freia_cleanup_sequence_rec(), freia_compile(), freia_dag_optimize(), freia_migrate_statements(), freia_spoc_pipeline(), freia_substitute_by_helper_call(), freia_terapix_call(), gen_list_cyclic_p(), generic_type_depth(), get_loop_locals_and_remove_walker(), get_more_derived_resources(), glc_call(), glc_cast(), guard_expanded_statement_if_needed(), init_statement_equivalence_table(), inv_entity_filter(), invariant_vertex_to_invariant_entities(), io_intrinsic_p(), keep_recv_or_send_referenced_entity(), list_in_set_p(), make_cache_hit_p(), merge_points_to_set(), move_ahead(), mppa_helper_args_params(), only_minor_statements_in_between(), opencl_merge_and_compile(), pixel_name(), pragma_omp_merge_expr(), print_entity_task_buffers(), propagate_constant_image_to_succs(), Ready_p(), recursive_functional_type_supporting_entities(), recursive_type_supporting_entities(), recursive_type_supporting_references(), recursive_type_supporting_types(), reduction_p(), reductions_rewrite(), remove_all_unreachable_controls_of_an_unstructured(), remove_simple_scalar_pointers(), rename_op(), replace_entity_by_expression_entity_walker(), rice_update_dependence_graph(), rssp_ref(), sc_delimiter(), search_parallel_loops(), set_add_element(), set_glopriv(), set_inclusion_p(), simdize_simple_statements_pass2(), simdizer_auto_tile(), single_image_assignement_p(), sort_subsequence(), statement_clean_declarations_helper(), statement_depends_p(), statements_conflict_p(), terapix_loop_handler(), terapix_loop_optimizer(), terapixify_loop_purge(), terapixify_loops(), update_referenced_entities(), update_SUMMARY_SENDRECV_regions(), vertex_in_cycle_aux_p(), vertex_invariant_p(), vertex_redundant_p(), and vertex_to_chains().

+ Here is the call graph for this function:

◆ set_clear()

◆ set_del_element()

set set_del_element ( set  s1,
const set  s2,
const void *  e 
)
Returns
s1 = s2 - { e }.

Definition at line 265 of file set.c.

266 {
267  set_assign( s1, s2 ) ;
268  hash_del( s1->table, e );
269  return s1;
270 }
void * hash_del(hash_table htp, const void *key)
this function removes from the hash table pointed to by htp the couple whose key is equal to key.
Definition: hash.c:439

References hash_del(), s1, and set_assign().

Referenced by compute_points_to_binded_set(), copy_from_call(), copy_from_test(), copy_to_call(), copy_to_test(), dag_computable_vertices(), do_resource_usage_check(), freia_dag_optimize(), freia_spoc_pipeline(), interprocedural_mapping(), is_consummed_by_vertex(), mask_effects(), new_points_to_unstructured(), opencl_merge_and_compile(), points_to_cell_source_projection(), points_to_function_projection(), points_to_set_block_projection(), points_to_source_projection(), remove_arc_from_simple_pt_map(), remove_resource_from_make_cache(), select_imagelet(), sort_entities_with_dep(), and update_referenced_entities().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_delfree_element()

set set_delfree_element ( set  s1,
const set  s2,
const void *  e 
)

May be useful for string sets ...

NOT TESTED

FI:Confusing for Newgen users because gen_free() is expected?

Definition at line 276 of file set.c.

277 {
278  void * pe;
279  set_assign(s1, s2);
280  (void) hash_delget(s1->table, e ,&pe);
281  free(pe);
282  return s1;
283 }
void free(void *)
void * hash_delget(hash_table htp, const void *key, void **pkey)
deletes key from the hash table.
Definition: hash.c:398

References free(), hash_delget(), s1, and set_assign().

+ Here is the call graph for this function:

◆ set_difference()

◆ set_dup()

set set_dup ( const set  s)
Returns
duplicated set

Definition at line 143 of file set.c.

144 {
145  set n = set_make(s->type);
146  HASH_MAP(k, v, hash_put(n->table, k, v ), s->table);
147  return n;
148 }
set set_make(set_type typ)
Create an empty set of any type but hash_private.
Definition: set.c:102

References HASH_MAP, hash_put(), set_make(), _set_chunk::table, and _set_chunk::type.

Referenced by compute_dead_vertices(), inout_any_loop(), inout_test(), and outliner_independent_recursively().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_empty_p()

bool set_empty_p ( const set  s)

tell whether set s is empty.

returnn s=={}

Definition at line 367 of file set.c.

368 {
369  return set_size(s)==0;
370 }
int set_size(const set s)
returns the number of items in s.
Definition: set.c:359

References set_size().

Referenced by compile_reduction(), consistent_points_to_graph_p(), do_unfolding(), extract_matching_statements(), fi_points_to_storage(), freia_spoc_pipeline(), gen_set_closure_iterate(), init_statement_equivalence_table(), list_assignment_to_points_to(), merge_points_to_set(), new_points_to_unstructured(), points_to_storage(), real_freia_scalar_rw_dep(), select_imagelet(), set_intersection_p(), simdize_simple_statements_pass2(), SimplifyInvariantVertex(), and SimplifyRedundantVertex().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_equal_p()

bool set_equal_p ( const set  s1,
const set  s2 
)

returns whether s1 == s2

Definition at line 316 of file set.c.

317 {
318  if (s1==s2) return true;
319  return set_size(s1)==set_size(s2) &&
320  set_inclusion_p(s1, s2) && set_inclusion_p(s2, s1);
321 }
bool set_inclusion_p(const set s1, const set s2)
return whether s1 \included s2
Definition: set.c:305

References s1, set_inclusion_p(), and set_size().

Referenced by any_loop_to_points_to(), arguments_set_equal_p(), copy_to_all_kind_of_loop(), inout_control(), and new_any_loop_to_points_to().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_fprint()

void set_fprint ( FILE *  out,
string  name,
const set  s,
gen_string_func_t  item_name 
)

print set s to file stream out.

Definition at line 523 of file set.c.

525 {
526  string_buffer sb = set_to_string_buffer(name, s, item_name);
528  putc('\n', out);
530 }
static FILE * out
Definition: alias_check.c:128
void string_buffer_to_file(const string_buffer, FILE *)
put string buffer into file.
void string_buffer_free(string_buffer *)
free string buffer structure, also free string contents according to the dup field
Definition: string_buffer.c:82
static string_buffer set_to_string_buffer(string name, const set s, gen_string_func_t item_name)
convert set s to a string_buffer used internally, but may be exported if needed.
Definition: set.c:488
internally defined structure.
Definition: string_buffer.c:47
Definition: statement.c:4047

References out, set_to_string_buffer(), string_buffer_free(), and string_buffer_to_file().

Referenced by dag_compute_outputs(), freia_migrate_statements(), select_imagelet(), and update_written_variables().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_free() [1/2]

void set_free ( set  s)

Definition at line 332 of file set.c.

333 {
335  gen_free_area((void**) s, sizeof(struct _set_chunk));
336 }
void gen_free_area(void **p, int size)
free an area.
Definition: list.c:775
void hash_table_free(hash_table htp)
this function deletes a hash table that is no longer useful.
Definition: hash.c:327

References gen_free_area(), hash_table_free(), and _set_chunk::table.

Referenced by bootstrap(), build_number_to_statement(), C_loop_range(), callgraph(), check_control_coherency(), check_for_effected_statement(), check_private_variables_call_walker(), clean_stats_to_image(), compact_list(), compute_dead_vertices(), compute_points_to_gen_set(), concat_new_entities(), conflict_is_a_real_conflict_p(), ConnectedStatements(), copy_from_call(), copy_from_loop(), copy_to_all_kind_of_loop(), copy_to_call(), copy_to_statement(), dag_computable_vertices(), dag_compute_outputs(), dag_connected_component(), dag_consistency_asserts(), dag_dot(), dag_fix_image_reuse(), dag_terapix_measures(), delete_derived_resources(), display_linked_control_nodes(), distributable_loop(), do_array_expansion(), do_get_referenced_entities_on_statement(), do_group_statement_constant(), do_group_statement_constant_filter(), do_group_statement_constant_prune(), do_linearize_array(), do_loop_expansion(), do_loop_nest_unswitching(), do_prune_arcs(), do_reduction_detection(), do_reduction_propagation(), do_remove_redundant_communications_in_anyloop(), do_scalar_renaming_in_graph(), do_simplify_dg(), do_solve_hardware_constraints_on_nb_proc(), do_solve_hardware_constraints_on_volume(), do_terapix_pointer_initialized_from_a_mask_p(), do_terapix_warmup(), do_unfolding(), DoInvariantsStatements(), DoRedundantsStatements(), effects_to_dma(), entity_generate_missing_declarations(), extract_matching_statements(), extract_non_conflicting_statements(), filter_formal_context_according_to_actual_context(), fix_loop_index_sign(), flint_free_statement_def_use_variables(), for_to_do_loop_conversion(), fortran_constant_expression_supporting_entities(), free_glopriv(), free_simple_out(), freia_allocate_new_images_if_needed(), freia_clean_image_occurrences(), freia_cleanup_main_sequence(), freia_cleanup_status(), freia_compile(), freia_dag_optimize(), freia_mppa_compile_calls(), freia_opencl_compile_calls(), freia_spoc_pipeline(), freia_substitute_by_helper_call(), freia_terapix_call(), fsi_seq_flt(), functional_type_supporting_entities(), functional_type_supporting_types(), gather_local_indices(), gen_list_cyclic_p(), genref_unstructured(), get_loop_locals_and_remove_walker(), get_private_entities(), get_referenced_entities_filtered(), group_constants(), guard_expanded_statement_if_needed(), icm_codegen(), init_points_to_analysis(), init_statement_equivalence_table(), inline_expression_call(), inline_split_declarations(), inout_any_loop(), inout_control(), inout_test(), inout_unstructured(), is_consummed_by_vertex(), keep_recv_or_send_referenced_entity(), kill_effects(), maximal_type_depth(), merge_points_to_set(), migrate_statements(), module_to_value_mappings(), move_ahead(), mppa_helper_args_params(), new_filter_formal_context_according_to_actual_context(), opencl_compile_mergeable_dag(), opencl_merge_and_compile(), other_significant_uses(), outliner_independent_recursively(), outliner_statements_referenced_entities(), pointer_formal_parameter_to_stub_points_to(), points_to_binding(), points_to_binding_arguments(), pragma_omp_merge_expr(), private_variables(), promote_local_entities(), propagate_constant_image_to_succs(), prune_non_constant(), rdg_loop(), real_freia_scalar_rw_dep(), remove_all_unreachable_controls_of_an_unstructured(), remove_simple_scalar_pointers(), rename_operator(), replace_entity_by_expression_with_filter(), reset_make_cache(), rice_loop(), sc_delimiter(), scalopify(), simd_remove_reductions(), simdize_simple_statements_pass2(), simdizer_auto_tile(), SimplifyGraph(), SimplifyInvariantVertex(), SimplifyRedundantVertex(), single_image_assignement_p(), solve_name_clashes(), sort_entities_with_dep(), sort_subsequence(), statement_clean_declarations_helper(), statement_dependence_graph(), statement_to_called_user_entities(), statement_to_declarations(), statement_to_referenced_entities(), statements_conflict_p(), SupressDependances(), terapix_loop_optimizer(), terapixify_loop_purge(), terapixify_loops(), text_loop_90(), transfert_loop(), transfert_statement(), type_supporting_entities(), type_supporting_references(), type_supporting_types(), update_referenced_entities(), user_call_to_points_to_interprocedural_binding_set(), vertex_in_cycle_p(), and vertex_to_chains().

+ Here is the call graph for this function:

◆ set_free() [2/2]

set_free ( tmp  )

Referenced by gen_set_closure_iterate(), set_intersection_p(), and sets_free().

+ Here is the caller graph for this function:

◆ set_generic_make()

set set_generic_make ( set_type  typ,
hash_equals_t  private_equal_p,
hash_rank_t  private_rank 
)

Create an empty set of any type.

what about this replacement? #define SET_MAP(the_item, the_code, the_set) \ { SET_FOREACH(void *, the_item, the_set) the_code; }

discrepancy: size_t sometimes, _uint elsewhere why not use the functional types now defined in newgen_hash.h?

Definition at line 83 of file set.c.

86 {
87  set hp = (set) alloc(sizeof(struct _set_chunk));
88  message_assert("allocated", hp);
89 
91  (hash_key_type) typ,
93  private_equal_p,
94  private_rank);
95 
96  hp->type = typ;
97 
98  return hp;
99 }
char * alloc(int size)
ALLOC is an "iron-clad" version of malloc(3).
Definition: build.c:501
hash_table hash_table_generic_make(hash_key_type key_type, size_t size, hash_equals_t private_equal_p, hash_rank_t private_rank)
this function makes a hash table of size size.
Definition: hash.c:223
#define message_assert(msg, ex)
Definition: newgen_assert.h:47
hash_key_type
Equality and rank functions are provided for strings, integers, pointers and Newgen chunks.
Definition: newgen_hash.h:31
struct _set_chunk * set
Definition: newgen_set.h:38
#define INITIAL_SET_SIZE
Definition: set.c:64

References alloc(), hash_table_generic_make(), INITIAL_SET_SIZE, message_assert, _set_chunk::table, and _set_chunk::type.

Referenced by array_formal_parameter_to_stub_points_to(), compute_points_to_binded_set(), derived_formal_parameter_to_stub_points_to(), formal_points_to_parameter(), gen_may_constant_paths(), gen_may_set(), gen_must_constant_paths(), gen_must_set(), gen_set_closure_iterate(), init_points_to_analysis(), kill_may_set(), merge_points_to_set(), new_points_to_unstructured(), opgen_null_location(), pointer_formal_parameter_to_stub_points_to(), points_to_anywhere(), points_to_anywhere_typed(), points_to_function_projection(), points_to_independent_store(), points_to_may_filter(), points_to_must_filter(), points_to_nowhere(), set_make(), typedef_formal_parameter_to_stub_points_to(), and user_call_to_points_to_fast_interprocedural().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_get_type()

set_type set_get_type ( const set  s)

return the type of set s

Definition at line 75 of file set.c.

76 {
77  return s->type;
78 }

References _set_chunk::type.

◆ set_inclusion_p()

bool set_inclusion_p ( const set  s1,
const set  s2 
)

return whether s1 \included s2

Definition at line 305 of file set.c.

306 {
307  if (s1==s2) return true;
308  SET_FOREACH(void *, i, s1)
309  if (!set_belong_p(s2, i))
310  return false;
311  return true;
312 }

References s1, set_belong_p(), and SET_FOREACH.

Referenced by do_simplify_dg(), and set_equal_p().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_intersection()

set set_intersection ( set  s1,
const set  s2,
const set  s3 
)
Returns
s1 = s2 n s3.

Definition at line 229 of file set.c.

230 {
231  if( s1 != s2 && s1 != s3 ) {
232  set_clear( s1 ) ;
233  HASH_MAP( k, v, {if( hash_get( s2->table, k )
235  hash_put( s1->table, k, v ) ;},
236  s3->table ) ;
237  return( s1 ) ;
238  }

References hash_get(), HASH_MAP, hash_put(), HASH_UNDEFINED_VALUE, s1, set_clear(), and _set_chunk::table.

Referenced by copy_from_all_kind_of_loop(), copy_from_test(), copy_to_all_kind_of_loop(), copy_to_statement(), copy_to_test(), do_group_statement_constant_prune(), do_unfolding(), extract_matching_statements(), extract_non_conflicting_statements(), for_to_do_loop_conversion(), freia_dag_optimize(), merge_points_to_set(), new_points_to_unstructured(), real_freia_scalar_rw_dep(), set_intersection_p(), and transfert_statement().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_intersection_p()

bool set_intersection_p ( const set  s1,
const set  s2 
)

returns whether s1 n s2 <> 0 complexity of the intersection

Definition at line 288 of file set.c.

289 {
290  bool non_empty_intersection;
291  if (set_empty_p(s1) || set_empty_p(s2))
292  non_empty_intersection = false;
293  else
294  {
295  set inter = set_make(set_pointer);
296  set_intersection(inter, s1, s2);
297  non_empty_intersection = !set_empty_p(inter);
298  set_free(inter);
299  }
300  return non_empty_intersection;
301 }
@ set_pointer
Definition: newgen_set.h:44
set set_intersection(set s1, const set s2, const set s3)
Definition: set.c:229

References s1, set_empty_p(), set_free(), set_intersection(), set_make(), and set_pointer.

Referenced by do_remove_redundant_communications_in_anyloop(), is_consummed_by_vertex(), and new_points_to_unstructured().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_make()

set set_make ( set_type  typ)

Create an empty set of any type but hash_private.

Use default functions for equality check and rank computation.

Definition at line 102 of file set.c.

103 {
104  message_assert("typ is not set_private", typ!=set_private);
105  /* Use default functions for equality check and rank computation. */
106  return set_generic_make(typ, NULL, NULL);
107 }
@ set_private
Definition: newgen_set.h:45

References message_assert, set_generic_make(), and set_private.

Referenced by arithmetic_intrinsic_p(), bootstrap(), build_number_to_statement(), callgraph(), check_control_coherency(), check_for_effected_statement(), check_ref(), check_stmt(), compact_list(), concat_new_entities(), conflict_is_a_real_conflict_p(), copy_from_call(), create_or_get_a_set_from_control(), cyclic_graph_to_points_to(), dag_cleanup_other_statements(), dag_computable_vertices(), dag_compute_outputs(), dag_connected_component(), dag_consistency_asserts(), dag_dot(), dag_fix_image_reuse(), dag_split_on_scalars(), dag_stats(), dag_terapix_measures(), delete_derived_resources(), display_linked_control_nodes(), distributable_loop(), do_array_expansion(), do_group_statement_constant(), do_linearize_array(), do_prune_arcs(), do_reduction_detection(), do_reduction_propagation(), do_redundant_load_store_elimination(), do_remove_redundant_communications_in_anyloop(), do_scalar_renaming_in_successors(), do_simplify_dg(), do_solve_hardware_constraints_on_nb_proc(), do_solve_hardware_constraints_on_volume(), do_unfolding(), DoInvariantsStatements(), DoRedundantsStatements(), effects_to_dma(), extract_matching_statements(), extract_non_conflicting_statements(), find_covering_reference_path(), flint_initialize_statement_def_use_variables(), for_to_do_loop_conversion(), fortran_constant_expression_supporting_entities(), freia_allocate_new_images_if_needed(), freia_cleanup_main_sequence(), freia_cleanup_status(), freia_compile(), freia_compute_output_images(), freia_dag_optimize(), freia_mppa_compile_calls(), freia_opencl_compile_calls(), freia_spoc_pipeline(), freia_substitute_by_helper_call(), freia_terapix_call(), freia_trpx_compile_one_dag(), fsi_seq_flt(), functional_type_supporting_entities(), functional_type_supporting_types(), gen_copy_set(), gen_list_cyclic_p(), get_declared_entities(), get_loop_locals_and_remove(), get_private_entities(), get_referenced_entities_filtered(), get_statement_matching_types(), graph_to_live_writes(), group_constants(), guard_expanded_statement_if_needed(), icm_codegen(), init_make_cache(), init_resource_usage_check(), init_statement_equivalence_table(), inline_split_declarations(), io_intrinsic_p(), is_consummed_by_vertex(), keep_recv_or_send_referenced_entity(), make_string_set_from_prop(), maximal_type_depth(), migrate_statements(), move_ahead(), mppa_helper_args_params(), new_glopriv(), opencl_compile_mergeable_dag(), opencl_merge_and_compile(), other_significant_uses(), outliner_statements_referenced_entities(), pragma_omp_merge_expr(), propagate_constant_image_to_succs(), Ready_p(), ready_to_be_processed_set(), real_freia_scalar_rw_dep(), recursive_functional_type_supporting_entities(), region_of_loop(), remove_all_unreachable_controls_of_an_unstructured(), remove_simple_scalar_pointers(), replace_entity_by_expression_with_filter(), sbp_context_add_kernel_task_buffer(), sbp_context_init(), sc_delimiter(), scalopify(), scc_region(), set_dup(), set_intersection_p(), set_RT_add_local(), set_singleton(), simd_remove_reductions(), simdize_simple_statements_pass2(), simdizer_auto_tile(), SimplifyGraph(), SimplifyInvariantVertex(), SimplifyRedundantVertex(), single_image_assignement_p(), sort_entities_with_dep(), sort_subsequence(), statement_dependence_graph(), statement_to_called_user_entities(), statement_to_declarations(), statement_to_referenced_entities(), step_add_created_symbolic(), step_analyse_CHAINS_DG(), step_directive_to_strings(), step_get_directive_reductions(), SupressDependances(), text_loop_90(), transfert_test(), type_supporting_entities(), type_supporting_references(), type_supporting_types(), update_referenced_entities(), vertex_in_cycle_p(), and vertex_to_chains().

+ Here is the call graph for this function:

◆ set_own_allocated_memory()

int set_own_allocated_memory ( const set  s)

Definition at line 423 of file set.c.

424 {
425  return sizeof(struct _set_chunk)+hash_table_own_allocated_memory(s->table);
426 }
int hash_table_own_allocated_memory(hash_table htp)
Definition: hash.c:869

References hash_table_own_allocated_memory(), and _set_chunk::table.

Referenced by allocated_memory_simple_in().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_private_get_hash_table()

hash_table set_private_get_hash_table ( const set  s)

return the internal hash table of set s

Definition at line 68 of file set.c.

69 {
70  return s->table;
71 }

References _set_chunk::table.

◆ set_singleton()

set set_singleton ( set_type  type,
const void *  p 
)

create a singleton set of any type but hash_private

use set_add_element() instead for hash_private

Definition at line 113 of file set.c.

114 {
115  set s = set_make( type ) ;
116  hash_put( s->table, p, p ) ;
117  return s;
118 }

References hash_put(), set_make(), and _set_chunk::table.

+ Here is the call graph for this function:

◆ set_size()

int set_size ( const set  s)

returns the number of items in s.

Definition at line 359 of file set.c.

360 {
361  return hash_table_entry_count(s->table);
362 }
int hash_table_entry_count(hash_table htp)
now we define observers in order to hide the hash_table type...
Definition: hash.c:818

References hash_table_entry_count(), and _set_chunk::table.

Referenced by dag_split_on_scalars(), freia_allocate_new_images_if_needed(), freia_image_shuffle(), freia_migrate_statements(), freia_spoc_pipeline(), list_assignment_to_points_to(), print_or_dump_points_to_set(), sc_delimiter(), set_empty_p(), set_equal_p(), and set_to_string_buffer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_to_list()

list set_to_list ( const set  s)

create a list from a set the set is not freed

Warning
no assumption can be made on the ordering of returned list
Parameters
sset where the data are
Returns
an allocated list of elements from s

Definition at line 436 of file set.c.

437 {
438  list l =NIL;
439  SET_FOREACH(void *, v, s)
440  l = gen_cons(v,l);
441  return l;
442 }
#define NIL
The empty list (nil in Lisp)
Definition: newgen_list.h:47
list gen_cons(const void *item, const list next)
Definition: list.c:888
The structure used to build lists in NewGen.
Definition: newgen_list.h:41

References gen_cons(), NIL, and SET_FOREACH.

Referenced by copy_from_call(), copy_from_test(), freia_allocate_new_images_if_needed(), generic_points_to_analysis(), get_referenced_entities_filtered(), kernel_data_mapping(), make_simd_statements(), outliner_independent_recursively(), outliner_statements_referenced_entities(), set_to_sorted_list(), and step_update_SUMMARY_SENDRECV_regions().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_to_sorted_list()

list set_to_sorted_list ( const set  s,
gen_cmp_func_t  cmp 
)
Returns
a sorted list from a set. provide comparison function as gen_sort_list, which calls "qsort".

Definition at line 447 of file set.c.

448 {
449  list l = set_to_list(s);
450  gen_sort_list(l, cmp);
451  return l;
452 }
void gen_sort_list(list l, gen_cmp_func_t compare)
Sorts a list of gen_chunks in place, to avoid allocations...
Definition: list.c:796
list set_to_list(const set s)
create a list from a set the set is not freed
Definition: set.c:436

References gen_sort_list(), and set_to_list().

Referenced by compile_reduction(), copy_from_statement(), copy_to_statement(), dag_compute_outputs(), do_group_constants_terapix(), do_scalar_renaming_in_graph(), do_unfolding(), fi_points_to_storage(), init_points_to_analysis(), inline_expression_call(), order_isomorphic_statements(), points_to_storage(), print_entity_task_buffers(), print_sesam_tasks_buffers_header(), real_freia_scalar_rw_dep(), sort_entities_with_dep(), transfert_block(), transfert_loop(), transfert_statement(), and update_referenced_entities().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_to_string()

string set_to_string ( string  name,
const set  s,
gen_string_func_t  item_name 
)

return allocated string for set s

Parameters
nameset description
sthe set
item_nameuser function to build a string for each item

Definition at line 513 of file set.c.

514 {
515  string_buffer sb = set_to_string_buffer(name, s, item_name);
516  string res = string_buffer_to_string(sb);
518  return res;
519 }
string string_buffer_to_string(const string_buffer)
return malloc'ed string from string buffer sb

References set_to_string_buffer(), string_buffer_free(), and string_buffer_to_string().

Referenced by any_scalar_dep().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_to_string_buffer()

static string_buffer set_to_string_buffer ( string  name,
const set  s,
gen_string_func_t  item_name 
)
static

convert set s to a string_buffer used internally, but may be exported if needed.

Definition at line 488 of file set.c.

489 {
491  if (name)
492  string_buffer_cat(sb, name, " = (", i2a(set_size(s)), ") { ", NULL);
493  else
494  string_buffer_cat(sb, " (", i2a(set_size(s)), ") { ", NULL);
495 
496  bool first = true;
497  SET_FOREACH(void *, i, s)
498  {
499  if (first) first = false;
500  else string_buffer_append(sb, ", ");
501  string_buffer_append(sb, item_name(i));
502  }
503 
504  string_buffer_append(sb, " }");
505  return sb;
506 }
char * i2a(int)
I2A (Integer TO Ascii) yields a string for a given Integer.
Definition: string.c:121
void string_buffer_append(string_buffer, const string)
append string s (if non empty) to string buffer sb, the duplication is done if needed according to th...
string_buffer string_buffer_make(bool dup)
allocate a new string buffer
Definition: string_buffer.c:58
void string_buffer_cat(string_buffer, const string,...)
append a NULL terminated list of string to sb.

References i2a(), SET_FOREACH, set_size(), string_buffer_append(), string_buffer_cat(), and string_buffer_make().

Referenced by set_fprint(), and set_to_string().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_union()

set set_union ( set  s1,
const set  s2,
const set  s3 
)
Returns
s1 = s2 u s3.

Definition at line 211 of file set.c.

212 {
213  // do not warn on redefinitions when computing an union.
214  bool warning = hash_warn_on_redefinition_p();
215  if (warning) hash_dont_warn_on_redefinition();
216  if( s1 != s3 ) {
217  set_assign(s1, s2) ;
218  HASH_MAP( k, v, hash_put( s1->table, k, v), s3->table ) ;
219  }
220  else {
221  HASH_MAP( k, v, hash_put( s1->table, k, v), s2->table ) ;
222  }
223  if (warning) hash_warn_on_redefinition();
224  return s1;
225 }
void hash_dont_warn_on_redefinition(void)
Definition: hash.c:188
bool hash_warn_on_redefinition_p(void)
Definition: hash.c:193
void hash_warn_on_redefinition(void)
these function set the variable should_i_warn_on_redefinition to the value true or false
Definition: hash.c:183

References hash_dont_warn_on_redefinition(), HASH_MAP, hash_put(), hash_warn_on_redefinition(), hash_warn_on_redefinition_p(), s1, set_assign(), and _set_chunk::table.

Referenced by compute_points_to_binded_set(), copy_from_call(), copy_to_all_kind_of_loop(), copy_to_call(), do_get_referenced_entities_on_statement(), do_simplify_dg(), formal_points_to_parameter(), freia_compile(), freia_dag_optimize(), freia_mppa_compile_calls(), freia_opencl_compile_calls(), gather_local_indices(), gen_may_set(), gen_must_set(), gen_set_closure_iterate(), genref_any_loop(), genref_block(), genref_test(), genref_unstructured(), get_loop_locals_and_remove_walker(), get_referenced_entities_filtered(), init_points_to_analysis(), inout_any_loop(), inout_call(), inout_control(), inout_test(), inout_unstructured(), list_assignment_to_points_to(), merge_points_to_set(), migrate_statements(), new_points_to_unstructured(), outliner_statements_referenced_entities(), pointer_formal_parameter_to_stub_points_to(), points_to_anywhere(), points_to_anywhere_typed(), points_to_binding(), points_to_binding_arguments(), points_to_nowhere(), sc_delimiter(), sort_entities_with_dep(), user_call_to_points_to_fast_interprocedural(), and user_call_to_points_to_interprocedural().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sets_free()

void sets_free ( set  s,
  ... 
)

Free several sets in one call.

Useful when many sets are used simultaneously.

Analyze in args the variadic arguments that may be after t:

Since a variadic function in C must have at least 1 non variadic argument (here the s), just skew the varargs analysis:

Get the next argument

Release the variadic analysis

Definition at line 340 of file set.c.

341 {
342  va_list args;
343 
344  /* Analyze in args the variadic arguments that may be after t: */
345  va_start(args, s);
346  /* Since a variadic function in C must have at least 1 non variadic
347  argument (here the s), just skew the varargs analysis: */
348  do {
349  set_free(s);
350  /* Get the next argument */
351  s = va_arg(args, set);
352  } while(s!=NULL);
353  /* Release the variadic analysis */
354  va_end(args);
355 }

References set_free().

Referenced by list_assignment_to_points_to().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ else

else
Initial value:

Definition at line 239 of file set.c.

◆ s1

s1 == s2) ? s3->table : s2->table )

Definition at line 247 of file set.c.

Referenced by abc_instrumentation_insert_before_statement(), actual_convex_union(), add_arrow_in_ctrl_graph(), adjust_goto_from_to(), bases_strictly_equal_p(), basic_maximum(), bottom_up_abc_insert_before_statement(), build_signature(), cell_is_xxx_p(), cell_reference_compare(), check_way_between_two_statements(), compact_phi_functions(), comparable_statements_on_distance_p(), compare_entities_without_scope(), compare_statements_on_distance_to_origin(), compare_statements_on_ordering(), compatible_points_to_subscripts_p(), compute_communications(), computebounds(), conflicts_sort_callback(), constant_constraint_check(), contains_level_l_dependence(), control_cons_compare(), control_equal_p(), cute_convex_union(), db_resource_name_or_owner_name(), dependencies_filter(), dma_statements_conflict_p(), dmas_invert_p(), edge_cost(), edge_cost_polynome(), elementary_convex_union(), entity_locations_max(), equal_must_vreference(), expression_equal_p(), extract_common_syst(), extract_nredund_subsystem(), flint_initialize_statement_def_use_variables(), fortran_string_compare(), free_guards(), freia_allocate_new_images_if_needed(), freia_close_dep_cache(), freia_cmp_statement(), function_same_string_p(), gen_qsort_string_cmp(), general_build_signature(), generate_alternate_return_targets(), generate_io_wp65_code(), generic_basic_equal_p(), generic_insert_statement(), generic_unary_operation_to_transformer(), get_request_string_timers(), get_string_timers(), gfc2pips_code2instruction_(), guard_elimination(), Hierarchical_tiling(), ignore_this_conflict(), insert_impact_description_as_comment(), insert_statement(), insert_statement_no_matter_what(), instruction_to_wp65_code(), interprocedural_abc_insert_before_statement(), ith_loop_in_loop_nest(), jpips_tag2(), logic_condition_filter(), loop_flt(), main(), make_exit_statement(), make_filtered_dg_or_dvdg(), MakeArithmIfInst(), MakeForloop(), MakeIoInstA(), MakeNewLabelledStatement(), MakeWhileLoop(), merge_points_to_graphs(), merge_points_to_set(), old_value_entity_p(), only_minor_statements_in_between(), opkill_may_vreference(), opkill_must_vreference(), pips_code_abc_statement_rwt(), pointer_unary_operation_to_transformer(), points_to_binding_arguments(), points_to_cell_translation(), points_to_compare_cell(), points_to_compare_cells(), points_to_compare_location(), points_to_compare_ptr_cell(), points_to_name(), points_to_rank(), points_to_reference_included_p(), ppt_assignement(), ppt_binary(), prettyprint_dependence_graph(), prettyprint_dependence_graph_view(), prettyprint_dot_dependence_graph(), quick_privatize_graph(), quick_privatize_statement_pair(), references_do_not_conflict_p(), regions_may_convex_hull(), regions_must_convex_hull(), replace_expression_content(), ReuseLabelledStatement(), rice_update_dependence_graph(), safe_build_signature(), same_distribute_p(), same_level_p(), same_scalar_location_p(), same_sizeofexpression_name_p(), same_struct_entity_p(), same_syntax_name_p(), same_type_name_p(), same_va_arg_name_p(), sc_append(), sc_concatenate(), sc_cute_convex_hull(), sc_enveloppe_chernikova(), sc_enveloppe_chernikova_ofl_ctrl(), sc_fusion(), sc_intersection(), sc_safe_append(), sc_safe_intersection(), search_parallel_loops(), set_add_element(), set_add_elements(), set_assign(), set_del_element(), set_delfree_element(), set_difference(), set_equal_p(), set_inclusion_p(), set_intersection(), set_intersection_p(), set_union(), sg_rm_sommets(), sizeofexpression_equal_p(), som_in_liste(), some_conflicts_between(), sommet_egal(), statement_equal_p(), statement_newbase(), statements_conflict_p(), statements_conflict_relaxed_p(), stats_has_rw_conf_p(), step_analyse_CHAINS_DG(), step_compute_CHAINS_DG_SENDRECV_regions(), step_statement_path_factorise(), strlower(), strupper(), subscript_equal_p(), syntax_equal_p(), test_dependence_using_regions(), test_rwt(), TestCoupleOfEffects(), TestCoupleOfReferences(), TestDependence(), TestDiCnst(), TestDiVariables(), Tiling2_buffer(), Tiling_buffer_allocation(), tiling_sequence(), tlevel_decrease(), top_down_abc_insert_before_statement(), transformer_general_intersection(), variable_entities_may_conflict_p(), variable_references_may_conflict_p(), varval_value_name_is_inferior_p(), vertex_sort_callback(), wp65_conform_p(), and xml_Chain_Graph().