PIPS
effects-generic.h File Reference
#include "effects.h"
#include "text.h"
+ Include dependency graph for effects-generic.h:

Go to the source code of this file.

Macros

#define ACTION_UNDEFINED   string_undefined
 Warning! Do not modify this file that is automatically generated! More...
 
#define ACTION_READ   "R"
 
#define ACTION_WRITE   "W"
 
#define ACTION_IN   "IN"
 
#define ACTION_OUT   "OUT"
 
#define ACTION_COPYIN   "COPYIN"
 
#define ACTION_COPYOUT   "COPYOUT"
 
#define ACTION_PRIVATE   "PRIVATE"
 
#define ACTION_LIVE_IN   "ALIVE (IN)"
 
#define ACTION_LIVE_OUT   "ALIVE (OUT)"
 
#define pips_debug_effect(level, message, eff)
 for debug More...
 
#define pips_debug_effects(level, message, l_eff)
 
#define DB_GET_SE(name, NAME)
 for db_* functions More...
 
#define DB_GET_LS(name, NAME)
 
#define DB_GET_EE(name, NAME)
 
#define DB_PUT_SE(name, NAME)
 
#define DB_PUT_LS(name, NAME)
 
#define DB_PUT_EE(name, NAME)
 
#define DB_NOPUT_SE(name)
 
#define DB_NOPUT_LS(name)
 
#define DB_NOPUT_EE(name)
 
#define DB_GETPUT_SE(name, NAME)   DB_GET_SE(name, NAME) DB_PUT_SE(name, NAME)
 
#define DB_GETNOPUT_SE(name, NAME)   DB_GET_SE(name, NAME) DB_NOPUT_SE(name)
 
#define DB_GETPUT_LS(name, NAME)   DB_GET_LS(name, NAME) DB_PUT_LS(name, NAME)
 
#define DB_GETNOPUT_LS(name, NAME)   DB_GET_LS(name, NAME) DB_NOPUT_LS(name)
 
#define DB_GETPUT_EE(name, NAME)   DB_GET_EE(name, NAME) DB_PUT_EE(name, NAME)
 
#define DB_GETNOPUT_EE(name, NAME)   DB_GET_EE(name, NAME) DB_NOPUT_EE(name)
 

Typedefs

typedef text(* generic_text_function) (list)
 prettyprint function types: More...
 
typedef void(* generic_prettyprint_function) (list)
 
typedef void(* generic_attachment_function) (text)
 

Enumerations

enum  pointer_info_val {
  with_no_pointer_info , with_points_to , with_pointer_values , with_no_pointer_info ,
  with_points_to , with_pointer_values
}
 
enum  effects_representation_val { simple , convex , simple , convex }
 

Functions

void set_contracted_proper_effects (bool)
 end of effects-generic-local.h More...
 
void proper_effects_error_handler (void)
 
list generic_proper_effects_of_range (range)
 
list generic_proper_effects_of_derived_reference (reference, bool)
 
list generic_intermediary_proper_effects_of_reference (reference)
 
list generic_p_proper_effect_of_reference (reference, effect *, bool, bool)
 
list generic_proper_effects_of_reference (reference, bool)
 
list generic_proper_effects_of_read_reference (reference)
 
list generic_proper_effects_of_written_reference (reference)
 
list generic_proper_effects_of_complex_address_assign_dereferencing_op (expression, expression, list *, bool)
 
list generic_proper_effects_of_complex_address_address_of_dereferencing_op (expression, list *, bool)
 
list generic_proper_effects_of_complex_address_cast_dereferencing_op (cast, expression, list *, bool)
 
list generic_proper_effects_of_complex_address_conditional_dereferencing_op (expression, expression, expression, list *, bool)
 
list generic_proper_effects_of_complex_address_dereferencing_cast_op (list, list *, bool)
 
list new_generic_proper_effects_of_complex_address_conditional_op (list, list *, bool)
 
list old_generic_proper_effects_of_complex_address_conditional_op (list, list *, bool)
 
list generic_proper_effects_of_complex_address_assign_op (list, list *, bool)
 
list generic_proper_effects_of_complex_address_update_op (list, list *, bool)
 
list generic_proper_effects_of_complex_address_expression (expression, list *, int)
 
list generic_proper_effects_of_any_lhs (expression)
 
list generic_proper_effects_of_complex_memory_access_expression (expression, list *, list *, int)
 
list generic_proper_effects_of_address_expression (expression, int)
 
list generic_proper_effects_of_subscript (subscript)
 
list generic_proper_effects_of_application (application)
 
list generic_proper_effects_of_expression (expression)
 
list generic_proper_effects_of_expressions (list)
 
bool check_sdfi_effects_p (entity, list)
 
list generic_proper_effects_of_c_function_call_argument (expression)
 
list generic_r_proper_effects_of_call (call)
 
list type_to_effects (type)
 
list recursive_type_to_effects (type, set)
 
effect make_declaration_effect (entity, bool)
 
void proper_effects_of_module_statement (statement)
 
bool proper_effects_engine (const char *)
 
void expression_proper_effects_engine (const char *, statement)
 
void set_contracted_rw_effects (bool)
 rw_effects_engine.c More...
 
bool summary_rw_effects_engine (const char *)
 
void rw_effects_of_module_statement (statement)
 
bool rw_effects_engine (const char *)
 
bool summary_in_effects_engine (const char *)
 in_effects_engine.c More...
 
bool in_effects_engine (const char *, effects_representation_val)
 
void reset_out_summary_effects_list (void)
 out_effects_engine.c More...
 
void update_out_summary_effects_list (list)
 
list get_out_summary_effects_list (void)
 
bool summary_out_effects_engine (const char *)
 
bool out_effects_engine (const char *, effects_representation_val)
 
bool proper_references_undefined_p (void)
 mappings.c More...
 
void reset_proper_references (void)
 
void error_reset_proper_references (void)
 
void set_proper_references (statement_effects)
 
statement_effects get_proper_references (void)
 
void init_proper_references (void)
 
void close_proper_references (void)
 
void store_proper_references (statement, effects)
 
void update_proper_references (statement, effects)
 
effects load_proper_references (statement)
 
effects delete_proper_references (statement)
 
bool bound_proper_references_p (statement)
 
void store_or_update_proper_references (statement, effects)
 
bool cumulated_references_undefined_p (void)
 
void reset_cumulated_references (void)
 
void error_reset_cumulated_references (void)
 
void set_cumulated_references (statement_effects)
 
statement_effects get_cumulated_references (void)
 
void init_cumulated_references (void)
 
void close_cumulated_references (void)
 
void store_cumulated_references (statement, effects)
 
void update_cumulated_references (statement, effects)
 
effects load_cumulated_references (statement)
 
effects delete_cumulated_references (statement)
 
bool bound_cumulated_references_p (statement)
 
void store_or_update_cumulated_references (statement, effects)
 
bool proper_rw_pointer_effects_undefined_p (void)
 
void reset_proper_rw_pointer_effects (void)
 
void error_reset_proper_rw_pointer_effects (void)
 
void set_proper_rw_pointer_effects (statement_effects)
 
statement_effects get_proper_rw_pointer_effects (void)
 
void init_proper_rw_pointer_effects (void)
 
void close_proper_rw_pointer_effects (void)
 
void store_proper_rw_pointer_effects (statement, effects)
 
void update_proper_rw_pointer_effects (statement, effects)
 
effects load_proper_rw_pointer_effects (statement)
 
effects delete_proper_rw_pointer_effects (statement)
 
bool bound_proper_rw_pointer_effects_p (statement)
 
void store_or_update_proper_rw_pointer_effects (statement, effects)
 
bool proper_rw_effects_undefined_p (void)
 
void reset_proper_rw_effects (void)
 
void error_reset_proper_rw_effects (void)
 
void set_proper_rw_effects (statement_effects)
 
statement_effects get_proper_rw_effects (void)
 
void init_proper_rw_effects (void)
 
void close_proper_rw_effects (void)
 
void store_proper_rw_effects (statement, effects)
 
void update_proper_rw_effects (statement, effects)
 
effects load_proper_rw_effects (statement)
 
effects delete_proper_rw_effects (statement)
 
bool bound_proper_rw_effects_p (statement)
 
void store_or_update_proper_rw_effects (statement, effects)
 
bool rw_pointer_effects_undefined_p (void)
 
void reset_rw_pointer_effects (void)
 
void error_reset_rw_pointer_effects (void)
 
void set_rw_pointer_effects (statement_effects)
 
statement_effects get_rw_pointer_effects (void)
 
void init_rw_pointer_effects (void)
 
void close_rw_pointer_effects (void)
 
void store_rw_pointer_effects (statement, effects)
 
void update_rw_pointer_effects (statement, effects)
 
effects load_rw_pointer_effects (statement)
 
effects delete_rw_pointer_effects (statement)
 
bool bound_rw_pointer_effects_p (statement)
 
void store_or_update_rw_pointer_effects (statement, effects)
 
bool invariant_rw_pointer_effects_undefined_p (void)
 
void reset_invariant_rw_pointer_effects (void)
 
void error_reset_invariant_rw_pointer_effects (void)
 
void set_invariant_rw_pointer_effects (statement_effects)
 
statement_effects get_invariant_rw_pointer_effects (void)
 
void init_invariant_rw_pointer_effects (void)
 
void close_invariant_rw_pointer_effects (void)
 
void store_invariant_rw_pointer_effects (statement, effects)
 
void update_invariant_rw_pointer_effects (statement, effects)
 
effects load_invariant_rw_pointer_effects (statement)
 
effects delete_invariant_rw_pointer_effects (statement)
 
bool bound_invariant_rw_pointer_effects_p (statement)
 
void store_or_update_invariant_rw_pointer_effects (statement, effects)
 
bool rw_effects_undefined_p (void)
 
void reset_rw_effects (void)
 
void error_reset_rw_effects (void)
 
void set_rw_effects (statement_effects)
 
statement_effects get_rw_effects (void)
 
void init_rw_effects (void)
 
void close_rw_effects (void)
 
void store_rw_effects (statement, effects)
 
void update_rw_effects (statement, effects)
 
effects load_rw_effects (statement)
 
effects delete_rw_effects (statement)
 
bool bound_rw_effects_p (statement)
 
void store_or_update_rw_effects (statement, effects)
 
bool invariant_rw_effects_undefined_p (void)
 
void reset_invariant_rw_effects (void)
 
void error_reset_invariant_rw_effects (void)
 
void set_invariant_rw_effects (statement_effects)
 
statement_effects get_invariant_rw_effects (void)
 
void init_invariant_rw_effects (void)
 
void close_invariant_rw_effects (void)
 
void store_invariant_rw_effects (statement, effects)
 
void update_invariant_rw_effects (statement, effects)
 
effects load_invariant_rw_effects (statement)
 
effects delete_invariant_rw_effects (statement)
 
bool bound_invariant_rw_effects_p (statement)
 
void store_or_update_invariant_rw_effects (statement, effects)
 
bool cumulated_rw_effects_undefined_p (void)
 
void reset_cumulated_rw_effects (void)
 
void error_reset_cumulated_rw_effects (void)
 
void set_cumulated_rw_effects (statement_effects)
 
statement_effects get_cumulated_rw_effects (void)
 
void init_cumulated_rw_effects (void)
 
void close_cumulated_rw_effects (void)
 
void store_cumulated_rw_effects (statement, effects)
 
void update_cumulated_rw_effects (statement, effects)
 
effects load_cumulated_rw_effects (statement)
 
effects delete_cumulated_rw_effects (statement)
 
bool bound_cumulated_rw_effects_p (statement)
 
void store_or_update_cumulated_rw_effects (statement, effects)
 
bool expr_prw_effects_undefined_p (void)
 
void reset_expr_prw_effects (void)
 
void error_reset_expr_prw_effects (void)
 
void set_expr_prw_effects (persistant_expression_to_effects)
 
persistant_expression_to_effects get_expr_prw_effects (void)
 
void init_expr_prw_effects (void)
 
void close_expr_prw_effects (void)
 
void store_expr_prw_effects (expression, effects)
 
void update_expr_prw_effects (expression, effects)
 
effects load_expr_prw_effects (expression)
 
effects delete_expr_prw_effects (expression)
 
bool bound_expr_prw_effects_p (expression)
 
void store_or_update_expr_prw_effects (expression, effects)
 
bool in_effects_undefined_p (void)
 
void reset_in_effects (void)
 
void error_reset_in_effects (void)
 
void set_in_effects (statement_effects)
 
statement_effects get_in_effects (void)
 
void init_in_effects (void)
 
void close_in_effects (void)
 
void store_in_effects (statement, effects)
 
void update_in_effects (statement, effects)
 
effects load_in_effects (statement)
 
effects delete_in_effects (statement)
 
bool bound_in_effects_p (statement)
 
void store_or_update_in_effects (statement, effects)
 
bool cumulated_in_effects_undefined_p (void)
 
void reset_cumulated_in_effects (void)
 
void error_reset_cumulated_in_effects (void)
 
void set_cumulated_in_effects (statement_effects)
 
statement_effects get_cumulated_in_effects (void)
 
void init_cumulated_in_effects (void)
 
void close_cumulated_in_effects (void)
 
void store_cumulated_in_effects (statement, effects)
 
void update_cumulated_in_effects (statement, effects)
 
effects load_cumulated_in_effects (statement)
 
effects delete_cumulated_in_effects (statement)
 
bool bound_cumulated_in_effects_p (statement)
 
void store_or_update_cumulated_in_effects (statement, effects)
 
bool invariant_in_effects_undefined_p (void)
 
void reset_invariant_in_effects (void)
 
void error_reset_invariant_in_effects (void)
 
void set_invariant_in_effects (statement_effects)
 
statement_effects get_invariant_in_effects (void)
 
void init_invariant_in_effects (void)
 
void close_invariant_in_effects (void)
 
void store_invariant_in_effects (statement, effects)
 
void update_invariant_in_effects (statement, effects)
 
effects load_invariant_in_effects (statement)
 
effects delete_invariant_in_effects (statement)
 
bool bound_invariant_in_effects_p (statement)
 
void store_or_update_invariant_in_effects (statement, effects)
 
bool out_effects_undefined_p (void)
 
void reset_out_effects (void)
 
void error_reset_out_effects (void)
 
void set_out_effects (statement_effects)
 
statement_effects get_out_effects (void)
 
void init_out_effects (void)
 
void close_out_effects (void)
 
void store_out_effects (statement, effects)
 
void update_out_effects (statement, effects)
 
effects load_out_effects (statement)
 
effects delete_out_effects (statement)
 
bool bound_out_effects_p (statement)
 
void store_or_update_out_effects (statement, effects)
 
bool live_in_paths_undefined_p (void)
 
void reset_live_in_paths (void)
 
void error_reset_live_in_paths (void)
 
void set_live_in_paths (statement_effects)
 
statement_effects get_live_in_paths (void)
 
void init_live_in_paths (void)
 
void close_live_in_paths (void)
 
void store_live_in_paths (statement, effects)
 
void update_live_in_paths (statement, effects)
 
effects load_live_in_paths (statement)
 
effects delete_live_in_paths (statement)
 
bool bound_live_in_paths_p (statement)
 
void store_or_update_live_in_paths (statement, effects)
 
bool live_out_paths_undefined_p (void)
 
void reset_live_out_paths (void)
 
void error_reset_live_out_paths (void)
 
void set_live_out_paths (statement_effects)
 
statement_effects get_live_out_paths (void)
 
void init_live_out_paths (void)
 
void close_live_out_paths (void)
 
void store_live_out_paths (statement, effects)
 
void update_live_out_paths (statement, effects)
 
effects load_live_out_paths (statement)
 
effects delete_live_out_paths (statement)
 
bool bound_live_out_paths_p (statement)
 
void store_or_update_live_out_paths (statement, effects)
 
bool live_out_regions_undefined_p (void)
 
void reset_live_out_regions (void)
 
void error_reset_live_out_regions (void)
 
void set_live_out_regions (statement_effects)
 
statement_effects get_live_out_regions (void)
 
void init_live_out_regions (void)
 
void close_live_out_regions (void)
 
void store_live_out_regions (statement, effects)
 
void update_live_out_regions (statement, effects)
 
effects load_live_out_regions (statement)
 
effects delete_live_out_regions (statement)
 
bool bound_live_out_regions_p (statement)
 
void store_or_update_live_out_regions (statement, effects)
 
bool useful_variables_effects_undefined_p (void)
 
void reset_useful_variables_effects (void)
 
void error_reset_useful_variables_effects (void)
 
void set_useful_variables_effects (entity_effects)
 
entity_effects get_useful_variables_effects (void)
 
void init_useful_variables_effects (void)
 
void close_useful_variables_effects (void)
 
void store_useful_variables_effects (entity, effects)
 
void update_useful_variables_effects (entity, effects)
 
effects load_useful_variables_effects (entity)
 
effects delete_useful_variables_effects (entity)
 
bool bound_useful_variables_effects_p (entity)
 
void store_or_update_useful_variables_effects (entity, effects)
 
list load_proper_rw_pointer_effects_list (statement)
 
void store_proper_rw_pointer_effects_list (statement, list)
 
void update_proper_rw_pointer_effects_list (statement, list)
 
list load_proper_rw_effects_list (statement)
 
void store_proper_rw_effects_list (statement, list)
 
void update_proper_rw_effects_list (statement, list)
 
list load_rw_pointer_effects_list (statement)
 
void store_rw_pointer_effects_list (statement, list)
 
void update_rw_pointer_effects_list (statement, list)
 
list load_rw_effects_list (statement)
 
void store_rw_effects_list (statement, list)
 
void update_rw_effects_list (statement, list)
 
list load_invariant_rw_pointer_effects_list (statement)
 
void store_invariant_rw_pointer_effects_list (statement, list)
 
void update_invariant_rw_pointer_effects_list (statement, list)
 
list load_invariant_rw_effects_list (statement)
 
void store_invariant_rw_effects_list (statement, list)
 
void update_invariant_rw_effects_list (statement, list)
 
list load_cumulated_rw_effects_list (statement)
 
void store_cumulated_rw_effects_list (statement, list)
 
void update_cumulated_rw_effects_list (statement, list)
 
list load_in_effects_list (statement)
 
void store_in_effects_list (statement, list)
 
void update_in_effects_list (statement, list)
 
list load_cumulated_in_effects_list (statement)
 
void store_cumulated_in_effects_list (statement, list)
 
void update_cummulated_in_effects_list (statement, list)
 
list load_invariant_in_effects_list (statement)
 
void store_invariant_in_effects_list (statement, list)
 
void update_invariant_in_effects_list (statement, list)
 
list load_out_effects_list (statement)
 
void store_out_effects_list (statement, list)
 
void update_out_effects_list (statement, list)
 
list load_live_in_paths_list (statement)
 
void store_live_in_paths_list (statement, list)
 
void update_live_in_paths_list (statement, list)
 
list load_live_out_paths_list (statement)
 
void store_live_out_paths_list (statement, list)
 
void update_live_out_paths_list (statement, list)
 
list load_live_out_regions_list (statement)
 
void store_live_out_regions_list (statement, list)
 
void update_live_out_regions_list (statement, list)
 
list load_statement_local_regions (statement)
 
void store_statement_local_regions (statement, list)
 
void update_statement_local_regions (statement, list)
 
list load_statement_inv_regions (statement)
 
void store_statement_inv_regions (statement, list)
 
void update_statement_inv_regions (statement, list)
 
list load_statement_proper_regions (statement)
 
void store_statement_proper_regions (statement, list)
 
list load_statement_in_regions (statement)
 
void store_statement_in_regions (statement, list)
 
list load_statement_inv_in_regions (statement)
 
void store_statement_inv_in_regions (statement, list)
 
void update_statement_inv_in_regions (statement, list)
 
list load_statement_cumulated_in_regions (statement)
 
void store_statement_cumulated_in_regions (statement, list)
 
list load_statement_out_regions (statement)
 
void store_statement_out_regions (statement, list)
 
void effects_map (list, void(*)(effect))
 unary_operators.c More...
 
list effects_to_effects_map (list, effect(*)(effect))
 
void effects_filter_map (list, bool(*)(effect), void(*)(effect))
 
list effects_to_effects_filter_map (list, bool(*)(effect), effect(*)(effect))
 
list effects_add_effect (list, effect)
 
list effects_read_effects (list)
 
list effects_store_effects (list)
 
list effects_write_effects (list)
 
bool effects_write_at_least_once_p (list)
 
list effects_read_effects_dup (list)
 
list effects_write_effects_dup (list)
 
effect effect_nop (effect)
 
list effects_nop (list)
 
void effect_to_may_effect (effect)
 
void effects_to_may_effects (list)
 
void effect_to_must_effect (effect)
 
void effects_to_must_effects (list)
 
void effect_to_write_effect (effect)
 
void effects_to_write_effects (list)
 
void effect_to_read_effect (effect)
 
void effects_to_read_effects (list)
 
void array_effects_to_may_effects (list)
 
list effects_dup_without_variables (list, list)
 
list effects_dup (list)
 
void effect_free (effect)
 
void effects_free (list)
 
list effect_to_nil_list (effect)
 
list effect_to_nil_list_and_free (effect)
 
list effects_to_nil_list (effect, effect)
 
list effect_to_list (effect)
 
list effect_to_may_effect_list (effect)
 
list effects_to_written_scalar_entities (list)
 
list effects_undefined_composition_with_transformer (list, transformer)
 
list effects_composition_with_transformer_nop (list, transformer)
 
list effects_undefined_composition_with_preconditions (list, transformer)
 
list effects_composition_with_preconditions_nop (list, transformer, bool)
 
descriptor loop_undefined_descriptor_make (loop)
 
list effects_undefined_union_over_range (list, entity, range, descriptor)
 
list effects_union_over_range_nop (list, entity, range, descriptor)
 
list effects_undefined_descriptors_variable_change (list, entity, entity)
 
list effects_descriptors_variable_change_nop (list, entity, entity)
 
descriptor effects_undefined_vector_to_descriptor (Pvecteur)
 
list effects_undefined_loop_normalize (list, entity, range, entity *, descriptor, bool)
 
list effects_loop_normalize_nop (list, entity, range, entity *, descriptor, bool)
 
list db_get_empty_list (string)
 
void effect_add_dereferencing_dimension (effect)
 
void effect_add_field_dimension (effect, entity)
 
list filter_effects_with_declaration (list, entity)
 
list effect_intermediary_pointer_paths_effect (effect)
 
list list_of_effects_generic_binary_op (list, list, bool(*)(effect, effect), list(*)(effect, effect, bool, bool, bool *, bool *, list(*)(effect, effect)), list(*)(effect, effect), list(*)(effect), list(*)(effect))
 binary_operators.c More...
 
list list_of_effects_generic_union_op (list, list, bool(*)(effect, effect), list(*)(effect, effect), list(*)(effect))
 
list list_of_effects_generic_intersection_op (list, list, bool(*)(effect, effect), list(*)(effect, effect))
 
list list_of_effects_generic_cells_intersection_op (list, list, bool(*)(effect, effect), list(*)(effect, effect))
 
list list_of_effects_generic_sup_difference_op (list, list, bool(*)(effect, effect), list(*)(effect, effect))
 
list list_of_effects_generic_inf_difference_op (list, list, bool(*)(effect, effect), list(*)(effect, effect))
 
list list_of_effects_generic_cells_inf_difference_op (list, list, bool(*)(effect, effect), list(*)(effect, effect))
 
list proper_to_summary_effects (list)
 
list proper_effects_contract (list)
 
list proper_effects_combine (list, bool)
 
bool effects_combinable_p (effect, effect)
 
bool cells_combinable_p (cell, cell)
 
bool effects_scalars_and_same_action_p (effect, effect)
 
bool effects_same_action_p (effect, effect)
 
bool effects_same_variable_p (effect, effect)
 
bool r_r_combinable_p (effect, effect)
 
bool w_w_combinable_p (effect, effect)
 
bool r_w_combinable_p (effect, effect)
 
bool w_r_combinable_p (effect, effect)
 
list effects_undefined_binary_operator (list, list, bool(*)(effect, effect))
 
list effects_entities_intersection (list, list, bool(*)(effect, effect))
 
list effects_entities_inf_difference (list, list, bool(*)(effect, effect))
 
void make_effects_private_current_stmt_stack (void)
 utils.c More...
 
void free_effects_private_current_stmt_stack (void)
 
stack get_effects_private_current_stmt_stack (void)
 
void set_effects_private_current_stmt_stack (stack)
 
void reset_effects_private_current_stmt_stack (void)
 
void effects_private_current_stmt_push (statement)
 
bool effects_private_current_stmt_filter (statement)
 
void effects_private_current_stmt_rewrite (statement)
 
statement effects_private_current_stmt_replace (statement)
 
statement effects_private_current_stmt_pop (void)
 
statement effects_private_current_stmt_head (void)
 
statement effects_private_current_stmt_nth (int)
 
bool effects_private_current_stmt_empty_p (void)
 
int effects_private_current_stmt_size (void)
 
void error_reset_effects_private_current_stmt_stack (void)
 
void make_effects_private_current_context_stack (void)
 
void free_effects_private_current_context_stack (void)
 
stack get_effects_private_current_context_stack (void)
 
void set_effects_private_current_context_stack (stack)
 
void reset_effects_private_current_context_stack (void)
 
void effects_private_current_context_push (transformer)
 
bool effects_private_current_context_filter (transformer)
 
void effects_private_current_context_rewrite (transformer)
 
transformer effects_private_current_context_replace (transformer)
 
transformer effects_private_current_context_pop (void)
 
transformer effects_private_current_context_head (void)
 
transformer effects_private_current_context_nth (int)
 
bool effects_private_current_context_empty_p (void)
 
int effects_private_current_context_size (void)
 
void error_reset_effects_private_current_context_stack (void)
 
bool effects_private_current_context_stack_initialized_p (void)
 
bool effects_private_current_stmt_stack_initialized_p (void)
 
bool normalizable_and_linear_loop_p (entity, range)
 
transformer transformer_remove_variable_and_dup (transformer, entity)
 
void set_descriptor_range_p (bool)
 
bool get_descriptor_range_p (void)
 
descriptor descriptor_inequality_add (descriptor, Pvecteur)
 
transformer descriptor_to_context (descriptor)
 
void descriptor_variable_rename (descriptor, entity, entity)
 
descriptor descriptor_append (descriptor, descriptor)
 
transformer load_undefined_context (statement)
 
transformer load_undefined_transformer (statement)
 
bool empty_context_test_false (transformer)
 
void effects_computation_no_init (const char *)
 
void effects_computation_no_reset (const char *)
 
string vect_debug_entity_name (entity)
 
bool some_integer_scalar_read_or_write_effects_p (cons *)
 
bool statement_io_effect_p (statement)
 
bool statement_has_a_formal_argument_write_effect_p (statement)
 
list make_effects_for_array_declarations (list)
 
list summary_effects_from_declaration (const char *)
 
void dump_cell (cell)
 
void dump_effect (effect)
 
void dump_effects (list)
 
bool effects_reference_sharing_p (list, bool)
 
effect make_some_anywhere_effect (action, entity)
 
effect make_anywhere_effect (action)
 
effect make_generic_anywhere_effect (action, reference)
 
effect make_typed_anywhere_effect (action, type)
 
effect make_anywhere_write_memory_effect (void)
 
effect make_anywhere_read_memory_effect (void)
 
list make_anywhere_read_write_memory_effects (void)
 
list clean_anywhere_effects (list)
 
effect make_null_pointer_value_effect (action)
 
bool null_pointer_value_effect_p (effect)
 
effect make_undefined_pointer_value_effect (action)
 
bool undefined_pointer_value_effect_p (effect)
 
list effect_to_effects_with_given_tag (effect, tag)
 
list generic_effect_generate_all_accessible_paths_effects_with_level (effect, type, tag, bool, int, bool)
 
list generic_effect_generate_all_accessible_paths_effects (effect, type, tag)
 
bool r_effect_pointer_type_p (effect, list, type)
 
bool effect_pointer_type_p (effect)
 
type simple_effect_reference_type (reference)
 
bool regions_weakly_consistent_p (list)
 
bool region_weakly_consistent_p (effect)
 
list statement_modified_pointers_effects_list (statement)
 
bool abstract_effect_in_effect_list_p (action, type, list)
 
list generic_effects_store_update (list, statement, bool)
 
list pointer_effects_to_constant_path_effects (list)
 
list effect_to_constant_path_effects_with_no_pointer_information (effect)
 
list effects_to_constant_path_effects_with_no_pointer_information (list)
 
bool find_write_effect_on_entity (statement, entity)
 
void set_pointer_info_kind (pointer_info_val)
 methods.c More...
 
pointer_info_val get_pointer_info_kind (void)
 
void set_constant_paths_p (bool)
 
bool get_constant_paths_p (void)
 
void generic_effects_reset_all_methods (void)
 
void set_action_interpretation (string, string)
 prettyprint.c More...
 
void reset_action_interpretation (void)
 
string action_interpretation (int tag)
 
void set_is_user_view_p (bool)
 
void set_prettyprint_with_attachments (bool)
 
void reset_generic_prettyprints (void)
 
void set_a_generic_prettyprint (string, bool, gen_chunk *, generic_text_function, generic_prettyprint_function, generic_attachment_function)
 
void add_a_generic_prettyprint (string, bool, generic_text_function, generic_prettyprint_function, generic_attachment_function)
 
bool print_source_or_code_effects_engine (const char *, string, bool)
 
text get_any_effect_type_text (const char *, string, string, bool)
 
bool print_source_or_code_with_any_effects_engine (const char *, string, string, string, bool)
 
void generic_print_effects (list)
 
list generic_proper_effects_of_intrinsic (entity, list)
 intrinsics.c More...
 
expression count_expression_to_range_expression (expression)
 
expression count_and_offset_expressions_to_range_expression (expression, expression)
 
void update_last_reference_subscript (reference, expression)
 
void add_range_information_to_cells (list, expression)
 
void effects_to_proper_approximation (list)
 
void add_precondition_information_to_effects (list)
 
list generic_fortran_effects_backward_translation (entity, list, list, transformer)
 interprocedural.c More...
 
list c_actual_argument_to_may_summary_effects (expression, tag)
 
list generic_c_effects_backward_translation (entity, list, list, transformer)
 
list generic_c_effects_forward_translation (entity, list, list, transformer)
 
list generic_effects_backward_translation (entity, list, list, transformer)
 
list generic_effects_forward_translation (entity, list, list, transformer)
 
void effects_translate_fields_compilation_unit (list, string, string)
 
int effects_statement_line_number (void)
 eval.c More...
 
list generic_reference_to_points_to_matching_list (reference, descriptor, size_t *, bool *, transformer, list, void(*)(reference, reference *, descriptor *), bool(*)(reference, descriptor, reference, descriptor, transformer, bool, bool *))
 This function has been outlined from generic_eval_cell_with_points_to() to reduce the size of a function to about one page. More...
 
list generic_eval_cell_with_points_to (cell, descriptor, list, bool *, transformer, bool(*)(reference, descriptor, reference, descriptor, transformer, bool, bool *), void(*)(reference, descriptor, reference, descriptor, int, reference *, descriptor *, bool *), void(*)(reference, reference *, descriptor *))
 
list generic_effect_find_equivalent_simple_pointer_values (effect, list, cell_relation *, list *, bool(*)(cell, descriptor, cell, descriptor, bool *), bool(*)(cell, descriptor, cell, descriptor, bool *), void(*)(cell, cell *, descriptor *))
 find pointer_values in l_in which give (possible or exact) paths equivalent to eff. More...
 
list generic_effect_find_aliases_with_simple_pointer_values (effect, list, bool *, transformer, bool(*)(cell, descriptor, cell, descriptor, transformer, bool, bool *), void(*)(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *), void(*)(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *), bool(*)(cell, descriptor, cell, descriptor, bool *), bool(*)(cell, descriptor, cell, descriptor, bool *), void(*)(cell, cell *, descriptor *))
 
bool live_in_summary_paths_engine (const char *)
 liveness_analysis_engine.c More...
 
bool live_out_summary_paths_engine (const char *)
 
bool live_paths_engine (const char *, effects_representation_val)
 
bool live_out_region_engine (const char *, effects_representation_val)
 
list effects_expression_to_points_to_sources (expression)
 points_to.c More...
 
list effects_expression_to_points_to_sinks (expression)
 
set safe_user_call_to_points_to_interprocedural_binding_set (entity, list)
 
void effect_backward_translation_error (entity, effect)
 
list backward_translation_of_points_to_formal_context_effect (entity, list, effect, set)
 
list effects_lhs_expression_to_sources (expression)
 Returns a list of cells corresponding to the possibles values, i.e. More...
 
list effects_lhs_expression_to_sinks (expression)
 Returns a list of cells corresponding to the value,i.e. More...
 
list cells_to_read_or_write_effects (list, bool)
 
list cells_to_write_effects (list)
 
list cells_to_read_effects (list)
 

Variables

bool(* effect_consistent_p_func )(effect)
 
void(* effects_computation_init_func )(const char *)
 
void(* effects_computation_reset_func )(const char *)
 
effect(* effect_dup_func )(effect eff)
 
void(* effect_free_func )(effect eff)
 
effect(* reference_to_effect_func )(reference, action, bool)
 
list(* effect_to_store_independent_effect_list_func )(effect, bool)
 
void(* effect_add_expression_dimension_func )(effect eff, expression exp)
 
void(* effect_change_ith_dimension_expression_func )(effect eff, expression exp, int i)
 
effect(* effect_union_op )(effect, effect)
 
list(* effects_union_op )(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
 
list(* effects_test_union_op )(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
 
list(* effects_intersection_op )(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
 
list(* effects_sup_difference_op )(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
 
list(* effects_inf_difference_op )(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
 
list(* effects_transformer_composition_op )(list, transformer)
 
list(* effects_transformer_inverse_composition_op )(list, transformer)
 
list(* effects_precondition_composition_op )(list, transformer, bool)
 
list(* eval_cell_with_points_to_func )(cell, descriptor, list, bool *, transformer)
 
list(* effect_to_constant_path_effects_func )(effect)
 
list(* effects_descriptors_variable_change_func )(list, entity, entity)
 
descriptor(* loop_descriptor_make_func )(loop)
 
void(* loop_range_in_effect_func )(loop, list *, list *, bool(*)(effect, effect), entity *, range)
 
list(* effects_loop_normalize_func )(list, entity, range, entity *, descriptor, bool)
 
list(* effects_union_over_range_op )(list, entity, range, descriptor)
 
descriptor(* vector_to_descriptor_func )(Pvecteur)
 
void(* effects_translation_init_func )(entity, list, bool)
 
void(* effects_translation_end_func )(void)
 
void(* effect_descriptor_interprocedural_translation_op )(effect)
 
list(* fortran_effects_backward_translation_op )(entity, list, list, transformer)
 
list(* fortran_effects_forward_translation_op )(entity, list, list, transformer)
 
list(* c_effects_on_formal_parameter_backward_translation_func )(list, expression, transformer)
 
list(* c_effects_on_actual_parameter_forward_translation_func )(entity, expression, entity, list, transformer)
 
list(* effects_local_to_global_translation_op )(list)
 
transformer(* load_context_func )(statement)
 
transformer(* load_transformer_func )(statement)
 
transformer(* load_completed_transformer_func )(statement)
 
bool(* empty_context_test )(transformer)
 
effect(* proper_to_summary_effect_func )(effect)
 
void(* effects_descriptor_normalize_func )(list)
 
statement_effects(* db_get_proper_rw_effects_func )(const char *)
 
void(* db_put_proper_rw_effects_func )(const char *, statement_effects)
 
statement_effects(* db_get_invariant_rw_effects_func )(const char *)
 
void(* db_put_invariant_rw_effects_func )(const char *, statement_effects)
 
statement_effects(* db_get_rw_effects_func )(const char *)
 
void(* db_put_rw_effects_func )(const char *, statement_effects)
 
list(* db_get_summary_rw_effects_func )(const char *)
 
void(* db_put_summary_rw_effects_func )(const char *, list)
 
statement_effects(* db_get_in_effects_func )(const char *)
 
void(* db_put_in_effects_func )(const char *, statement_effects)
 
statement_effects(* db_get_cumulated_in_effects_func )(const char *)
 
void(* db_put_cumulated_in_effects_func )(const char *, statement_effects)
 
statement_effects(* db_get_invariant_in_effects_func )(const char *)
 
void(* db_put_invariant_in_effects_func )(const char *, statement_effects)
 
list(* db_get_summary_in_effects_func )(const char *)
 
void(* db_put_summary_in_effects_func )(const char *, list)
 
list(* db_get_summary_out_effects_func )(const char *)
 
void(* db_put_summary_out_effects_func )(const char *, list)
 
statement_effects(* db_get_out_effects_func )(const char *)
 
void(* db_put_out_effects_func )(const char *, statement_effects)
 
statement_effects(* db_get_live_in_paths_func )(const char *)
 
void(* db_put_live_in_paths_func )(const char *, statement_effects)
 
statement_effects(* db_get_live_out_paths_func )(const char *)
 
void(* db_put_live_out_paths_func )(const char *, statement_effects)
 
list(* db_get_live_in_summary_paths_func )(const char *)
 
void(* db_put_live_in_summary_paths_func )(const char *, list)
 
list(* db_get_live_out_summary_paths_func )(const char *)
 
void(* db_put_live_out_summary_paths_func )(const char *, list)
 
entity_effects(* db_get_useful_variables_effects_func )(const char *)
 
void(* db_put_useful_variables_effects_func )(const char *, entity_effects)
 
void(* effects_prettyprint_func )(list)
 
void(* effect_prettyprint_func )(effect)
 
text(* effects_to_text_func )(list)
 
void(* attach_effects_decoration_to_text_func )(text)
 
bool(* cell_preceding_p_func )(cell, descriptor, cell, descriptor, bool, bool *)
 
bool(* stmt_strongly_feasible_p_func )(statement)
 

Macro Definition Documentation

◆ ACTION_COPYIN

#define ACTION_COPYIN   "COPYIN"

Definition at line 43 of file effects-generic.h.

◆ ACTION_COPYOUT

#define ACTION_COPYOUT   "COPYOUT"

Definition at line 44 of file effects-generic.h.

◆ ACTION_IN

#define ACTION_IN   "IN"

Definition at line 41 of file effects-generic.h.

◆ ACTION_LIVE_IN

#define ACTION_LIVE_IN   "ALIVE (IN)"

Definition at line 46 of file effects-generic.h.

◆ ACTION_LIVE_OUT

#define ACTION_LIVE_OUT   "ALIVE (OUT)"

Definition at line 47 of file effects-generic.h.

◆ ACTION_OUT

#define ACTION_OUT   "OUT"

Definition at line 42 of file effects-generic.h.

◆ ACTION_PRIVATE

#define ACTION_PRIVATE   "PRIVATE"

Definition at line 45 of file effects-generic.h.

◆ ACTION_READ

#define ACTION_READ   "R"

Definition at line 39 of file effects-generic.h.

◆ ACTION_UNDEFINED

#define ACTION_UNDEFINED   string_undefined

Warning! Do not modify this file that is automatically generated!

Modify src/Libs/effects-generic/effects-generic-local.h instead, to add your own modifications. header file built by cproto effects_generic-local.h some string constants for prettyprints...

Definition at line 38 of file effects-generic.h.

◆ ACTION_WRITE

#define ACTION_WRITE   "W"

Definition at line 40 of file effects-generic.h.

◆ DB_GET_EE

#define DB_GET_EE (   name,
  NAME 
)
Value:
static entity_effects db_get_##name(const char *module_name) \
{ \
return (entity_effects) \
db_get_memory_resource(DBR_##NAME, module_name, true); \
}
const char * module_name(const char *s)
Return the module part of an entity name.
Definition: entity_names.c:296
#define NAME
Definition: readmakefile.c:188

Definition at line 86 of file effects-generic.h.

◆ DB_GET_LS

#define DB_GET_LS (   name,
  NAME 
)
Value:
static list db_get_##name(const char *module_name) \
{ \
return effects_to_list( \
}
list effects_to_list(effects)
Definition: effects.c:209
string db_get_memory_resource(const char *rname, const char *oname, bool pure)
Return the pointer to the resource, whatever it is.
Definition: database.c:755
The structure used to build lists in NewGen.
Definition: newgen_list.h:41

Definition at line 79 of file effects-generic.h.

◆ DB_GET_SE

#define DB_GET_SE (   name,
  NAME 
)
Value:
static statement_effects db_get_##name(const char *module_name) \
{ \
return (statement_effects) \
db_get_memory_resource(DBR_##NAME, module_name, true); \
}

for db_* functions

Definition at line 72 of file effects-generic.h.

◆ DB_GETNOPUT_EE

#define DB_GETNOPUT_EE (   name,
  NAME 
)    DB_GET_EE(name, NAME) DB_NOPUT_EE(name)

Definition at line 137 of file effects-generic.h.

◆ DB_GETNOPUT_LS

#define DB_GETNOPUT_LS (   name,
  NAME 
)    DB_GET_LS(name, NAME) DB_NOPUT_LS(name)

Definition at line 135 of file effects-generic.h.

◆ DB_GETNOPUT_SE

#define DB_GETNOPUT_SE (   name,
  NAME 
)    DB_GET_SE(name, NAME) DB_NOPUT_SE(name)

Definition at line 133 of file effects-generic.h.

◆ DB_GETPUT_EE

#define DB_GETPUT_EE (   name,
  NAME 
)    DB_GET_EE(name, NAME) DB_PUT_EE(name, NAME)

Definition at line 136 of file effects-generic.h.

◆ DB_GETPUT_LS

#define DB_GETPUT_LS (   name,
  NAME 
)    DB_GET_LS(name, NAME) DB_PUT_LS(name, NAME)

Definition at line 134 of file effects-generic.h.

◆ DB_GETPUT_SE

#define DB_GETPUT_SE (   name,
  NAME 
)    DB_GET_SE(name, NAME) DB_PUT_SE(name, NAME)

Definition at line 132 of file effects-generic.h.

◆ DB_NOPUT_EE

#define DB_NOPUT_EE (   name)
Value:
static void db_put_##name(_UNUSED_ const char *m, entity_effects ee) \
{ \
free_entity_effects(se); \
}
#define _UNUSED_
Definition: misc-local.h:232

Definition at line 126 of file effects-generic.h.

◆ DB_NOPUT_LS

#define DB_NOPUT_LS (   name)
Value:
static void db_put_##name(_UNUSED_ const char *m, list l) \
{ \
gen_full_free_list(l); \
}

Definition at line 120 of file effects-generic.h.

◆ DB_NOPUT_SE

#define DB_NOPUT_SE (   name)
Value:
static void db_put_##name(_UNUSED_ const char *m, statement_effects se) \
{ \
free_statement_effects(se); \
}

Definition at line 114 of file effects-generic.h.

◆ DB_PUT_EE

#define DB_PUT_EE (   name,
  NAME 
)
Value:
static void db_put_##name( \
const char *module_name, entity_effects ee) \
{ \
DB_PUT_MEMORY_RESOURCE(DBR_##NAME, module_name, (void*) ee); \
}

Definition at line 107 of file effects-generic.h.

◆ DB_PUT_LS

#define DB_PUT_LS (   name,
  NAME 
)
Value:
static void db_put_##name(const char *module_name, list l) \
{ \
DB_PUT_MEMORY_RESOURCE(DBR_##NAME, module_name, \
(void*) list_to_effects(l)); \
}
effects list_to_effects(list)
Future API for GAP, Generic Access Path.
Definition: effects.c:202

Definition at line 100 of file effects-generic.h.

◆ DB_PUT_SE

#define DB_PUT_SE (   name,
  NAME 
)
Value:
static void db_put_##name( \
const char *module_name, statement_effects se) \
{ \
DB_PUT_MEMORY_RESOURCE(DBR_##NAME, module_name, (void*) se); \
}

Definition at line 93 of file effects-generic.h.

◆ pips_debug_effect

#define pips_debug_effect (   level,
  message,
  eff 
)
Value:
(*effect_consistent_p_func)(eff); \
(*effect_prettyprint_func)(eff);}
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
Definition: misc-local.h:145
#define level
#define ifdebug(n)
Definition: sg.c:47

for debug

Definition at line 54 of file effects-generic.h.

◆ pips_debug_effects

#define pips_debug_effects (   level,
  message,
  l_eff 
)
Value:
generic_print_effects(l_eff);}

Definition at line 59 of file effects-generic.h.

Typedef Documentation

◆ generic_attachment_function

typedef void(* generic_attachment_function) (text)

Definition at line 68 of file effects-generic.h.

◆ generic_prettyprint_function

typedef void(* generic_prettyprint_function) (list)

Definition at line 67 of file effects-generic.h.

◆ generic_text_function

typedef text(* generic_text_function) (list)

prettyprint function types:

hum...

Definition at line 66 of file effects-generic.h.

Enumeration Type Documentation

◆ effects_representation_val

Enumerator
simple 
convex 
simple 
convex 

Definition at line 142 of file effects-generic.h.

effects_representation_val
@ convex
@ simple

◆ pointer_info_val

Enumerator
with_no_pointer_info 
with_points_to 
with_pointer_values 
with_no_pointer_info 
with_points_to 
with_pointer_values 

Definition at line 139 of file effects-generic.h.

@ with_points_to
@ with_no_pointer_info
@ with_pointer_values

Function Documentation

◆ abstract_effect_in_effect_list_p()

bool abstract_effect_in_effect_list_p ( action  ,
type  ,
list   
)

◆ action_interpretation()

string action_interpretation ( int  tag)

◆ add_a_generic_prettyprint()

void add_a_generic_prettyprint ( string  ,
bool  ,
generic_text_function  ,
generic_prettyprint_function  ,
generic_attachment_function   
)

◆ add_precondition_information_to_effects()

void add_precondition_information_to_effects ( list  )

Referenced by cells_to_read_or_write_effects().

+ Here is the caller graph for this function:

◆ add_range_information_to_cells()

void add_range_information_to_cells ( list  ,
expression   
)

◆ array_effects_to_may_effects()

void array_effects_to_may_effects ( list  )

◆ backward_translation_of_points_to_formal_context_effect()

list backward_translation_of_points_to_formal_context_effect ( entity  ,
list  ,
effect  ,
set   
)

◆ bound_cumulated_in_effects_p()

bool bound_cumulated_in_effects_p ( statement  )

◆ bound_cumulated_references_p()

bool bound_cumulated_references_p ( statement  )

◆ bound_cumulated_rw_effects_p()

bool bound_cumulated_rw_effects_p ( statement  )

◆ bound_expr_prw_effects_p()

bool bound_expr_prw_effects_p ( expression  )

Referenced by expr_level_of().

+ Here is the caller graph for this function:

◆ bound_in_effects_p()

bool bound_in_effects_p ( statement  )

◆ bound_invariant_in_effects_p()

bool bound_invariant_in_effects_p ( statement  )

◆ bound_invariant_rw_effects_p()

bool bound_invariant_rw_effects_p ( statement  )

◆ bound_invariant_rw_pointer_effects_p()

bool bound_invariant_rw_pointer_effects_p ( statement  )

◆ bound_live_in_paths_p()

bool bound_live_in_paths_p ( statement  )

◆ bound_live_out_paths_p()

bool bound_live_out_paths_p ( statement  )

Referenced by live_out_paths_from_unstructured_to_nodes().

+ Here is the caller graph for this function:

◆ bound_live_out_regions_p()

bool bound_live_out_regions_p ( statement  )

◆ bound_out_effects_p()

bool bound_out_effects_p ( statement  )

◆ bound_proper_references_p()

bool bound_proper_references_p ( statement  )

◆ bound_proper_rw_effects_p()

bool bound_proper_rw_effects_p ( statement  )

Referenced by simple_switch_old_to_new().

+ Here is the caller graph for this function:

◆ bound_proper_rw_pointer_effects_p()

bool bound_proper_rw_pointer_effects_p ( statement  )

◆ bound_rw_effects_p()

bool bound_rw_effects_p ( statement  )

◆ bound_rw_pointer_effects_p()

bool bound_rw_pointer_effects_p ( statement  )

◆ bound_useful_variables_effects_p()

bool bound_useful_variables_effects_p ( entity  )

◆ c_actual_argument_to_may_summary_effects()

list c_actual_argument_to_may_summary_effects ( expression  ,
tag   
)

◆ cells_combinable_p()

bool cells_combinable_p ( cell  ,
cell   
)

◆ cells_to_read_effects()

list cells_to_read_effects ( list  cl)
Parameters
cll

Definition at line 467 of file points_to.c.

468 {
469  return cells_to_read_or_write_effects(cl, false);
470 }
list cells_to_read_or_write_effects(list cl, bool write_p)
Definition: points_to.c:377

References cells_to_read_or_write_effects().

+ Here is the call graph for this function:

◆ cells_to_read_or_write_effects()

list cells_to_read_or_write_effects ( list  cl,
bool  write_p 
)
Parameters
cll
write_prite_p

Definition at line 377 of file points_to.c.

378 {
379  // (*reference_to_effect_func)
380  list wel = NIL;
381  size_t n = gen_length(cl);
382  size_t u = 0; // number of useless cells
383  FOREACH(CELL, c, cl) {
385  if(nowhere_cell_p(c)) {
386  if(n==1 || n==1+u) {
387  // Would it be better to move on with a simple warning?
388  pips_user_error("Dereferencing of an undefined pointer.\n");
389  }
390  else {
391  ; // ignore
392  }
393  u++;
394  }
395  else if(null_cell_p(c)) {
396  if(n==1 || n==1+u)
397  pips_user_error("Dereferencing of a null pointer.\n");
398  else {
399  ; // ignore
400  }
401  u++;
402  }
403  else {
405  //descriptor d = make_descriptor_none();
406  if(cell_abstract_location_p(c)) {
407  // This may always capture heap locations, although they may
408  // sometimes be concrete
409  // approximation ap = make_approximation_may();
411  e = (*reference_to_effect_func)(r, a, false); // , ap, d);
412  }
413  else {
415  e = (*reference_to_effect_func)(r, a, false); // , ap, d);
416  if(n==1 || n==1+u) {
417  // approximation ap = make_approximation_exact();
418  // e = make_effect(c, a, ap, d);
419  ;
420  }
421  else {
422  // FI: it could be exact with n>1 if alternatives are null
423  // and undefined
424  //approximation ap = make_approximation_may();
425  // e = make_effect(c, a, ap, d);
426  ;
427  }
428  }
429  // Adjust type, which implies a may approximation
431  int msn = type_depth(t);
432  if(msn>0) {
439  }
440  entity re = reference_variable(r);
442  // FI: we hope that heap entities are not included here
443  pips_assert("Not a heap abstraction", !entity_heap_location_p(re));
446  reference_variable(r) = nre;
448  reference_indices(r) = NIL;
449  }
450  }
451  }
452  if(!effect_undefined_p(e))
453  wel = gen_nconc(wel, CONS(EFFECT, e, wel));
454  }
455 
458 
459  return wel;
460 }
approximation make_approximation_may(void)
Definition: effects.c:179
void free_approximation(approximation p)
Definition: effects.c:135
bool entity_heap_location_p(entity b)
package abstract location.
entity entity_typed_anywhere_locations(type t)
bool entity_typed_anywhere_locations_p(entity e)
Test if an entity is the bottom of the lattice.
void add_precondition_information_to_effects(list)
void effects_to_proper_approximation(list)
type points_to_reference_to_concrete_type(reference)
Definition: type.c:685
reference cell_any_reference(cell)
API for reference.
Definition: effects.c:77
action make_action_write_memory(void)
To ease the extension of action with action_kind.
Definition: effects.c:1011
type points_to_cell_to_concrete_type(cell)
Definition: type.c:676
bool nowhere_cell_p(cell)
Target of an undefined pointer.
Definition: effects.c:455
action make_action_read_memory(void)
Definition: effects.c:1017
bool cell_abstract_location_p(cell)
Definition: effects.c:273
bool null_cell_p(cell)
Definition: effects.c:466
#define effect_undefined_p(x)
Definition: effects.h:615
#define approximation_exact_p(x)
Definition: effects.h:369
#define effect_undefined
Definition: effects.h:614
#define CELL(x)
CELL.
Definition: effects.h:424
#define effect_approximation(x)
Definition: effects.h:644
#define EFFECT(x)
EFFECT.
Definition: effects.h:608
void gen_full_free_list(list l)
Definition: genClib.c:1023
#define NIL
The empty list (nil in Lisp)
Definition: newgen_list.h:47
size_t gen_length(const list l)
Definition: list.c:150
#define CONS(_t_, _i_, _l_)
List element cell constructor (insert an element at the beginning of a list)
Definition: newgen_list.h:150
list gen_nconc(list cp1, list cp2)
physically concatenates CP1 and CP2 but do not duplicates the elements
Definition: list.c:344
#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
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
Definition: misc-local.h:172
#define pips_user_error
Definition: misc-local.h:147
list make_unbounded_subscripts(int d)
FI: this piece of code must have been duplicated somewhere else in an effect library.
Definition: expression.c:4346
size_t type_depth(type)
Number of steps to access the lowest leave of type t without dereferencing.
Definition: type.c:4880
#define reference_variable(x)
Definition: ri.h:2326
#define reference_indices(x)
Definition: ri.h:2328

References add_precondition_information_to_effects(), approximation_exact_p, CELL, cell_abstract_location_p(), cell_any_reference(), CONS, EFFECT, effect_approximation, effect_undefined, effect_undefined_p, effects_to_proper_approximation(), entity_heap_location_p(), entity_typed_anywhere_locations(), entity_typed_anywhere_locations_p(), FOREACH, free_approximation(), gen_full_free_list(), gen_length(), gen_nconc(), make_action_read_memory(), make_action_write_memory(), make_approximation_may(), make_unbounded_subscripts(), NIL, nowhere_cell_p(), null_cell_p(), pips_assert, pips_user_error, points_to_cell_to_concrete_type(), points_to_reference_to_concrete_type(), reference_indices, reference_variable, and type_depth().

Referenced by cells_to_read_effects(), and cells_to_write_effects().

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

◆ cells_to_write_effects()

list cells_to_write_effects ( list  cl)
Parameters
cll

Definition at line 462 of file points_to.c.

463 {
464  return cells_to_read_or_write_effects(cl, true);
465 }

References cells_to_read_or_write_effects().

+ Here is the call graph for this function:

◆ check_sdfi_effects_p()

bool check_sdfi_effects_p ( entity  ,
list   
)

◆ clean_anywhere_effects()

list clean_anywhere_effects ( list  )

◆ close_cumulated_in_effects()

void close_cumulated_in_effects ( void  )

◆ close_cumulated_references()

void close_cumulated_references ( void  )

◆ close_cumulated_rw_effects()

void close_cumulated_rw_effects ( void  )

◆ close_expr_prw_effects()

void close_expr_prw_effects ( void  )

Referenced by perform_icm_association().

+ Here is the caller graph for this function:

◆ close_in_effects()

void close_in_effects ( void  )

◆ close_invariant_in_effects()

void close_invariant_in_effects ( void  )

◆ close_invariant_rw_effects()

void close_invariant_rw_effects ( void  )

◆ close_invariant_rw_pointer_effects()

void close_invariant_rw_pointer_effects ( void  )

◆ close_live_in_paths()

void close_live_in_paths ( void  )

◆ close_live_out_paths()

void close_live_out_paths ( void  )

◆ close_live_out_regions()

void close_live_out_regions ( void  )

◆ close_out_effects()

void close_out_effects ( void  )

◆ close_proper_references()

void close_proper_references ( void  )

◆ close_proper_rw_effects()

void close_proper_rw_effects ( void  )

Referenced by perform_icm_association().

+ Here is the caller graph for this function:

◆ close_proper_rw_pointer_effects()

void close_proper_rw_pointer_effects ( void  )

◆ close_rw_effects()

void close_rw_effects ( void  )

◆ close_rw_pointer_effects()

void close_rw_pointer_effects ( void  )

◆ close_useful_variables_effects()

void close_useful_variables_effects ( void  )

◆ count_and_offset_expressions_to_range_expression()

expression count_and_offset_expressions_to_range_expression ( expression  ,
expression   
)

◆ count_expression_to_range_expression()

expression count_expression_to_range_expression ( expression  )

◆ cumulated_in_effects_undefined_p()

bool cumulated_in_effects_undefined_p ( void  )

◆ cumulated_references_undefined_p()

bool cumulated_references_undefined_p ( void  )

◆ cumulated_rw_effects_undefined_p()

bool cumulated_rw_effects_undefined_p ( void  )

◆ db_get_empty_list()

list db_get_empty_list ( string  )

◆ delete_cumulated_in_effects()

effects delete_cumulated_in_effects ( statement  )

◆ delete_cumulated_references()

effects delete_cumulated_references ( statement  )

◆ delete_cumulated_rw_effects()

effects delete_cumulated_rw_effects ( statement  )

Referenced by freia_shuffle_move_forward().

+ Here is the caller graph for this function:

◆ delete_expr_prw_effects()

effects delete_expr_prw_effects ( expression  )

◆ delete_in_effects()

effects delete_in_effects ( statement  )

◆ delete_invariant_in_effects()

effects delete_invariant_in_effects ( statement  )

◆ delete_invariant_rw_effects()

effects delete_invariant_rw_effects ( statement  )

◆ delete_invariant_rw_pointer_effects()

effects delete_invariant_rw_pointer_effects ( statement  )

◆ delete_live_in_paths()

effects delete_live_in_paths ( statement  )

◆ delete_live_out_paths()

effects delete_live_out_paths ( statement  )

◆ delete_live_out_regions()

effects delete_live_out_regions ( statement  )

◆ delete_out_effects()

effects delete_out_effects ( statement  )

◆ delete_proper_references()

effects delete_proper_references ( statement  )

◆ delete_proper_rw_effects()

effects delete_proper_rw_effects ( statement  )

◆ delete_proper_rw_pointer_effects()

effects delete_proper_rw_pointer_effects ( statement  )

◆ delete_rw_effects()

effects delete_rw_effects ( statement  )

◆ delete_rw_pointer_effects()

effects delete_rw_pointer_effects ( statement  )

◆ delete_useful_variables_effects()

effects delete_useful_variables_effects ( entity  )

◆ descriptor_append()

descriptor descriptor_append ( descriptor  ,
descriptor   
)

◆ descriptor_inequality_add()

descriptor descriptor_inequality_add ( descriptor  ,
Pvecteur   
)

Referenced by convex_in_effect_loop_range_fix().

+ Here is the caller graph for this function:

◆ descriptor_to_context()

transformer descriptor_to_context ( descriptor  )

◆ descriptor_variable_rename()

void descriptor_variable_rename ( descriptor  ,
entity  ,
entity   
)

◆ dump_cell()

void dump_cell ( cell  )

◆ dump_effect()

void dump_effect ( effect  )

◆ dump_effects()

void dump_effects ( list  )

◆ effect_add_dereferencing_dimension()

void effect_add_dereferencing_dimension ( effect  )

Referenced by call_to_post_pv(), dereferencing_to_post_pv(), heap_intrinsic_to_post_pv(), and point_to_to_post_pv().

+ Here is the caller graph for this function:

◆ effect_add_field_dimension()

void effect_add_field_dimension ( effect  ,
entity   
)

Referenced by field_to_post_pv(), point_to_to_post_pv(), and simple_reference_to_convex_reference_conversion().

+ Here is the caller graph for this function:

◆ effect_backward_translation_error()

void effect_backward_translation_error ( entity  ,
effect   
)

◆ effect_free()

void effect_free ( effect  )

◆ effect_intermediary_pointer_paths_effect()

list effect_intermediary_pointer_paths_effect ( effect  )

Referenced by generic_effect_find_aliases_with_simple_pointer_values().

+ Here is the caller graph for this function:

◆ effect_nop()

effect effect_nop ( effect  )

Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().

+ Here is the caller graph for this function:

◆ effect_pointer_type_p()

bool effect_pointer_type_p ( effect  )

Referenced by generic_written_pointers_set().

+ Here is the caller graph for this function:

◆ effect_to_constant_path_effects_with_no_pointer_information()

list effect_to_constant_path_effects_with_no_pointer_information ( effect  )

◆ effect_to_effects_with_given_tag()

list effect_to_effects_with_given_tag ( effect  ,
tag   
)

◆ effect_to_list()

list effect_to_list ( effect  )

Referenced by effect_sup_difference(), generic_effect_find_aliases_with_simple_pointer_values(), and ProperEffectsMustUnion().

+ Here is the caller graph for this function:

◆ effect_to_may_effect()

void effect_to_may_effect ( effect  )

◆ effect_to_may_effect_list()

list effect_to_may_effect_list ( effect  )

Referenced by effect_sup_difference().

+ Here is the caller graph for this function:

◆ effect_to_must_effect()

void effect_to_must_effect ( effect  )

◆ effect_to_nil_list()

list effect_to_nil_list ( effect  )

◆ effect_to_nil_list_and_free()

list effect_to_nil_list_and_free ( effect  )

◆ effect_to_read_effect()

void effect_to_read_effect ( effect  )

◆ effect_to_write_effect()

void effect_to_write_effect ( effect  )

◆ effects_add_effect()

list effects_add_effect ( list  ,
effect   
)

◆ effects_combinable_p()

bool effects_combinable_p ( effect  ,
effect   
)

◆ effects_composition_with_preconditions_nop()

list effects_composition_with_preconditions_nop ( list  ,
transformer  ,
bool   
)

◆ effects_composition_with_transformer_nop()

list effects_composition_with_transformer_nop ( list  ,
transformer   
)

◆ effects_computation_no_init()

void effects_computation_no_init ( const char *  )

◆ effects_computation_no_reset()

void effects_computation_no_reset ( const char *  )

◆ effects_descriptors_variable_change_nop()

list effects_descriptors_variable_change_nop ( list  ,
entity  ,
entity   
)

◆ effects_dup()

◆ effects_dup_without_variables()

list effects_dup_without_variables ( list  ,
list   
)

Referenced by live_in_paths_of_loop(), and live_out_paths_from_loop_to_body().

+ Here is the caller graph for this function:

◆ effects_entities_inf_difference()

list effects_entities_inf_difference ( list  ,
list  ,
bool(*)(effect, effect  
)

◆ effects_entities_intersection()

list effects_entities_intersection ( list  ,
list  ,
bool(*)(effect, effect  
)

Referenced by convex_in_effect_loop_range_fix().

+ Here is the caller graph for this function:

◆ effects_expression_to_points_to_sinks()

list effects_expression_to_points_to_sinks ( expression  )

Referenced by effects_lhs_expression_to_sinks().

+ Here is the caller graph for this function:

◆ effects_expression_to_points_to_sources()

list effects_expression_to_points_to_sources ( expression  )

points_to.c

Referenced by effects_lhs_expression_to_sources().

+ Here is the caller graph for this function:

◆ effects_filter_map()

void effects_filter_map ( list  ,
bool(*)(effect ,
void(*)(effect  
)

◆ effects_free()

void effects_free ( list  )

Referenced by derived_formal_parameter_to_stub_points_to(), and typedef_formal_parameter_to_stub_points_to().

+ Here is the caller graph for this function:

◆ effects_lhs_expression_to_sinks()

list effects_lhs_expression_to_sinks ( expression  e)

Returns a list of cells corresponding to the value,i.e.

abstract or concrete locations, denoted by lhs expression e.

If "p" is a pointer, expression "p" has "p" as a source, and the sources of "*p" as sinks.

This should work whether the points-to library is available or not, but it is not yet the case

The prefix effects_ is used to have a local copy in the effects-generic library.

We expect here a test about points-to availability and a work around if the points-to library is not linked.

Definition at line 369 of file points_to.c.

370 {
371  /* We expect here a test about points-to availability and a work
372  * around if the points-to library is not linked.
373  */
375 }
list effects_expression_to_points_to_sinks(expression)

References effects_expression_to_points_to_sinks().

+ Here is the call graph for this function:

◆ effects_lhs_expression_to_sources()

list effects_lhs_expression_to_sources ( expression  e)

Returns a list of cells corresponding to the possibles values, i.e.

abstract or concrete locations, denoted by lhs expression e.

This should work whether the points-to library is available or not, but it is not yet the case.

The prefix effects_ is used to have a local copy in the effects-generic library.

We expect here a test about points-to availability and a work around if the points-to library is not linked.

Definition at line 349 of file points_to.c.

350 {
351  /* We expect here a test about points-to availability and a work
352  * around if the points-to library is not linked.
353  */
355 }
list effects_expression_to_points_to_sources(expression)
points_to.c

References effects_expression_to_points_to_sources().

+ Here is the call graph for this function:

◆ effects_loop_normalize_nop()

list effects_loop_normalize_nop ( list  ,
entity  ,
range  ,
entity ,
descriptor  ,
bool   
)

◆ effects_map()

void effects_map ( list  ,
void(*)(effect  
)

unary_operators.c

◆ effects_nop()

list effects_nop ( list  )

◆ effects_private_current_context_empty_p()

bool effects_private_current_context_empty_p ( void  )

◆ effects_private_current_context_filter()

bool effects_private_current_context_filter ( transformer  )

◆ effects_private_current_context_head()

transformer effects_private_current_context_head ( void  )

◆ effects_private_current_context_nth()

transformer effects_private_current_context_nth ( int  )

◆ effects_private_current_context_pop()

transformer effects_private_current_context_pop ( void  )

◆ effects_private_current_context_push()

void effects_private_current_context_push ( transformer  )

◆ effects_private_current_context_replace()

transformer effects_private_current_context_replace ( transformer  )

◆ effects_private_current_context_rewrite()

void effects_private_current_context_rewrite ( transformer  )

◆ effects_private_current_context_size()

int effects_private_current_context_size ( void  )

◆ effects_private_current_context_stack_initialized_p()

bool effects_private_current_context_stack_initialized_p ( void  )

◆ effects_private_current_stmt_empty_p()

bool effects_private_current_stmt_empty_p ( void  )

◆ effects_private_current_stmt_filter()

bool effects_private_current_stmt_filter ( statement  )

◆ effects_private_current_stmt_head()

◆ effects_private_current_stmt_nth()

statement effects_private_current_stmt_nth ( int  )

◆ effects_private_current_stmt_pop()

statement effects_private_current_stmt_pop ( void  )

◆ effects_private_current_stmt_push()

void effects_private_current_stmt_push ( statement  )

◆ effects_private_current_stmt_replace()

statement effects_private_current_stmt_replace ( statement  )

◆ effects_private_current_stmt_rewrite()

void effects_private_current_stmt_rewrite ( statement  )

◆ effects_private_current_stmt_size()

int effects_private_current_stmt_size ( void  )

◆ effects_private_current_stmt_stack_initialized_p()

bool effects_private_current_stmt_stack_initialized_p ( void  )

◆ effects_read_effects()

list effects_read_effects ( list  )

Referenced by conflict_is_a_real_conflict_p(), and statement_with_side_effect_p().

+ Here is the caller graph for this function:

◆ effects_read_effects_dup()

◆ effects_reference_sharing_p()

bool effects_reference_sharing_p ( list  ,
bool   
)

◆ effects_same_action_p()

◆ effects_same_variable_p()

bool effects_same_variable_p ( effect  ,
effect   
)

◆ effects_scalars_and_same_action_p()

bool effects_scalars_and_same_action_p ( effect  ,
effect   
)

◆ effects_statement_line_number()

int effects_statement_line_number ( void  )

eval.c

eval.c

Definition at line 208 of file eval.c.

209 {
211  return statement_number(s);
212 }
statement effects_private_current_stmt_head(void)
#define statement_number(x)
Definition: ri.h:2452

References effects_private_current_stmt_head(), and statement_number.

Referenced by generic_reference_to_points_to_matching_list().

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

◆ effects_store_effects()

list effects_store_effects ( list  )

Referenced by convert_in_effects(), convert_rw_effects(), and effects_to_dma().

+ Here is the caller graph for this function:

◆ effects_to_constant_path_effects_with_no_pointer_information()

list effects_to_constant_path_effects_with_no_pointer_information ( list  )

Referenced by c_user_call_to_transformer().

+ Here is the caller graph for this function:

◆ effects_to_effects_filter_map()

list effects_to_effects_filter_map ( list  ,
bool(*)(effect ,
effect(*)(effect  
)

◆ effects_to_effects_map()

list effects_to_effects_map ( list  ,
effect(*)(effect  
)

◆ effects_to_may_effects()

◆ effects_to_must_effects()

void effects_to_must_effects ( list  )

Referenced by multiple_pointer_assignment_to_post_pv().

+ Here is the caller graph for this function:

◆ effects_to_nil_list()

list effects_to_nil_list ( effect  ,
effect   
)

◆ effects_to_proper_approximation()

void effects_to_proper_approximation ( list  )

Referenced by cells_to_read_or_write_effects().

+ Here is the caller graph for this function:

◆ effects_to_read_effects()

void effects_to_read_effects ( list  )

◆ effects_to_write_effects()

void effects_to_write_effects ( list  )

◆ effects_to_written_scalar_entities()

list effects_to_written_scalar_entities ( list  )

◆ effects_translate_fields_compilation_unit()

void effects_translate_fields_compilation_unit ( list  ,
string  ,
string   
)

◆ effects_undefined_binary_operator()

list effects_undefined_binary_operator ( list  ,
list  ,
bool(*)(effect, effect  
)

◆ effects_undefined_composition_with_preconditions()

list effects_undefined_composition_with_preconditions ( list  ,
transformer   
)

◆ effects_undefined_composition_with_transformer()

list effects_undefined_composition_with_transformer ( list  ,
transformer   
)

◆ effects_undefined_descriptors_variable_change()

list effects_undefined_descriptors_variable_change ( list  ,
entity  ,
entity   
)

◆ effects_undefined_loop_normalize()

list effects_undefined_loop_normalize ( list  ,
entity  ,
range  ,
entity ,
descriptor  ,
bool   
)

◆ effects_undefined_union_over_range()

list effects_undefined_union_over_range ( list  ,
entity  ,
range  ,
descriptor   
)

◆ effects_undefined_vector_to_descriptor()

descriptor effects_undefined_vector_to_descriptor ( Pvecteur  )

◆ effects_union_over_range_nop()

list effects_union_over_range_nop ( list  ,
entity  ,
range  ,
descriptor   
)

◆ effects_write_at_least_once_p()

bool effects_write_at_least_once_p ( list  )

Referenced by fortran_user_call_to_transformer(), and simd_supported_stat_p().

+ Here is the caller graph for this function:

◆ effects_write_effects()

◆ effects_write_effects_dup()

◆ empty_context_test_false()

bool empty_context_test_false ( transformer  )

◆ error_reset_cumulated_in_effects()

void error_reset_cumulated_in_effects ( void  )

◆ error_reset_cumulated_references()

void error_reset_cumulated_references ( void  )

◆ error_reset_cumulated_rw_effects()

void error_reset_cumulated_rw_effects ( void  )

Referenced by reset_static_phase_variables().

+ Here is the caller graph for this function:

◆ error_reset_effects_private_current_context_stack()

void error_reset_effects_private_current_context_stack ( void  )

◆ error_reset_effects_private_current_stmt_stack()

void error_reset_effects_private_current_stmt_stack ( void  )

◆ error_reset_expr_prw_effects()

void error_reset_expr_prw_effects ( void  )

◆ error_reset_in_effects()

void error_reset_in_effects ( void  )

◆ error_reset_invariant_in_effects()

void error_reset_invariant_in_effects ( void  )

◆ error_reset_invariant_rw_effects()

void error_reset_invariant_rw_effects ( void  )

Referenced by reset_static_phase_variables().

+ Here is the caller graph for this function:

◆ error_reset_invariant_rw_pointer_effects()

void error_reset_invariant_rw_pointer_effects ( void  )

◆ error_reset_live_in_paths()

void error_reset_live_in_paths ( void  )

◆ error_reset_live_out_paths()

void error_reset_live_out_paths ( void  )

◆ error_reset_live_out_regions()

void error_reset_live_out_regions ( void  )

◆ error_reset_out_effects()

void error_reset_out_effects ( void  )

◆ error_reset_proper_references()

void error_reset_proper_references ( void  )

◆ error_reset_proper_rw_effects()

void error_reset_proper_rw_effects ( void  )

Referenced by reset_static_phase_variables().

+ Here is the caller graph for this function:

◆ error_reset_proper_rw_pointer_effects()

void error_reset_proper_rw_pointer_effects ( void  )

◆ error_reset_rw_effects()

void error_reset_rw_effects ( void  )

Referenced by reset_static_phase_variables().

+ Here is the caller graph for this function:

◆ error_reset_rw_pointer_effects()

void error_reset_rw_pointer_effects ( void  )

◆ error_reset_useful_variables_effects()

void error_reset_useful_variables_effects ( void  )

◆ expr_prw_effects_undefined_p()

bool expr_prw_effects_undefined_p ( void  )

◆ expression_proper_effects_engine()

void expression_proper_effects_engine ( const char *  ,
statement   
)

◆ filter_effects_with_declaration()

list filter_effects_with_declaration ( list  ,
entity   
)

Referenced by live_in_paths_of_statement().

+ Here is the caller graph for this function:

◆ find_write_effect_on_entity()

bool find_write_effect_on_entity ( statement  ,
entity   
)

Referenced by get_variables_to_remove(), inline_expression_call(), and outliner_patch_parameters().

+ Here is the caller graph for this function:

◆ free_effects_private_current_context_stack()

void free_effects_private_current_context_stack ( void  )

Referenced by live_out_summary_paths_engine(), live_paths_engine(), and step_translate_and_map().

+ Here is the caller graph for this function:

◆ free_effects_private_current_stmt_stack()

void free_effects_private_current_stmt_stack ( void  )

◆ generic_c_effects_backward_translation()

list generic_c_effects_backward_translation ( entity  ,
list  ,
list  ,
transformer   
)

◆ generic_c_effects_forward_translation()

list generic_c_effects_forward_translation ( entity  ,
list  ,
list  ,
transformer   
)

Referenced by convex_regions_forward_translation().

+ Here is the caller graph for this function:

◆ generic_effect_find_aliases_with_simple_pointer_values()

list generic_effect_find_aliases_with_simple_pointer_values ( effect  eff,
list  l_pv,
bool exact_p,
transformer  current_precondition,
bool(*)(cell, descriptor, cell, descriptor, transformer, bool, bool *)  cell_preceding_p_func,
void(*)(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *)  cell_with_address_of_cell_translation_func,
void(*)(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *)  cell_with_value_of_cell_translation_func,
bool(*)(cell, descriptor, cell, descriptor, bool *)  cells_intersection_p_func,
bool(*)(cell, descriptor, cell, descriptor, bool *)  cells_inclusion_p_func,
void(*)(cell, cell *, descriptor *)  simple_cell_conversion_func 
)

should it be turned into entity_abstract_location_p (?)

first we must find in eff intermediary paths to pointers

and find if this gives equivalent paths in l_pv

this is valid only if the first value_of corresponds to eff_intermediary

This test is valid here because by construction either c1 or c2 is an equivalent for eff_intermediary

use second cell as equivalent value for intermediary path

cell_relation_second_address_of_p is true

use first cell as equivalent value for intermediary path

FOREACH

Then we must find if there are address_of second cells which are preceding paths of eff path in which case they must be used to generate other aliased paths

for the translation, add a dereferencing_dimension to pv_remnant_first_cell

FOREACH

if (!anywhere_p)

else branche of if (anywhere_effect_p(eff))

Parameters
effff
l_pv_pv
exact_pxact_p
current_preconditionurrent_precondition

Definition at line 673 of file eval.c.

698 {
699  list l_res = NIL;
700  list l_remnants = l_pv;
701  cell eff_cell = effect_cell(eff);
702  descriptor eff_desc= effect_descriptor(eff);
703  // reference eff_ref = effect_any_reference(eff);
704  bool anywhere_p = false;
705 
706  pips_debug_effect(5, "begin with eff:", eff);
707  pips_debug_pvs(5, "and l_pv:", l_pv);
708 
709  if (anywhere_effect_p(eff)
711  || undefined_pointer_value_cell_p(effect_cell(eff))) /* should it be turned into entity_abstract_location_p (?) */
712  {
713  pips_debug(5, "anywhere, undefined or null case\n");
714  return (NIL);
715  }
716  else
717  {
718  /* first we must find in eff intermediary paths to pointers */
719  list l_intermediary = effect_intermediary_pointer_paths_effect(eff);
720  pips_debug_effects(5, "intermediary paths to eff:", l_intermediary);
721 
722  /* and find if this gives equivalent paths in l_pv */
723  FOREACH(EFFECT, eff_intermediary, l_intermediary)
724  {
725  pips_debug_effect(5, "considering intermediary path:", eff_intermediary);
726  list tmp_l_remnants = NIL;
728  list l_equiv =
729  generic_effect_find_equivalent_simple_pointer_values(eff_intermediary, l_remnants,
730  &pv_exact, &tmp_l_remnants,
731  cells_intersection_p_func,
732  cells_inclusion_p_func,
733  simple_cell_conversion_func);
734  if (!cell_relation_undefined_p(pv_exact))
735  {
736  l_equiv = CONS(CELL_RELATION, pv_exact, l_equiv);
737  }
738  l_remnants = tmp_l_remnants;
739  pips_debug_pvs(5, "list of equivalent pvs \n", l_equiv);
740 
741  cell cell_intermediary = effect_cell(eff_intermediary);
742  reference ref_intermediary = effect_any_reference(eff_intermediary);
743  //entity ent_intermediary = reference_variable(ref_intermediary);
744  //descriptor d_intermediary = effect_descriptor(eff_intermediary);
745  int nb_common_indices =
746  (int) gen_length(reference_indices(ref_intermediary));
747 
748  FOREACH(CELL_RELATION, pv_equiv, l_equiv)
749  {
750  cell c = cell_undefined;
752  bool exact_translation_p;
753  cell c1 = cell_relation_first_cell(pv_equiv);
754  cell c2 = cell_relation_second_cell(pv_equiv);
755 
756  pips_debug_pv(5, "translating eff using pv: \n", pv_equiv);
757 
760  {
761  pips_debug(5,"potential dereferencement of an undefined pointer -> returning undefined\n");
763  if (cell_relation_may_p(pv_equiv))
764  effects_to_may_effects(l_res);
765  anywhere_p = true;
766  }
767  else if (null_pointer_value_cell_p(c1)
769  {
770  pips_debug(5,"potential dereferencement of a null pointer -> returning null\n");
772  if (cell_relation_may_p(pv_equiv))
773  effects_to_may_effects(l_res);
774  anywhere_p = true;
775  }
776  else
777  {
778  /* this is valid only if the first value_of corresponds
779  * to eff_intermediary
780  */
781 
782  /* This test is valid here because by construction either c1 or c2 is an equivalent
783  * for eff_intermediary
784  */
785  if (same_entity_p(cell_entity(cell_intermediary), cell_entity(c1))
786  && (gen_length(reference_indices(ref_intermediary)) == gen_length(cell_indices(c1))))
787  {
788  cell converted_c2 = cell_undefined;
789  descriptor converted_d2 = descriptor_undefined;
790  (*simple_cell_conversion_func)(c2, &converted_c2, &converted_d2);
791 
792  /* use second cell as equivalent value for intermediary path */
793  if (cell_relation_second_value_of_p(pv_equiv))
794  {
795  (*cell_with_value_of_cell_translation_func)
796  (eff_cell, eff_desc,
797  converted_c2, converted_d2,
798  nb_common_indices,
799  &c, &d, &exact_translation_p);
800  }
801  else /* cell_relation_second_address_of_p is true */
802  {
803  (*cell_with_address_of_cell_translation_func)
804  (eff_cell, eff_desc,
805  converted_c2, converted_d2,
806  nb_common_indices,
807  &c, &d, &exact_translation_p);
808  }
809  // we should maybe free converted stuff here
810  }
811  else /* use first cell as equivalent value for intermediary path */
812  {
813  pips_assert("pv_equiv must be value_of here\n",
815  cell converted_c1 = cell_undefined;
816  descriptor converted_d1 = descriptor_undefined;
817  (*simple_cell_conversion_func)(c1, &converted_c1, &converted_d1);
818 
819  (*cell_with_value_of_cell_translation_func)
820  (eff_cell, eff_desc,
821  converted_c1, converted_d1,
822  nb_common_indices,
823  &c, &d, &exact_translation_p);
824 
825  // we should maybe free converted stuff here
826  }
827  exact_translation_p = effect_exact_p(eff_intermediary) && exact_translation_p && cell_relation_exact_p(pv_equiv);
828 
829  effect eff_alias = make_effect(c,
830  copy_action(effect_action(eff_intermediary)),
831  exact_translation_p ?
835 
836  pips_debug_effect(5, "resulting effect \n", eff_alias);
837  // there we should perform a union...
838  if (anywhere_effect_p(eff_alias))
839  {
840  gen_full_free_list(l_res);
841  l_res = CONS(EFFECT, eff_alias, NIL);
842  anywhere_p = true;
843  }
844  else
845  {
846  l_res = CONS(EFFECT, eff_alias, l_res);
847  }
848  }
849  } /* FOREACH */
850  }
851 
852  if (!anywhere_p)
853  {
854  pips_debug_effects(5, "l_res after first phase : \n", l_res);
855 
856  /* Then we must find if there are address_of second cells
857  * which are preceding paths of eff path
858  * in which case they must be used to generate other aliased paths
859  */
860  list l_remnants_2 = NIL;
861  FOREACH(CELL_RELATION, pv_remnant, l_remnants)
862  {
863  cell pv_remnant_second_cell =
864  cell_relation_second_cell(pv_remnant);
865  bool exact_preceding_test = true;
866 
867  pips_debug_pv(5, "considering pv: \n", pv_remnant);
868 
869  cell pv_remnant_converted_cell = cell_undefined;
870  descriptor pv_remnant_converted_desc = descriptor_undefined;
871 
872  // this (maybe costly) translation should take place after the first 3 tests
873  (*simple_cell_conversion_func)(pv_remnant_second_cell,
874  &pv_remnant_converted_cell,
875  &pv_remnant_converted_desc);
876 
877  if (cell_relation_second_address_of_p(pv_remnant)
879  cell_entity(pv_remnant_second_cell))
880  && (gen_length(cell_indices(eff_cell))
881  >= gen_length(cell_indices(pv_remnant_second_cell)))
882  && (*cell_preceding_p_func)(pv_remnant_converted_cell, pv_remnant_converted_desc,
883  eff_cell, eff_desc,
885  true,
886  &exact_preceding_test))
887  {
888  cell c;
890  bool exact_translation_p;
891 
892  pips_debug(5, "good candidate (%sexact)\n",exact_preceding_test? "":"non ");
893  /* for the translation, add a dereferencing_dimension to pv_remnant_first_cell */
894  reference new_ref = copy_reference
896  int nb_common_indices = (int) gen_length(cell_indices(pv_remnant_second_cell));
897  reference_indices(new_ref) = gen_nconc(reference_indices(new_ref),
900  NIL));
901  cell new_cell = make_cell_reference(new_ref);
902  cell new_converted_cell = cell_undefined;
903  descriptor new_converted_desc = descriptor_undefined;
904  (*simple_cell_conversion_func)(new_cell,
905  &new_converted_cell,
906  &new_converted_desc);
907 
908  (*cell_with_value_of_cell_translation_func)
909  (eff_cell, eff_desc,
910  new_converted_cell, new_converted_desc,
911  nb_common_indices,
912  &c, &d, &exact_translation_p);
913 
914  exact_translation_p = exact_translation_p && cell_relation_exact_p(pv_remnant);
915 
916  effect eff_alias = make_effect(c,
918  exact_translation_p && exact_preceding_test ?
922  free_cell(new_cell);
923  // we should also free new_converted_cell and new_converted_desc if they have actually been translated
924  pips_debug_effect(5, "resulting effect \n", eff_alias);
925  l_res = CONS(EFFECT, eff_alias, l_res);
926 
927  }
928  else
929  {
930  l_remnants_2 = CONS(CELL_RELATION, pv_remnant, l_remnants_2);
931  }
932  } /* FOREACH */
933 
934  l_remnants = l_remnants_2;
935  } /* if (!anywhere_p)*/
936  if (!ENDP(l_remnants))
937  {
938  pips_debug(5, "recursing to find aliases to aliased effect...\n");
939  pips_debug_effects(5, "l_res before recursing : \n", l_res);
940  list l_recurs = NIL;
941  FOREACH(EFFECT, eff_alias, l_res)
942  {
943  l_recurs = gen_nconc(l_recurs,
945  l_remnants,
946  exact_p,
949  cell_with_address_of_cell_translation_func,
950  cell_with_value_of_cell_translation_func,
951  cells_intersection_p_func,
952  cells_inclusion_p_func,
953  simple_cell_conversion_func ));
954  }
955  l_res = gen_nconc(l_recurs, l_res);
956  }
957  } /* else branche of if (anywhere_effect_p(eff))*/
958 
959  pips_debug_effects(5, "returning : \n", l_res);
960  return l_res;
961 }
cell make_cell_reference(reference _field_)
Definition: effects.c:293
action copy_action(action p)
ACTION.
Definition: effects.c:77
void free_cell(cell p)
Definition: effects.c:249
approximation make_approximation_exact(void)
Definition: effects.c:185
effect make_effect(cell a1, action a2, approximation a3, descriptor a4)
Definition: effects.c:484
descriptor make_descriptor_none(void)
Definition: effects.c:442
reference copy_reference(reference p)
REFERENCE.
Definition: ri.c:2047
void const char const char const int
#define pips_debug_effects(level, message, l_eff)
#define pips_debug_effect(level, message, eff)
for debug
list generic_effect_find_aliases_with_simple_pointer_values(effect eff, list l_pv, bool *exact_p, transformer current_precondition, bool(*cell_preceding_p_func)(cell, descriptor, cell, descriptor, transformer, bool, bool *), void(*cell_with_address_of_cell_translation_func)(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *), void(*cell_with_value_of_cell_translation_func)(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *), bool(*cells_intersection_p_func)(cell, descriptor, cell, descriptor, bool *), bool(*cells_inclusion_p_func)(cell, descriptor, cell, descriptor, bool *), void(*simple_cell_conversion_func)(cell, cell *, descriptor *))
Definition: eval.c:673
list generic_effect_find_equivalent_simple_pointer_values(effect eff, list l_in, cell_relation *exact_aliased_pv, list *l_in_remnants, bool(*cells_intersection_p_func)(cell, descriptor, cell, descriptor, bool *), bool(*cells_inclusion_p_func)(cell, descriptor, cell, descriptor, bool *), void(*simple_cell_conversion_func)(cell, cell *, descriptor *))
find pointer_values in l_in which give (possible or exact) paths equivalent to eff.
Definition: eval.c:506
void effects_to_may_effects(list)
effect make_undefined_pointer_value_effect(action)
bool(* cell_preceding_p_func)(cell, descriptor, cell, descriptor, bool, bool *)
list effect_intermediary_pointer_paths_effect(effect)
effect make_null_pointer_value_effect(action)
list effect_to_list(effect)
#define effect_any_reference(e)
FI: cannot be used as a left hand side.
#define pips_debug_pv(level, message, pv)
#define cell_relation_may_p(cr)
#define cell_relation_second_cell(cr)
#define pips_debug_pvs(level, message, l_pv)
#define cell_relation_exact_p(cr)
#define cell_relation_second_address_of_p(cr)
#define cell_relation_second_value_of_p(cr)
#define cell_relation_first_cell(cr)
#define effect_exact_p(eff)
bool undefined_pointer_value_cell_p(cell)
list cell_indices(cell)
Definition: effects.c:64
entity effect_entity(effect)
cproto-generated files
Definition: effects.c:52
bool anywhere_effect_p(effect)
Is it an anywhere effect? ANYMMODULE:ANYWHERE
Definition: effects.c:346
bool null_pointer_value_cell_p(cell)
entity cell_entity(cell)
Definition: effects.c:57
#define cell_reference(x)
Definition: effects.h:469
#define CELL_RELATION(x)
CELL_RELATION.
Definition: effects.h:479
#define cell_undefined
Definition: effects.h:430
#define effect_action(x)
Definition: effects.h:642
#define cell_relation_undefined
Definition: effects.h:485
#define effect_descriptor(x)
Definition: effects.h:646
#define descriptor_undefined
Definition: effects.h:559
#define descriptor_undefined_p(x)
Definition: effects.h:560
#define effect_cell(x)
Definition: effects.h:640
#define cell_relation_undefined_p(x)
Definition: effects.h:486
#define ENDP(l)
Test if a list is empty.
Definition: newgen_list.h:66
bool same_entity_p(entity e1, entity e2)
predicates on entities
Definition: entity.c:1321
expression int_to_expression(_int i)
transform an int into an expression and generate the corresponding entity if necessary; it is not cle...
Definition: expression.c:1188
#define transformer_undefined
Definition: ri.h:2847
#define EXPRESSION(x)
EXPRESSION.
Definition: ri.h:1217
static transformer current_precondition

References anywhere_effect_p(), cell_entity(), cell_indices(), cell_preceding_p_func, cell_reference, CELL_RELATION, cell_relation_exact_p, cell_relation_first_cell, cell_relation_may_p, cell_relation_second_address_of_p, cell_relation_second_cell, cell_relation_second_value_of_p, cell_relation_undefined, cell_relation_undefined_p, cell_undefined, CONS, copy_action(), copy_reference(), current_precondition, descriptor_undefined, descriptor_undefined_p, EFFECT, effect_action, effect_any_reference, effect_cell, effect_descriptor, effect_entity(), effect_exact_p, effect_intermediary_pointer_paths_effect(), effect_to_list(), effects_to_may_effects(), ENDP, EXPRESSION, FOREACH, free_cell(), gen_full_free_list(), gen_length(), gen_nconc(), generic_effect_find_aliases_with_simple_pointer_values(), generic_effect_find_equivalent_simple_pointer_values(), int, int_to_expression(), make_action_write_memory(), make_approximation_exact(), make_approximation_may(), make_cell_reference(), make_descriptor_none(), make_effect(), make_null_pointer_value_effect(), make_undefined_pointer_value_effect(), NIL, null_pointer_value_cell_p(), pips_assert, pips_debug, pips_debug_effect, pips_debug_effects, pips_debug_pv, pips_debug_pvs, reference_indices, same_entity_p(), transformer_undefined, and undefined_pointer_value_cell_p().

Referenced by convex_effect_find_aliased_paths_with_pointer_values(), effect_find_aliased_paths_with_pointer_values(), and generic_effect_find_aliases_with_simple_pointer_values().

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

◆ generic_effect_find_equivalent_simple_pointer_values()

list generic_effect_find_equivalent_simple_pointer_values ( effect  eff,
list  l_in,
cell_relation exact_aliased_pv,
list l_in_remnants,
bool(*)(cell, descriptor, cell, descriptor, bool *)  cells_intersection_p_func,
bool(*)(cell, descriptor, cell, descriptor, bool *)  cells_inclusion_p_func,
void(*)(cell, cell *, descriptor *)  simple_cell_conversion_func 
)

find pointer_values in l_in which give (possible or exact) paths equivalent to eff.

Parameters
effis the considered input path.
l_inis the input pointer values list.
exact_aliased_pvgives an exact equivalent path found in l_in if it exists.
l_in_remnantscontains the elemnts of l_in which are neither exact_aliased_pv nor in the returned list.
Returns
a list of elements of l_in which give (possible or exact) paths equivalent to eff, excluding exact_aliased_pv if one exact equivalent path can be found in l_in.

eff characteristics

first, search for the (exact/possible) values of eff cell in l_in

we search for the cell_relations where ref appears as a first cell, or the exact value_of pointer_values where ref appears as a second cell. If an exact value_of relation is found, it is retained in exact_aliased_pv

Parameters
effff
l_in_in
exact_aliased_pvxact_aliased_pv
l_in_remnants_in_remnants

Definition at line 506 of file eval.c.

516 {
517 
518  pips_debug_pvs(1,"begin, l_in =", l_in);
519  pips_debug_effect(1, "and eff:", eff);
520 
521  /* eff characteristics */
522  cell eff_cell = effect_cell(eff);
523  descriptor eff_desc = effect_descriptor(eff);
524  /******/
525 
526  /* first, search for the (exact/possible) values of eff cell in l_in */
527  /* we search for the cell_relations where ref appears
528  * as a first cell, or the exact value_of pointer_values where ref appears as
529  * a second cell. If an exact value_of relation is found, it is retained in
530  * exact_aliased_pv
531  */
532  *l_in_remnants = NIL;
533  *exact_aliased_pv = cell_relation_undefined;
534  list l_res = NIL;
535 
536  FOREACH(CELL_RELATION, pv_in, l_in)
537  {
538  cell first_cell_in = cell_relation_first_cell(pv_in);
539  cell converted_first_cell_in = cell_undefined;
540  descriptor first_cell_in_desc = descriptor_undefined;
541 
542  cell second_cell_in = cell_relation_second_cell(pv_in);
543  cell converted_second_cell_in = cell_undefined;
544  descriptor second_cell_in_desc = descriptor_undefined;
545 
546  bool intersection_test_exact_p = false;
547  bool inclusion_test_exact_p = true;
548 
549  pips_debug_pv(4, "considering:", pv_in);
550 
551  (*simple_cell_conversion_func)(first_cell_in, &converted_first_cell_in, &first_cell_in_desc);
552  (*simple_cell_conversion_func)(second_cell_in, &converted_second_cell_in, &second_cell_in_desc);
553 
554  if ((*cells_intersection_p_func)(eff_cell, eff_desc,
555  converted_first_cell_in, first_cell_in_desc,
556  &intersection_test_exact_p))
557  {
558  pips_debug(4, "non empty intersection with first cell (%sexact)\n",
559  intersection_test_exact_p? "": "non ");
560  if (cell_relation_exact_p(pv_in)
561  && intersection_test_exact_p
562  && (*cells_inclusion_p_func)(eff_cell, eff_desc,
563  converted_first_cell_in, first_cell_in_desc,
564  &inclusion_test_exact_p)
565  && inclusion_test_exact_p)
566  {
567  if (cell_relation_undefined_p(*exact_aliased_pv))
568  {
569  pips_debug(4, "exact value candidate found\n");
570  *exact_aliased_pv = pv_in;
571  }
572  else if ((cell_relation_second_address_of_p(*exact_aliased_pv)
576  {
577  pips_debug(4, "better exact value candidate found\n");
578  l_res = CONS(CELL_RELATION, *exact_aliased_pv, l_res);
579  *exact_aliased_pv = pv_in;
580  }
581  else
582  {
583  pips_debug(4, "not kept as exact candidate\n");
584  l_res = CONS(CELL_RELATION, pv_in, l_res);
585  }
586  }
587  else
588  {
589  pips_debug(5, "potentially non exact value candidate found\n");
590  l_res = CONS(CELL_RELATION, pv_in, l_res);
591  }
592  }
593  else if(cell_relation_second_value_of_p(pv_in)
594  && (*cells_intersection_p_func)(eff_cell, eff_desc,
595  converted_second_cell_in, second_cell_in_desc,
596  &intersection_test_exact_p))
597  {
598  pips_debug(4, "non empty intersection with second value_of cell "
599  "(%sexact)\n", intersection_test_exact_p? "": "non ");
600  if(cell_relation_exact_p(pv_in)
601  && intersection_test_exact_p
602  && (*cells_inclusion_p_func)(eff_cell, eff_desc,
603  second_cell_in, second_cell_in_desc,
604  &inclusion_test_exact_p)
605  && inclusion_test_exact_p)
606  {
607  if (cell_relation_undefined_p(*exact_aliased_pv))
608  {
609  pips_debug(4, "exact value candidate found\n");
610  *exact_aliased_pv = pv_in;
611  }
612  else if (cell_relation_second_address_of_p(*exact_aliased_pv))
613  {
614  pips_debug(4, "better exact value candidate found\n");
615  l_res = CONS(CELL_RELATION, *exact_aliased_pv, l_res);
616  *exact_aliased_pv = pv_in;
617  }
618  else
619  {
620  pips_debug(4, "not kept as exact candidate\n");
621  l_res = CONS(CELL_RELATION, pv_in, l_res);
622  }
623  }
624  else
625  {
626  pips_debug(5, "potentially non exact value candidate found\n");
627  l_res = CONS(CELL_RELATION, pv_in, l_res);
628  }
629  }
630  else
631  {
632  pips_debug(4, "remnant\n");
633  *l_in_remnants = CONS(CELL_RELATION, pv_in, *l_in_remnants);
634  }
635  // here we should free the converted cells and descriptors if necessary
636  }
637  pips_debug_pvs(3, "l_in_remnants:", *l_in_remnants);
638  pips_debug_pvs(3, "l_res:", l_res);
639  pips_debug_pv(3, "*exact_aliased_pv:", *exact_aliased_pv);
640 
641  return l_res;
642 }

References CELL_RELATION, cell_relation_exact_p, cell_relation_first_cell, cell_relation_second_address_of_p, cell_relation_second_cell, cell_relation_second_value_of_p, cell_relation_undefined, cell_relation_undefined_p, cell_undefined, CONS, descriptor_undefined, effect_cell, effect_descriptor, FOREACH, NIL, null_pointer_value_cell_p(), pips_debug, pips_debug_effect, pips_debug_pv, pips_debug_pvs, and undefined_pointer_value_cell_p().

Referenced by effect_find_equivalent_pointer_values(), and generic_effect_find_aliases_with_simple_pointer_values().

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

◆ generic_effect_generate_all_accessible_paths_effects()

list generic_effect_generate_all_accessible_paths_effects ( effect  ,
type  ,
tag   
)

◆ generic_effect_generate_all_accessible_paths_effects_with_level()

list generic_effect_generate_all_accessible_paths_effects_with_level ( effect  ,
type  ,
tag  ,
bool  ,
int  ,
bool   
)

Referenced by external_call_to_post_pv(), module_initial_parameter_pv(), and multiple_pointer_assignment_to_post_pv().

+ Here is the caller graph for this function:

◆ generic_effects_backward_translation()

list generic_effects_backward_translation ( entity  ,
list  ,
list  ,
transformer   
)

Referenced by step_translate_and_map().

+ Here is the caller graph for this function:

◆ generic_effects_forward_translation()

list generic_effects_forward_translation ( entity  ,
list  ,
list  ,
transformer   
)

Referenced by live_out_paths_from_call_site_to_callee().

+ Here is the caller graph for this function:

◆ generic_effects_reset_all_methods()

◆ generic_effects_store_update()

list generic_effects_store_update ( list  ,
statement  ,
bool   
)

◆ generic_eval_cell_with_points_to()

list generic_eval_cell_with_points_to ( cell  input_cell,
descriptor  input_desc,
list  ptl,
bool exact_p,
transformer  current_precondition,
bool(*)(reference, descriptor, reference, descriptor, transformer, bool, bool *)  cell_reference_preceding_p_func,
void(*)(reference, descriptor, reference, descriptor, int, reference *, descriptor *, bool *)  cell_reference_with_address_of_cell_reference_translation_func,
void(*)(reference, reference *, descriptor *)  cell_reference_conversion_func 
)

iterer sur le path p[0][1][2][0] et tester chaque fois si on peut dereferencer le pointeur

simple scalar case. I think this should not happen, because there is no dereferencing dimension.

first build a temporary list with matching points-to of maximum length

the current maximum length

else branche of if (input_path_length == 0)

If the results contain dereferencing dimensions, we must eval them recursively

if eff is a may effect, the resulting effects must be may effects

Parameters
input_cellnput_cell
input_descnput_desc
ptltl
exact_pxact_p
current_preconditionurrent_precondition

Definition at line 361 of file eval.c.

374 {
375  debug_on("EVAL_CELL_WITH_POINTS_TO_DEBUG_LEVEL");
376  reference input_ref = cell_to_reference(input_cell);
377 
378  /* iterer sur le path p[0][1][2][0] et tester chaque fois si on peut
379  * dereferencer le pointeur*/
380  entity input_ent = reference_variable(input_ref);
381  list input_indices = reference_indices(input_ref);
382  size_t input_path_length = gen_length(input_indices);
383  list l = NIL; // result of this function: a list of effects
384 
386 
387  pips_debug(8, "input reference : %s\n", effect_reference_to_string(input_ref));
389 
390  if (entity_abstract_location_p(input_ent)
391  && !entity_heap_location_p(input_ent)) {
394  // cell c = make_cell_reference(r);
395  // l = CONS(CELL, c, NIL);
399  NIL);
400  *exact_p = false;
401  }
402  else if (input_path_length == 0) {
403  /* simple scalar case. I think this should not happen, because there is no dereferencing dimension. */
404  l = NIL;
405  *exact_p = true;
406  }
407  else {
408  /* first build a temporary list with matching points-to of maximum length */
409  size_t current_max_path_length = 0; /* the current maximum length */
411  (input_ref, input_desc,
412  &current_max_path_length,
413  exact_p, current_precondition, ptl,
414  cell_reference_conversion_func,
415  cell_reference_preceding_p_func);
416 
417  ifdebug(8) {
418  fprintf(stderr, "matching points-to list:\n");
419  print_points_to_relations(matching_list);
420  fprintf(stderr,"\ncurrent_max_path_length = %d\n", (int) current_max_path_length);
421  fprintf(stderr, "*exact_p is %s\n", *exact_p? "true":"false");
422  }
423 
424  if(ENDP(matching_list)) {
426  ("NULL or undefined pointer dereferencing... or insufficient points-to information for reference \"%s\".\n",
427  reference_to_string(input_ref));
428  l = use_default_sink_cell(input_ref, input_desc,
429  cell_reference_with_address_of_cell_reference_translation_func,
430  cell_reference_conversion_func);
431  *exact_p = false;
432  }
433  else {
435  (matching_list,
436  current_max_path_length,
437  exact_p,
438  input_ref,
439  input_desc,
440  cell_reference_with_address_of_cell_reference_translation_func,
441  cell_reference_conversion_func);
442  }
443 
444  } /* else branche of if (input_path_length == 0) */
445 
446  pips_debug_effects(8, "resulting effect list before recursing:", l);
447 
448  /* If the results contain dereferencing dimensions, we must eval them recursively */
449  list l_tmp = l;
450  l = NIL;
451  FOREACH(EFFECT, eff, l_tmp)
452  {
453  bool r_exact_p;
454  // reference ref = cell_any_reference(c);
457 
459  && effect_reference_dereferencing_p(ref, &r_exact_p))
460  {
461  pips_debug(8, "recursing\n");
462  list l_eval = generic_eval_cell_with_points_to(effect_cell(eff), effect_descriptor(eff), ptl, &r_exact_p,
464  cell_reference_preceding_p_func,
465  cell_reference_with_address_of_cell_reference_translation_func,
466  cell_reference_conversion_func);
467  *exact_p = *exact_p && r_exact_p;
468  /* if eff is a may effect, the resulting effects must be may effects */
469  if (effect_may_p(eff) || !(*exact_p))
470  effects_to_may_effects(l_eval);
471  l = gen_nconc(l_eval, l);
472  free_effect(eff);
473  }
474  else
475  {
476  pips_debug(8, "no need to recurse\n");
477  l = CONS(EFFECT, eff, l);
478  }
479  }
480  l = gen_nreverse(l);
481  gen_free_list(l_tmp);
482 
483  pips_debug_effects(8, "resulting cell list after recursing:", l);
484 
485  debug_off();
486 
487  return l;
488 }
void free_effect(effect p)
Definition: effects.c:451
static reference ref
Current stmt (an integer)
Definition: adg_read_paf.c:163
bool entity_abstract_location_p(entity al)
reference make_anywhere_reference(type t)
This function should be located somewhere in effect-util in or near abstract locations.
static list generic_transform_sink_cells_from_matching_list(list matching_list, size_t current_max_path_length, bool *exact_p, reference input_ref, descriptor input_desc, void(*cell_reference_with_address_of_cell_reference_translation_func)(reference, descriptor, reference, descriptor, int, reference *, descriptor *, bool *), void(*cell_reference_conversion_func)(reference, reference *, descriptor *))
Build the return list with the points-to sinks to which we add/append the indices of input_ref which ...
Definition: eval.c:115
#define print_points_to_relations(l)
Definition: eval.c:56
list generic_reference_to_points_to_matching_list(reference input_ref, descriptor input_desc, size_t *p_current_max_path_length, bool *exact_p, transformer current_precondition, list ptl, void(*cell_reference_conversion_func)(reference, reference *, descriptor *), bool(*cell_reference_preceding_p_func)(reference, descriptor, reference, descriptor, transformer, bool, bool *))
This function has been outlined from generic_eval_cell_with_points_to() to reduce the size of a funct...
Definition: eval.c:224
static list use_default_sink_cell(reference input_ref, descriptor input_desc __attribute__((__unused__)), void(*cell_reference_with_address_of_cell_reference_translation_func)(reference, descriptor, reference, descriptor, int, reference *, descriptor *, bool *) __attribute__((__unused__)), void(*cell_reference_conversion_func)(reference, reference *, descriptor *) __attribute__((__unused__)))
In case, the points-to information is not complete, use anywhere locations to convert the reference.
Definition: eval.c:68
list generic_eval_cell_with_points_to(cell input_cell, descriptor input_desc, list ptl, bool *exact_p, transformer current_precondition, bool(*cell_reference_preceding_p_func)(reference, descriptor, reference, descriptor, transformer, bool, bool *), void(*cell_reference_with_address_of_cell_reference_translation_func)(reference, descriptor, reference, descriptor, int, reference *, descriptor *, bool *), void(*cell_reference_conversion_func)(reference, reference *, descriptor *))
Definition: eval.c:361
#define effect_may_p(eff)
#define make_reference_simple_effect(reference, action, approximation)
bool effect_reference_dereferencing_p(reference, bool *)
Definition: type.c:233
reference cell_to_reference(cell)
FI: probably to be moved elsewhere in ri-util.
Definition: effects.c:1326
string effect_reference_to_string(reference)
Definition: prettyprint.c:155
if(!(yy_init))
Definition: genread_lex.c:1029
list gen_nreverse(list cp)
reverse a list in place
Definition: list.c:304
void gen_free_list(list l)
free the spine of the list
Definition: list.c:327
#define debug_on(env)
Definition: misc-local.h:157
#define debug_off()
Definition: misc-local.h:160
string reference_to_string(reference r)
Definition: expression.c:87
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
#define semantics_user_warning

References cell_to_reference(), CONS, current_precondition, debug_off, debug_on, EFFECT, effect_any_reference, effect_cell, effect_descriptor, effect_may_p, effect_reference_dereferencing_p(), effect_reference_to_string(), effects_to_may_effects(), ENDP, entity_abstract_location_p(), entity_heap_location_p(), FOREACH, fprintf(), free_effect(), gen_free_list(), gen_length(), gen_nconc(), gen_nreverse(), generic_eval_cell_with_points_to(), generic_reference_to_points_to_matching_list(), generic_transform_sink_cells_from_matching_list(), ifdebug, make_action_write_memory(), make_anywhere_reference(), make_approximation_may(), make_reference_simple_effect, NIL, pips_debug, pips_debug_effects, points_to_reference_to_concrete_type(), print_points_to_relations, ref, reference_indices, reference_to_string(), reference_variable, semantics_user_warning, and use_default_sink_cell().

Referenced by eval_convex_cell_with_points_to(), eval_simple_cell_with_points_to(), and generic_eval_cell_with_points_to().

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

◆ generic_fortran_effects_backward_translation()

list generic_fortran_effects_backward_translation ( entity  ,
list  ,
list  ,
transformer   
)

interprocedural.c

◆ generic_intermediary_proper_effects_of_reference()

list generic_intermediary_proper_effects_of_reference ( reference  )

◆ generic_p_proper_effect_of_reference()

list generic_p_proper_effect_of_reference ( reference  ,
effect ,
bool  ,
bool   
)

◆ generic_print_effects()

void generic_print_effects ( list  )

◆ generic_proper_effects_of_address_expression()

list generic_proper_effects_of_address_expression ( expression  ,
int   
)

◆ generic_proper_effects_of_any_lhs()

list generic_proper_effects_of_any_lhs ( expression  )

◆ generic_proper_effects_of_application()

list generic_proper_effects_of_application ( application  )

◆ generic_proper_effects_of_c_function_call_argument()

list generic_proper_effects_of_c_function_call_argument ( expression  )

◆ generic_proper_effects_of_complex_address_address_of_dereferencing_op()

list generic_proper_effects_of_complex_address_address_of_dereferencing_op ( expression  ,
list ,
bool   
)

◆ generic_proper_effects_of_complex_address_assign_dereferencing_op()

list generic_proper_effects_of_complex_address_assign_dereferencing_op ( expression  ,
expression  ,
list ,
bool   
)

◆ generic_proper_effects_of_complex_address_assign_op()

list generic_proper_effects_of_complex_address_assign_op ( list  ,
list ,
bool   
)

◆ generic_proper_effects_of_complex_address_cast_dereferencing_op()

list generic_proper_effects_of_complex_address_cast_dereferencing_op ( cast  ,
expression  ,
list ,
bool   
)

◆ generic_proper_effects_of_complex_address_conditional_dereferencing_op()

list generic_proper_effects_of_complex_address_conditional_dereferencing_op ( expression  ,
expression  ,
expression  ,
list ,
bool   
)

◆ generic_proper_effects_of_complex_address_dereferencing_cast_op()

list generic_proper_effects_of_complex_address_dereferencing_cast_op ( list  ,
list ,
bool   
)

◆ generic_proper_effects_of_complex_address_expression()

◆ generic_proper_effects_of_complex_address_update_op()

list generic_proper_effects_of_complex_address_update_op ( list  ,
list ,
bool   
)

◆ generic_proper_effects_of_complex_memory_access_expression()

list generic_proper_effects_of_complex_memory_access_expression ( expression  ,
list ,
list ,
int   
)

◆ generic_proper_effects_of_derived_reference()

list generic_proper_effects_of_derived_reference ( reference  ,
bool   
)

◆ generic_proper_effects_of_expression()

list generic_proper_effects_of_expression ( expression  )

Referenced by formal_regions_backward_translation().

+ Here is the caller graph for this function:

◆ generic_proper_effects_of_expressions()

list generic_proper_effects_of_expressions ( list  )

◆ generic_proper_effects_of_intrinsic()

list generic_proper_effects_of_intrinsic ( entity  ,
list   
)

◆ generic_proper_effects_of_range()

list generic_proper_effects_of_range ( range  )

◆ generic_proper_effects_of_read_reference()

list generic_proper_effects_of_read_reference ( reference  )

◆ generic_proper_effects_of_reference()

list generic_proper_effects_of_reference ( reference  ,
bool   
)

◆ generic_proper_effects_of_subscript()

list generic_proper_effects_of_subscript ( subscript  )

◆ generic_proper_effects_of_written_reference()

list generic_proper_effects_of_written_reference ( reference  )

◆ generic_r_proper_effects_of_call()

list generic_r_proper_effects_of_call ( call  )

◆ generic_reference_to_points_to_matching_list()

list generic_reference_to_points_to_matching_list ( reference  input_ref,
descriptor  input_desc,
size_t p_current_max_path_length,
bool exact_p,
transformer  current_precondition,
list  ptl,
void(*)(reference, reference *, descriptor *)  cell_reference_conversion_func,
bool(*)(reference, descriptor, reference, descriptor, transformer, bool, bool *)  cell_reference_preceding_p_func 
)

This function has been outlined from generic_eval_cell_with_points_to() to reduce the size of a function to about one page.

It computes a list of points-to arcs whose source is compatible with the input reference, "input_ref". It provides information about the number of common indices, "p_current_max_path_length" and about the approximation of the points-to informationx(?).

assume exactness

eligible points-to candidates must have a path length greater or equal to the current maximum length and their path must be a predecessor of the input_ref path.

if the candidate has a path length strictly greater than the current maximum length, the list of previously found matching candidates must be cleared

I keep the whole points_to and not only the sink because I will need the approximation to further test the exactness

FI: I try adding the stripping...

end of FOREACH

Parameters
input_refnput_ref
input_descnput_desc
p_current_max_path_length_current_max_path_length
exact_pxact_p
current_preconditionurrent_precondition
ptltl

Definition at line 223 of file eval.c.

235 {
236  list matching_list = NIL;
237  *exact_p = true; /* assume exactness */
238  // previous matching list I guess: the initial code looks wrong
239  // since matching_ptl is itialized to NIL...
240  // list matching_ptl = NIL;
241 
242  FOREACH(POINTS_TO, pt, ptl) {
243  cell sink_cell = points_to_sink(pt);
244  if(null_cell_p(sink_cell) || nowhere_cell_p(sink_cell))
245  ; // This points-to arc can be ignored since it would lead to a segfault
246  else {
247  cell source_cell = points_to_source(pt);
248  reference source_ref = reference_undefined;
249  reference tmp_ref = cell_to_reference(source_cell);
251 
252  (*cell_reference_conversion_func)(tmp_ref, &source_ref, &source_desc);
253 
254  pips_debug(8, "considering point-to : %s\n ",
256 
257  list source_indices = reference_indices(source_ref);
258  size_t source_path_length = gen_length(source_indices);
259  bool exact_prec = false;
260 
261  /* eligible points-to candidates must have a path length
262  greater or equal to the current maximum length and
263  their path must be a predecessor of the input_ref
264  path.*/
265  bool strict_p = get_bool_property("POINTS_TO_STRICT_POINTER_TYPES");
266  if ( (source_path_length >= *p_current_max_path_length)
267  && (*cell_reference_preceding_p_func)(source_ref, source_desc, input_ref,
268  input_desc, current_precondition, strict_p,
269  &exact_prec)) {
270  pips_debug(8, "exact_prec is %s\n", exact_prec? "true":"false");
271  if (source_path_length > *p_current_max_path_length ) {
272  /* if the candidate has a path length strictly greater
273  * than the current maximum length, the list of
274  * previously found matching candidates must be cleared
275  */
276  //if(!ENDP(matching_ptl)) {
277  // gen_free_list(matching_ptl);
278  // matching_list = NIL;
279  //}
280  if(!ENDP(matching_list)) {
281  gen_free_list(matching_list);
282  matching_list = NIL;
283  }
284  *p_current_max_path_length = source_path_length;
285  *exact_p = exact_prec;
286  }
287  else
288  *exact_p = *exact_p && exact_prec;
289  /* I keep the whole points_to and not only the sink because I
290  will need the approximation to further test the exactness
291  */
292  /* FI: I try adding the stripping... */
294  matching_list = CONS(POINTS_TO, npt, matching_list);
295  }
296  if(source_cell != points_to_source(pt)) free_cell(source_cell);
297  }
298  } /* end of FOREACH */
299  return matching_list;
300 }
descriptor make_descriptor(enum descriptor_utype tag, void *val)
Definition: effects.c:433
int effects_statement_line_number(void)
To provide information when a but is encountered in the source file or within PIPS.
Definition: eval.c:208
points_to points_to_with_stripped_sink(points_to, int(*)(void))
The value of the source can often be expressed with different subscript lists.
Definition: points_to.c:1074
list word_points_to(points_to)
Definition: prettyprint.c:242
@ is_descriptor_none
Definition: effects.h:576
bool get_bool_property(const string)
FC 2015-07-20: yuk, moved out to prevent an include cycle dependency include "properties....
#define UU
Definition: newgen_types.h:98
#define points_to_sink(x)
#define POINTS_TO(x)
POINTS_TO.
#define points_to_source(x)
#define reference_undefined
Definition: ri.h:2302
string words_to_string(cons *lw)
Definition: print.c:211

References cell_to_reference(), CONS, current_precondition, effects_statement_line_number(), ENDP, FOREACH, free_cell(), gen_free_list(), gen_length(), get_bool_property(), is_descriptor_none, make_descriptor(), NIL, nowhere_cell_p(), null_cell_p(), pips_debug, POINTS_TO, points_to_sink, points_to_source, points_to_with_stripped_sink(), reference_indices, reference_undefined, UU, word_points_to(), and words_to_string().

Referenced by generic_eval_cell_with_points_to().

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

◆ get_any_effect_type_text()

text get_any_effect_type_text ( const char *  ,
string  ,
string  ,
bool   
)

◆ get_constant_paths_p()

bool get_constant_paths_p ( void  )

Referenced by set_methods_for_convex_effects().

+ Here is the caller graph for this function:

◆ get_cumulated_in_effects()

statement_effects get_cumulated_in_effects ( void  )

◆ get_cumulated_references()

statement_effects get_cumulated_references ( void  )

◆ get_cumulated_rw_effects()

statement_effects get_cumulated_rw_effects ( void  )

Referenced by cumulated_effects_map_print().

+ Here is the caller graph for this function:

◆ get_descriptor_range_p()

bool get_descriptor_range_p ( void  )

Referenced by convex_in_effect_loop_range_fix().

+ Here is the caller graph for this function:

◆ get_effects_private_current_context_stack()

stack get_effects_private_current_context_stack ( void  )

◆ get_effects_private_current_stmt_stack()

stack get_effects_private_current_stmt_stack ( void  )

◆ get_expr_prw_effects()

persistant_expression_to_effects get_expr_prw_effects ( void  )

◆ get_in_effects()

statement_effects get_in_effects ( void  )

◆ get_invariant_in_effects()

statement_effects get_invariant_in_effects ( void  )

◆ get_invariant_rw_effects()

statement_effects get_invariant_rw_effects ( void  )

◆ get_invariant_rw_pointer_effects()

statement_effects get_invariant_rw_pointer_effects ( void  )

◆ get_live_in_paths()

statement_effects get_live_in_paths ( void  )

Referenced by live_paths_engine().

+ Here is the caller graph for this function:

◆ get_live_out_paths()

statement_effects get_live_out_paths ( void  )

Referenced by live_paths_engine().

+ Here is the caller graph for this function:

◆ get_live_out_regions()

statement_effects get_live_out_regions ( void  )

Referenced by live_out_region_engine().

+ Here is the caller graph for this function:

◆ get_out_effects()

statement_effects get_out_effects ( void  )

◆ get_out_summary_effects_list()

list get_out_summary_effects_list ( void  )

◆ get_pointer_info_kind()

pointer_info_val get_pointer_info_kind ( void  )

Referenced by set_methods_for_convex_effects().

+ Here is the caller graph for this function:

◆ get_proper_references()

statement_effects get_proper_references ( void  )

◆ get_proper_rw_effects()

statement_effects get_proper_rw_effects ( void  )

Referenced by delay_communications(), delay_load_communications(), delay_store_communications(), and partial_eval_statement().

+ Here is the caller graph for this function:

◆ get_proper_rw_pointer_effects()

statement_effects get_proper_rw_pointer_effects ( void  )

◆ get_rw_effects()

statement_effects get_rw_effects ( void  )

Referenced by update_common_references_in_regions().

+ Here is the caller graph for this function:

◆ get_rw_pointer_effects()

statement_effects get_rw_pointer_effects ( void  )

◆ get_useful_variables_effects()

entity_effects get_useful_variables_effects ( void  )

◆ in_effects_engine()

bool in_effects_engine ( const char *  ,
effects_representation_val   
)

◆ in_effects_undefined_p()

bool in_effects_undefined_p ( void  )

◆ init_cumulated_in_effects()

void init_cumulated_in_effects ( void  )

◆ init_cumulated_references()

void init_cumulated_references ( void  )

◆ init_cumulated_rw_effects()

void init_cumulated_rw_effects ( void  )

◆ init_expr_prw_effects()

void init_expr_prw_effects ( void  )

◆ init_in_effects()

void init_in_effects ( void  )

◆ init_invariant_in_effects()

void init_invariant_in_effects ( void  )

◆ init_invariant_rw_effects()

void init_invariant_rw_effects ( void  )

◆ init_invariant_rw_pointer_effects()

void init_invariant_rw_pointer_effects ( void  )

◆ init_live_in_paths()

void init_live_in_paths ( void  )

Referenced by live_paths_engine().

+ Here is the caller graph for this function:

◆ init_live_out_paths()

void init_live_out_paths ( void  )

Referenced by live_paths_engine().

+ Here is the caller graph for this function:

◆ init_live_out_regions()

void init_live_out_regions ( void  )

Referenced by live_out_region_engine().

+ Here is the caller graph for this function:

◆ init_out_effects()

void init_out_effects ( void  )

◆ init_proper_references()

void init_proper_references ( void  )

◆ init_proper_rw_effects()

void init_proper_rw_effects ( void  )

Referenced by drop_dummy_loops().

+ Here is the caller graph for this function:

◆ init_proper_rw_pointer_effects()

void init_proper_rw_pointer_effects ( void  )

◆ init_rw_effects()

void init_rw_effects ( void  )

◆ init_rw_pointer_effects()

void init_rw_pointer_effects ( void  )

◆ init_useful_variables_effects()

void init_useful_variables_effects ( void  )

◆ invariant_in_effects_undefined_p()

bool invariant_in_effects_undefined_p ( void  )

◆ invariant_rw_effects_undefined_p()

bool invariant_rw_effects_undefined_p ( void  )

◆ invariant_rw_pointer_effects_undefined_p()

bool invariant_rw_pointer_effects_undefined_p ( void  )

◆ list_of_effects_generic_binary_op()

list list_of_effects_generic_binary_op ( list  ,
list  ,
bool(*)(effect, effect ,
list(*)(effect, effect, bool, bool, bool *, bool *, list(*)(effect, effect))  ,
list(*)(effect, effect ,
list(*)(effect ,
list(*)(effect  
)

binary_operators.c

◆ list_of_effects_generic_cells_inf_difference_op()

list list_of_effects_generic_cells_inf_difference_op ( list  ,
list  ,
bool(*)(effect, effect ,
list(*)(effect, effect  
)

Referenced by RegionsEntitiesInfDifference().

+ Here is the caller graph for this function:

◆ list_of_effects_generic_cells_intersection_op()

list list_of_effects_generic_cells_intersection_op ( list  ,
list  ,
bool(*)(effect, effect ,
list(*)(effect, effect  
)

Referenced by RegionsEntitiesIntersection().

+ Here is the caller graph for this function:

◆ list_of_effects_generic_inf_difference_op()

list list_of_effects_generic_inf_difference_op ( list  ,
list  ,
bool(*)(effect, effect ,
list(*)(effect, effect  
)

Referenced by EffectsInfDifference(), and RegionsInfDifference().

+ Here is the caller graph for this function:

◆ list_of_effects_generic_intersection_op()

list list_of_effects_generic_intersection_op ( list  ,
list  ,
bool(*)(effect, effect ,
list(*)(effect, effect  
)

Referenced by RegionsIntersection().

+ Here is the caller graph for this function:

◆ list_of_effects_generic_sup_difference_op()

list list_of_effects_generic_sup_difference_op ( list  ,
list  ,
bool(*)(effect, effect ,
list(*)(effect, effect  
)

Referenced by EffectsSupDifference(), and RegionsSupDifference().

+ Here is the caller graph for this function:

◆ list_of_effects_generic_union_op()

list list_of_effects_generic_union_op ( list  ,
list  ,
bool(*)(effect, effect ,
list(*)(effect, effect ,
list(*)(effect  
)

Referenced by EffectsMayUnion(), EffectsMustUnion(), ProperEffectsMustUnion(), RegionsMayUnion(), and RegionsMustUnion().

+ Here is the caller graph for this function:

◆ live_in_paths_undefined_p()

bool live_in_paths_undefined_p ( void  )

◆ live_in_summary_paths_engine()

bool live_in_summary_paths_engine ( const char *  module_name)

liveness_analysis_engine.c

Parameters
module_nameodule_name

Definition at line 130 of file liveness_analysis_engine.c.

131 {
132  list l_glob = NIL, l_loc = NIL;
133  statement module_stat;
134 
137  db_get_memory_resource(DBR_CODE, module_name, true) );
138  module_stat = get_current_module_statement();
139 
140  // functions that can be pointed by effects_computation_init_func:
141  // effects_computation_no_init
142  // init_convex_in_out_regions
143  // init_convex_rw_regions
144  (*effects_computation_init_func)(module_name);
145 
147 
148  l_loc = load_live_in_paths_list(module_stat);
149 
150  // functions that can be pointed by effects_local_to_global_translation_op:
151  // effects_dynamic_elim
152  // regions_dynamic_elim
153  l_glob = (*effects_local_to_global_translation_op)(l_loc);
154 
155  (*db_put_live_in_summary_paths_func)(module_name, l_glob);
156 
160 
161  // functions that can be pointed by effects_computation_reset_func:
162  // effects_computation_no_reset
163  // reset_convex_in_out_regions
164  // reset_convex_rw_regions
165  (*effects_computation_reset_func)(module_name);
166 
167  return true;
168 }
void set_live_in_paths(statement_effects)
statement_effects(* db_get_live_in_paths_func)(const char *)
list load_live_in_paths_list(statement)
void reset_live_in_paths(void)
void reset_current_module_entity(void)
Reset the current module entity.
Definition: static.c:97
void reset_current_module_statement(void)
Reset the current module statement.
Definition: static.c:221
statement set_current_module_statement(statement)
Set the current module statement.
Definition: static.c:165
statement get_current_module_statement(void)
Get the current module statement.
Definition: static.c:208
entity set_current_module_entity(entity)
static.c
Definition: static.c:66
entity module_name_to_entity(const char *mn)
This is an alias for local_name_to_top_level_entity.
Definition: entity.c:1479

References db_get_live_in_paths_func, db_get_memory_resource(), get_current_module_statement(), load_live_in_paths_list(), module_name(), module_name_to_entity(), NIL, reset_current_module_entity(), reset_current_module_statement(), reset_live_in_paths(), set_current_module_entity(), set_current_module_statement(), and set_live_in_paths().

+ Here is the call graph for this function:

◆ live_out_paths_undefined_p()

bool live_out_paths_undefined_p ( void  )

◆ live_out_region_engine()

bool live_out_region_engine ( const char *  ,
effects_representation_val   
)

◆ live_out_regions_undefined_p()

bool live_out_regions_undefined_p ( void  )

◆ live_out_summary_paths_engine()

bool live_out_summary_paths_engine ( const char *  module_name)

Look for all call sites in the callers

Parameters
module_nameodule_name

Definition at line 304 of file liveness_analysis_engine.c.

305 {
306  /* Look for all call sites in the callers */
307  callees callers = (callees) db_get_memory_resource(DBR_CALLERS,
308  module_name,
309  true);
311 
314 
315  ifdebug(1)
316  {
317  pips_debug(1, "begin for %s with %td callers\n",
318  module_name,
319  gen_length(callees_callees(callers)));
321  {fprintf(stderr, "%s, ", caller_name);}
322  fprintf(stderr, "\n");
323  }
324 
327  debug_on("LIVE_PATHS_DEBUG_LEVEL");
329  {
332  }
333  debug_off();
335  ctxt.l_current_paths = NIL;
336  (*db_put_live_out_summary_paths_func)(module_name, ctxt.l_current_paths);
337 
338  ifdebug(1)
339  {
341  db_get_memory_resource(DBR_CODE,
343  true) );
344 
345  pips_debug(1, "live out paths for module %s:\n", module_name);
346  (*effects_prettyprint_func)(ctxt.l_current_paths);
347  pips_debug(1, "end\n");
349  }
350 
354 
355  return true;
356 }
static const char * caller_name
Definition: alias_check.c:122
static entity callee
Definition: alias_pairs.c:62
void free_effects_private_current_context_stack(void)
void make_effects_private_current_context_stack(void)
#define STRING(x)
Definition: genC.h:87
#define list_undefined_p(c)
Return if a list is undefined.
Definition: newgen_list.h:75
static void reset_live_out_summary_engine_context(live_out_summary_engine_context *ctxt)
static void live_out_paths_from_caller_to_callee(entity caller, entity callee, live_out_summary_engine_context *ctxt)
static void set_live_out_summary_engine_context(live_out_summary_engine_context *ctxt, entity callee)
const char * module_local_name(entity e)
Returns the module local user name.
Definition: entity.c:582
struct _newgen_struct_callees_ * callees
Definition: ri.h:55
#define callees_callees(x)
Definition: ri.h:675

References callee, callees_callees, caller_name, db_get_memory_resource(), debug_off, debug_on, FOREACH, fprintf(), free_effects_private_current_context_stack(), gen_length(), ifdebug, live_out_summary_engine_context::l_current_paths, list_undefined_p, live_out_paths_from_caller_to_callee(), make_effects_private_current_context_stack(), module_local_name(), module_name(), module_name_to_entity(), NIL, pips_debug, reset_current_module_entity(), reset_current_module_statement(), reset_live_out_summary_engine_context(), set_current_module_entity(), set_current_module_statement(), set_live_out_summary_engine_context(), and STRING.

+ Here is the call graph for this function:

◆ live_paths_engine()

bool live_paths_engine ( const char *  module_name,
effects_representation_val  representation 
)

Get the code of the module.

Get the various effects and in_effects of the module.

Initialize the map for live_out and live_int paths

Get the live_out_summary_paths of the current module

And stores them as the live out paths of the module statement

Compute the live paths of the module.

Parameters
module_nameodule_name
representationepresentation

Definition at line 1178 of file liveness_analysis_engine.c.

1179 {
1180  debug_on("LIVE_PATHS_DEBUG_LEVEL");
1181  pips_debug(1, "begin\n");
1182 
1184 
1185  /* Get the code of the module. */
1187  db_get_memory_resource(DBR_CODE, module_name, true) );
1189 
1190 
1192  // functions that can be pointed by effects_computation_init_func:
1193  // effects_computation_no_init
1194  // init_convex_in_out_regions
1195  // init_convex_rw_regions
1196  (*effects_computation_init_func)(module_name);
1197 
1198  /* Get the various effects and in_effects of the module. */
1199 
1203 
1207 
1208 
1209  /* Initialize the map for live_out and live_int paths */
1212 
1213  /* Get the live_out_summary_paths of the current module */
1214  list l_sum_live_out = (*db_get_live_out_summary_paths_func)(module_name);
1215  /* And stores them as the live out paths of the module statement */
1217 
1218  /* Compute the live paths of the module. */
1220  init_live_paths_context(&ctxt, representation);
1222  reset_live_paths_context(&ctxt);
1223 
1224  pips_debug(1, "end\n");
1225 
1226  (*db_put_live_out_paths_func)(module_name, get_live_out_paths());
1227  (*db_put_live_in_paths_func)(module_name, get_live_in_paths());
1228 
1230  reset_rw_effects();
1232  reset_in_effects();
1237  // functions that can be pointed by effects_computation_reset_func:
1238  // effects_computation_no_reset
1239  // reset_convex_in_out_regions
1240  // reset_convex_rw_regions
1241  (*effects_computation_reset_func)(module_name);
1242 
1244 
1247  pips_debug(1, "end\n");
1248 
1249  debug_off();
1250  return true;
1251 }
static statement module_statement
Definition: alias_check.c:125
void set_invariant_in_effects(statement_effects)
void set_cumulated_in_effects(statement_effects)
statement_effects(* db_get_invariant_in_effects_func)(const char *)
void set_rw_effects(statement_effects)
void reset_invariant_in_effects(void)
void reset_live_out_paths(void)
void init_live_out_paths(void)
void reset_cumulated_in_effects(void)
statement_effects(* db_get_invariant_rw_effects_func)(const char *)
void init_live_in_paths(void)
void reset_proper_rw_effects(void)
statement_effects get_live_in_paths(void)
void set_proper_rw_effects(statement_effects)
statement_effects(* db_get_cumulated_in_effects_func)(const char *)
statement_effects get_live_out_paths(void)
void set_in_effects(statement_effects)
void reset_in_effects(void)
list effects_dup(list)
void store_live_out_paths_list(statement, list)
void reset_invariant_rw_effects(void)
statement_effects(* db_get_in_effects_func)(const char *)
void set_invariant_rw_effects(statement_effects)
statement_effects(* db_get_proper_rw_effects_func)(const char *)
void reset_rw_effects(void)
statement_effects(* db_get_rw_effects_func)(const char *)
static void init_live_paths_context(live_paths_analysis_context *ctxt, effects_representation_val representation)
static void live_paths_of_module_statement(statement stmt, live_paths_analysis_context *ctxt)
static void reset_live_paths_context(live_paths_analysis_context *ctxt)

References db_get_cumulated_in_effects_func, db_get_in_effects_func, db_get_invariant_in_effects_func, db_get_invariant_rw_effects_func, db_get_memory_resource(), db_get_proper_rw_effects_func, db_get_rw_effects_func, debug_off, debug_on, effects_dup(), free_effects_private_current_context_stack(), get_current_module_statement(), get_live_in_paths(), get_live_out_paths(), init_live_in_paths(), init_live_out_paths(), init_live_paths_context(), live_paths_of_module_statement(), make_effects_private_current_context_stack(), module_name(), module_name_to_entity(), module_statement, pips_debug, reset_cumulated_in_effects(), reset_current_module_entity(), reset_current_module_statement(), reset_in_effects(), reset_invariant_in_effects(), reset_invariant_rw_effects(), reset_live_in_paths(), reset_live_out_paths(), reset_live_paths_context(), reset_proper_rw_effects(), reset_rw_effects(), set_cumulated_in_effects(), set_current_module_entity(), set_current_module_statement(), set_in_effects(), set_invariant_in_effects(), set_invariant_rw_effects(), set_proper_rw_effects(), set_rw_effects(), and store_live_out_paths_list().

+ Here is the call graph for this function:

◆ load_cumulated_in_effects()

effects load_cumulated_in_effects ( statement  )

◆ load_cumulated_in_effects_list()

list load_cumulated_in_effects_list ( statement  )

◆ load_cumulated_references()

effects load_cumulated_references ( statement  )

Referenced by loop_flt().

+ Here is the caller graph for this function:

◆ load_cumulated_rw_effects()

◆ load_cumulated_rw_effects_list()

◆ load_expr_prw_effects()

effects load_expr_prw_effects ( expression  )

Referenced by expr_level_of(), and side_effects_p().

+ Here is the caller graph for this function:

◆ load_in_effects()

effects load_in_effects ( statement  )

◆ load_in_effects_list()

◆ load_invariant_in_effects()

effects load_invariant_in_effects ( statement  )

◆ load_invariant_in_effects_list()

list load_invariant_in_effects_list ( statement  )

◆ load_invariant_rw_effects()

effects load_invariant_rw_effects ( statement  )

◆ load_invariant_rw_effects_list()

list load_invariant_rw_effects_list ( statement  )

◆ load_invariant_rw_pointer_effects()

effects load_invariant_rw_pointer_effects ( statement  )

◆ load_invariant_rw_pointer_effects_list()

list load_invariant_rw_pointer_effects_list ( statement  )

◆ load_live_in_paths()

effects load_live_in_paths ( statement  )

◆ load_live_in_paths_list()

◆ load_live_out_paths()

effects load_live_out_paths ( statement  )

◆ load_live_out_paths_list()

◆ load_live_out_regions()

effects load_live_out_regions ( statement  )

◆ load_live_out_regions_list()

list load_live_out_regions_list ( statement  )

Referenced by copy_write_statement_with_cumulated_regions().

+ Here is the caller graph for this function:

◆ load_out_effects()

effects load_out_effects ( statement  )

◆ load_out_effects_list()

list load_out_effects_list ( statement  )

Referenced by compute_directive_regions(), current_entity_is_used_later_p(), and step_print_directives_regions().

+ Here is the caller graph for this function:

◆ load_proper_references()

effects load_proper_references ( statement  )

Referenced by build_reduction_of_variable(), no_other_effects_on_references(), and safe_effects_for_reductions().

+ Here is the caller graph for this function:

◆ load_proper_rw_effects()

effects load_proper_rw_effects ( statement  )

Referenced by add_values_for_simple_effects_of_statement(), do_statement_insertion(), and functionnal_on().

+ Here is the caller graph for this function:

◆ load_proper_rw_effects_list()

◆ load_proper_rw_pointer_effects()

effects load_proper_rw_pointer_effects ( statement  )

◆ load_proper_rw_pointer_effects_list()

list load_proper_rw_pointer_effects_list ( statement  )

◆ load_rw_effects()

effects load_rw_effects ( statement  )

◆ load_rw_effects_list()

◆ load_rw_pointer_effects()

effects load_rw_pointer_effects ( statement  )

◆ load_rw_pointer_effects_list()

list load_rw_pointer_effects_list ( statement  )

◆ load_statement_cumulated_in_regions()

list load_statement_cumulated_in_regions ( statement  )

◆ load_statement_in_regions()

◆ load_statement_inv_in_regions()

list load_statement_inv_in_regions ( statement  )

◆ load_statement_inv_regions()

list load_statement_inv_regions ( statement  )

◆ load_statement_local_regions()

◆ load_statement_out_regions()

◆ load_statement_proper_regions()

list load_statement_proper_regions ( statement  )

◆ load_undefined_context()

transformer load_undefined_context ( statement  )

◆ load_undefined_transformer()

transformer load_undefined_transformer ( statement  )

◆ load_useful_variables_effects()

effects load_useful_variables_effects ( entity  )

◆ loop_undefined_descriptor_make()

descriptor loop_undefined_descriptor_make ( loop  )

Referenced by live_in_paths_of_loop().

+ Here is the caller graph for this function:

◆ make_anywhere_effect()

◆ make_anywhere_read_memory_effect()

effect make_anywhere_read_memory_effect ( void  )

◆ make_anywhere_read_write_memory_effects()

list make_anywhere_read_write_memory_effects ( void  )

◆ make_anywhere_write_memory_effect()

effect make_anywhere_write_memory_effect ( void  )

◆ make_declaration_effect()

effect make_declaration_effect ( entity  ,
bool   
)

◆ make_effects_for_array_declarations()

list make_effects_for_array_declarations ( list  )

◆ make_effects_private_current_context_stack()

void make_effects_private_current_context_stack ( void  )

Referenced by generic_points_to_analysis(), live_out_summary_paths_engine(), live_paths_engine(), and step_translate_and_map().

+ Here is the caller graph for this function:

◆ make_effects_private_current_stmt_stack()

void make_effects_private_current_stmt_stack ( void  )

utils.c

◆ make_generic_anywhere_effect()

effect make_generic_anywhere_effect ( action  ,
reference   
)

◆ make_null_pointer_value_effect()

effect make_null_pointer_value_effect ( action  )

Referenced by generic_effect_find_aliases_with_simple_pointer_values().

+ Here is the caller graph for this function:

◆ make_some_anywhere_effect()

effect make_some_anywhere_effect ( action  ,
entity   
)

◆ make_typed_anywhere_effect()

effect make_typed_anywhere_effect ( action  ,
type   
)

◆ make_undefined_pointer_value_effect()

effect make_undefined_pointer_value_effect ( action  )

Referenced by generic_effect_find_aliases_with_simple_pointer_values().

+ Here is the caller graph for this function:

◆ new_generic_proper_effects_of_complex_address_conditional_op()

list new_generic_proper_effects_of_complex_address_conditional_op ( list  ,
list ,
bool   
)

◆ normalizable_and_linear_loop_p()

bool normalizable_and_linear_loop_p ( entity  ,
range   
)

Referenced by convex_in_effect_loop_range_fix(), live_in_paths_of_loop(), and normalizable_loop_p_retrieved().

+ Here is the caller graph for this function:

◆ null_pointer_value_effect_p()

bool null_pointer_value_effect_p ( effect  )

Referenced by single_pointer_assignment_to_post_pv().

+ Here is the caller graph for this function:

◆ old_generic_proper_effects_of_complex_address_conditional_op()

list old_generic_proper_effects_of_complex_address_conditional_op ( list  ,
list ,
bool   
)

◆ out_effects_engine()

bool out_effects_engine ( const char *  ,
effects_representation_val   
)

◆ out_effects_undefined_p()

bool out_effects_undefined_p ( void  )

◆ pointer_effects_to_constant_path_effects()

list pointer_effects_to_constant_path_effects ( list  )

◆ print_source_or_code_effects_engine()

bool print_source_or_code_effects_engine ( const char *  ,
string  ,
bool   
)

◆ print_source_or_code_with_any_effects_engine()

bool print_source_or_code_with_any_effects_engine ( const char *  ,
string  ,
string  ,
string  ,
bool   
)

◆ proper_effects_combine()

list proper_effects_combine ( list  ,
bool   
)

◆ proper_effects_contract()

list proper_effects_contract ( list  )

◆ proper_effects_engine()

bool proper_effects_engine ( const char *  )

◆ proper_effects_error_handler()

void proper_effects_error_handler ( void  )

Referenced by reset_static_phase_variables().

+ Here is the caller graph for this function:

◆ proper_effects_of_module_statement()

void proper_effects_of_module_statement ( statement  )

Referenced by drop_dummy_loops().

+ Here is the caller graph for this function:

◆ proper_references_undefined_p()

bool proper_references_undefined_p ( void  )

mappings.c

◆ proper_rw_effects_undefined_p()

bool proper_rw_effects_undefined_p ( void  )

Referenced by init_use_proper_effects().

+ Here is the caller graph for this function:

◆ proper_rw_pointer_effects_undefined_p()

bool proper_rw_pointer_effects_undefined_p ( void  )

◆ proper_to_summary_effects()

◆ r_effect_pointer_type_p()

bool r_effect_pointer_type_p ( effect  ,
list  ,
type   
)

◆ r_r_combinable_p()

bool r_r_combinable_p ( effect  ,
effect   
)

◆ r_w_combinable_p()

◆ recursive_type_to_effects()

list recursive_type_to_effects ( type  ,
set   
)

◆ region_weakly_consistent_p()

bool region_weakly_consistent_p ( effect  )

◆ regions_weakly_consistent_p()

bool regions_weakly_consistent_p ( list  )

◆ reset_action_interpretation()

◆ reset_cumulated_in_effects()

void reset_cumulated_in_effects ( void  )

Referenced by live_paths_engine().

+ Here is the caller graph for this function:

◆ reset_cumulated_references()

void reset_cumulated_references ( void  )

Referenced by reset_resources_for_module().

+ Here is the caller graph for this function:

◆ reset_cumulated_rw_effects()

void reset_cumulated_rw_effects ( void  )

Referenced by add_alias_pairs_for_this_caller(), alias_check(), alias_classes(), alias_lists(), alias_pairs(), aliases_text(), any_complexities(), array_expansion(), atomizer(), bdsc_code_instrumentation(), call_site_to_module_precondition_text(), clean_declarations(), comp_regions(), computation_intensity(), continuation_conditions(), copy_value_of_write(), copy_value_of_write_with_cumulated_regions(), delay_communications(), delay_load_communications(), delay_store_communications(), do_inlining(), do_kernelize(), dsc_code_parallelization(), forward_substitute(), freia_compiler(), generate_starpu_pragma(), generate_two_addresses_code(), generic_module_name_to_transformers(), generic_print_xml_application(), get_any_comp_regions_text(), get_continuation_condition_text(), get_semantic_text(), gpu_ify(), gpu_memory(), hbdsc_parallelization(), initial_precondition(), isolate_statement(), kernel_data_mapping(), kernel_load_store_engine(), loop_expansion(), module_name_to_preconditions(), module_name_to_total_preconditions(), new_atomizer(), normalize_microcode(), old__gpu_ify(), out_regions_from_caller_to_callee(), outline(), partial_eval(), perform_icm_association(), phrase_comEngine_distributor(), phrase_distributor(), phrase_distributor_control_code(), phrase_remove_dependences(), pragma_outliner(), print_initial_precondition(), print_program_precondition(), program_precondition(), redundant_load_store_elimination(), reset_convex_in_out_regions(), reset_convex_rw_regions(), reset_convex_summary_in_out_regions(), reset_convex_summary_rw_regions(), rice_dependence_graph(), run_inlining(), safescale_distributor(), safescale_module_analysis(), scalopify(), scalopragma(), sequence_dependence_graph(), sesam_buffers_processing(), sesamify(), simdizer_auto_tile(), solve_hardware_constraints(), spire_distributed_unstructured_to_structured(), statement_insertion(), step_compile_analysed_module(), summary_precondition(), summary_total_postcondition(), symbolic_tiling(), taskify(), and update_precondition_with_call_site_preconditions().

◆ reset_effects_private_current_context_stack()

void reset_effects_private_current_context_stack ( void  )

Referenced by generic_points_to_analysis().

+ Here is the caller graph for this function:

◆ reset_effects_private_current_stmt_stack()

void reset_effects_private_current_stmt_stack ( void  )

◆ reset_expr_prw_effects()

void reset_expr_prw_effects ( void  )

◆ reset_generic_prettyprints()

void reset_generic_prettyprints ( void  )

◆ reset_in_effects()

◆ reset_invariant_in_effects()

void reset_invariant_in_effects ( void  )

Referenced by live_paths_engine().

+ Here is the caller graph for this function:

◆ reset_invariant_rw_effects()

void reset_invariant_rw_effects ( void  )

Referenced by live_paths_engine().

+ Here is the caller graph for this function:

◆ reset_invariant_rw_pointer_effects()

void reset_invariant_rw_pointer_effects ( void  )

◆ reset_live_in_paths()

void reset_live_in_paths ( void  )

Referenced by live_in_summary_paths_engine(), live_out_region_engine(), and live_paths_engine().

+ Here is the caller graph for this function:

◆ reset_live_out_paths()

void reset_live_out_paths ( void  )

Referenced by live_out_paths_from_caller_to_callee(), live_out_region_engine(), and live_paths_engine().

+ Here is the caller graph for this function:

◆ reset_live_out_regions()

void reset_live_out_regions ( void  )

Referenced by copy_value_of_write_with_cumulated_regions(), and live_out_region_engine().

+ Here is the caller graph for this function:

◆ reset_out_effects()

◆ reset_out_summary_effects_list()

void reset_out_summary_effects_list ( void  )

out_effects_engine.c

Referenced by regions_to_loops().

+ Here is the caller graph for this function:

◆ reset_proper_references()

void reset_proper_references ( void  )

Referenced by cumulated_reductions(), and proper_reductions().

+ Here is the caller graph for this function:

◆ reset_proper_rw_effects()

void reset_proper_rw_effects ( void  )

Referenced by add_alias_pairs_for_this_caller(), alias_check(), alias_classes(), alias_lists(), alias_pairs(), aliases_text(), any_complexities(), array_bound_check_top_down(), array_dfg(), bdsc_code_instrumentation(), comp_regions(), continuation_conditions(), copy_value_of_write(), copy_value_of_write_with_cumulated_regions(), deatomizer(), delay_communications(), delay_load_communications(), delay_store_communications(), drop_dummy_loops(), dsc_code_parallelization(), filter_proper_effects(), flinter(), forward_substitute(), freia_compiler(), generate_starpu_pragma(), generic_module_name_to_transformers(), generic_print_xml_application(), get_any_comp_regions_text(), get_semantic_text(), hbdsc_parallelization(), hpfc_directives_handler(), icm_codegen(), if_conversion_compact(), ikernel_load_store(), init_convex_in_out_regions(), init_convex_rw_regions(), init_convex_summary_in_out_regions(), init_convex_summary_rw_regions(), initial_precondition(), isolate_statement(), kernel_data_mapping(), kernel_load_store_engine(), live_paths_engine(), module_name_to_preconditions(), module_name_to_total_preconditions(), out_regions_from_caller_to_callee(), partial_eval(), phrase_comEngine_distributor(), phrase_distributor(), phrase_distributor_control_code(), pragma_outliner(), program_precondition(), redundant_load_store_elimination(), reset_effects(), safescale_distributor(), safescale_module_analysis(), scalar_renaming(), sequence_dependence_graph(), simdizer(), solve_hardware_constraints(), spire_distributed_unstructured_to_structured(), statement_insertion(), summary_precondition(), summary_total_postcondition(), taskify(), and update_precondition_with_call_site_preconditions().

◆ reset_proper_rw_pointer_effects()

void reset_proper_rw_pointer_effects ( void  )

◆ reset_rw_effects()

◆ reset_rw_pointer_effects()

void reset_rw_pointer_effects ( void  )

◆ reset_useful_variables_effects()

void reset_useful_variables_effects ( void  )

◆ rw_effects_engine()

bool rw_effects_engine ( const char *  )

◆ rw_effects_of_module_statement()

void rw_effects_of_module_statement ( statement  )

◆ rw_effects_undefined_p()

bool rw_effects_undefined_p ( void  )

◆ rw_pointer_effects_undefined_p()

bool rw_pointer_effects_undefined_p ( void  )

◆ safe_user_call_to_points_to_interprocedural_binding_set()

set safe_user_call_to_points_to_interprocedural_binding_set ( entity  ,
list   
)

◆ set_a_generic_prettyprint()

void set_a_generic_prettyprint ( string  ,
bool  ,
gen_chunk ,
generic_text_function  ,
generic_prettyprint_function  ,
generic_attachment_function   
)

◆ set_action_interpretation()

◆ set_constant_paths_p()

void set_constant_paths_p ( bool  )

◆ set_contracted_proper_effects()

void set_contracted_proper_effects ( bool  )

end of effects-generic-local.h

cproto-generated files proper_effects_engine.c

Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().

+ Here is the caller graph for this function:

◆ set_contracted_rw_effects()

void set_contracted_rw_effects ( bool  )

◆ set_cumulated_in_effects()

void set_cumulated_in_effects ( statement_effects  )

Referenced by live_paths_engine().

+ Here is the caller graph for this function:

◆ set_cumulated_references()

void set_cumulated_references ( statement_effects  )

Referenced by set_resources_for_module().

+ Here is the caller graph for this function:

◆ set_cumulated_rw_effects()

void set_cumulated_rw_effects ( statement_effects  )

Referenced by add_alias_pairs_for_this_caller(), alias_check(), alias_classes(), alias_lists(), alias_pairs(), aliases_text(), any_complexities(), array_expansion(), atomizer(), bdsc_code_instrumentation(), call_site_to_module_precondition_text(), clean_declarations(), comp_regions(), computation_intensity(), continuation_conditions(), copy_value_of_write(), copy_value_of_write_with_cumulated_regions(), delay_communications(), delay_load_communications(), delay_store_communications(), do_inlining(), do_kernelize(), dsc_code_parallelization(), forward_substitute(), freia_compiler(), generate_starpu_pragma(), generate_two_addresses_code(), generic_module_name_to_transformers(), generic_print_xml_application(), get_any_comp_regions_text(), get_continuation_condition_text(), get_semantic_text(), gpu_ify(), gpu_memory(), hbdsc_parallelization(), init_convex_in_out_regions(), init_convex_rw_regions(), init_convex_summary_in_out_regions(), init_convex_summary_rw_regions(), initial_precondition(), isolate_statement(), kernel_data_mapping(), kernel_load_store_engine(), loop_expansion(), module_name_to_preconditions(), module_name_to_total_preconditions(), new_atomizer(), normalize_microcode(), old__gpu_ify(), out_regions_from_caller_to_callee(), outline(), partial_eval(), perform_icm_association(), phrase_comEngine_distributor(), phrase_distributor(), phrase_distributor_control_code(), phrase_remove_dependences(), pragma_outliner(), print_initial_precondition(), print_program_precondition(), program_precondition(), redundant_load_store_elimination(), rice_dependence_graph(), run_inlining(), safescale_distributor(), safescale_module_analysis(), scalopify(), scalopragma(), sequence_dependence_graph(), sesam_buffers_processing(), sesamify(), simdizer_auto_tile(), solve_hardware_constraints(), spire_distributed_unstructured_to_structured(), statement_insertion(), step_compile_analysed_module(), summary_precondition(), summary_total_postcondition(), symbolic_tiling(), taskify(), and update_precondition_with_call_site_preconditions().

◆ set_descriptor_range_p()

void set_descriptor_range_p ( bool  )

Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().

+ Here is the caller graph for this function:

◆ set_effects_private_current_context_stack()

void set_effects_private_current_context_stack ( stack  )

◆ set_effects_private_current_stmt_stack()

void set_effects_private_current_stmt_stack ( stack  )

◆ set_expr_prw_effects()

void set_expr_prw_effects ( persistant_expression_to_effects  )

◆ set_in_effects()

◆ set_invariant_in_effects()

void set_invariant_in_effects ( statement_effects  )

Referenced by live_paths_engine().

+ Here is the caller graph for this function:

◆ set_invariant_rw_effects()

void set_invariant_rw_effects ( statement_effects  )

Referenced by live_paths_engine().

+ Here is the caller graph for this function:

◆ set_invariant_rw_pointer_effects()

void set_invariant_rw_pointer_effects ( statement_effects  )

◆ set_is_user_view_p()

void set_is_user_view_p ( bool  )

◆ set_live_in_paths()

void set_live_in_paths ( statement_effects  )

Referenced by live_in_summary_paths_engine(), and live_out_region_engine().

+ Here is the caller graph for this function:

◆ set_live_out_paths()

void set_live_out_paths ( statement_effects  )

Referenced by live_out_paths_from_caller_to_callee(), and live_out_region_engine().

+ Here is the caller graph for this function:

◆ set_live_out_regions()

void set_live_out_regions ( statement_effects  )

Referenced by copy_value_of_write_with_cumulated_regions().

+ Here is the caller graph for this function:

◆ set_out_effects()

◆ set_pointer_info_kind()

void set_pointer_info_kind ( pointer_info_val  )

methods.c

◆ set_prettyprint_with_attachments()

void set_prettyprint_with_attachments ( bool  )

◆ set_proper_references()

void set_proper_references ( statement_effects  )

Referenced by cumulated_reductions(), and proper_reductions().

+ Here is the caller graph for this function:

◆ set_proper_rw_effects()

void set_proper_rw_effects ( statement_effects  )

Referenced by add_alias_pairs_for_this_caller(), alias_check(), alias_classes(), alias_lists(), alias_pairs(), aliases_text(), any_complexities(), array_bound_check_top_down(), array_dfg(), array_expansion(), bdsc_code_instrumentation(), comp_regions(), continuation_conditions(), copy_value_of_write(), copy_value_of_write_with_cumulated_regions(), deatomizer(), delay_communications(), delay_load_communications(), delay_store_communications(), dsc_code_parallelization(), filter_proper_effects(), flinter(), forward_substitute(), freia_compiler(), generate_starpu_pragma(), generic_module_name_to_transformers(), generic_print_xml_application(), get_any_comp_regions_text(), get_semantic_text(), hbdsc_parallelization(), hpfc_directives_handler(), icm_codegen(), if_conversion_compact(), ikernel_load_store(), init_convex_in_out_regions(), init_convex_rw_regions(), init_convex_summary_in_out_regions(), init_convex_summary_rw_regions(), init_use_proper_effects(), initial_precondition(), isolate_statement(), kernel_data_mapping(), kernel_load_store_engine(), live_paths_engine(), module_name_to_preconditions(), module_name_to_total_preconditions(), out_regions_from_caller_to_callee(), phrase_comEngine_distributor(), phrase_distributor(), phrase_distributor_control_code(), pragma_outliner(), program_precondition(), redundant_load_store_elimination(), safescale_distributor(), safescale_module_analysis(), scalar_renaming(), sequence_dependence_graph(), set_effects(), simdizer(), solve_hardware_constraints(), spire_distributed_unstructured_to_structured(), statement_insertion(), summary_precondition(), summary_total_postcondition(), taskify(), and update_precondition_with_call_site_preconditions().

◆ set_proper_rw_pointer_effects()

void set_proper_rw_pointer_effects ( statement_effects  )

◆ set_rw_effects()

◆ set_rw_pointer_effects()

void set_rw_pointer_effects ( statement_effects  )

◆ set_useful_variables_effects()

void set_useful_variables_effects ( entity_effects  )

◆ simple_effect_reference_type()

type simple_effect_reference_type ( reference  )

Referenced by c_convex_effects_on_actual_parameter_forward_translation().

+ Here is the caller graph for this function:

◆ some_integer_scalar_read_or_write_effects_p()

bool some_integer_scalar_read_or_write_effects_p ( cons )

Referenced by integer_assign_to_transformer(), and integer_assign_to_transformer_list().

+ Here is the caller graph for this function:

◆ statement_has_a_formal_argument_write_effect_p()

bool statement_has_a_formal_argument_write_effect_p ( statement  )

◆ statement_io_effect_p()

bool statement_io_effect_p ( statement  )

◆ statement_modified_pointers_effects_list()

list statement_modified_pointers_effects_list ( statement  )

◆ store_cumulated_in_effects()

void store_cumulated_in_effects ( statement  ,
effects   
)

◆ store_cumulated_in_effects_list()

void store_cumulated_in_effects_list ( statement  ,
list   
)

◆ store_cumulated_references()

void store_cumulated_references ( statement  ,
effects   
)

◆ store_cumulated_rw_effects()

void store_cumulated_rw_effects ( statement  ,
effects   
)

Referenced by do_simdizer_auto_tile_generate_all_tests().

+ Here is the caller graph for this function:

◆ store_cumulated_rw_effects_list()

void store_cumulated_rw_effects_list ( statement  ,
list   
)

Referenced by freia_shuffle_move_forward(), and outliner_patch_parameters().

+ Here is the caller graph for this function:

◆ store_expr_prw_effects()

void store_expr_prw_effects ( expression  ,
effects   
)

◆ store_in_effects()

void store_in_effects ( statement  ,
effects   
)

◆ store_in_effects_list()

void store_in_effects_list ( statement  ,
list   
)

◆ store_invariant_in_effects()

void store_invariant_in_effects ( statement  ,
effects   
)

◆ store_invariant_in_effects_list()

void store_invariant_in_effects_list ( statement  ,
list   
)

◆ store_invariant_rw_effects()

void store_invariant_rw_effects ( statement  ,
effects   
)

◆ store_invariant_rw_effects_list()

void store_invariant_rw_effects_list ( statement  ,
list   
)

◆ store_invariant_rw_pointer_effects()

void store_invariant_rw_pointer_effects ( statement  ,
effects   
)

◆ store_invariant_rw_pointer_effects_list()

void store_invariant_rw_pointer_effects_list ( statement  ,
list   
)

◆ store_live_in_paths()

void store_live_in_paths ( statement  ,
effects   
)

◆ store_live_in_paths_list()

void store_live_in_paths_list ( statement  ,
list   
)

◆ store_live_out_paths()

void store_live_out_paths ( statement  ,
effects   
)

◆ store_live_out_paths_list()

◆ store_live_out_regions()

void store_live_out_regions ( statement  ,
effects   
)

◆ store_live_out_regions_list()

void store_live_out_regions_list ( statement  ,
list   
)

Referenced by filter_live_out_regions_statement().

+ Here is the caller graph for this function:

◆ store_or_update_cumulated_in_effects()

void store_or_update_cumulated_in_effects ( statement  ,
effects   
)

◆ store_or_update_cumulated_references()

void store_or_update_cumulated_references ( statement  ,
effects   
)

◆ store_or_update_cumulated_rw_effects()

void store_or_update_cumulated_rw_effects ( statement  ,
effects   
)

◆ store_or_update_expr_prw_effects()

void store_or_update_expr_prw_effects ( expression  ,
effects   
)

◆ store_or_update_in_effects()

void store_or_update_in_effects ( statement  ,
effects   
)

◆ store_or_update_invariant_in_effects()

void store_or_update_invariant_in_effects ( statement  ,
effects   
)

◆ store_or_update_invariant_rw_effects()

void store_or_update_invariant_rw_effects ( statement  ,
effects   
)

◆ store_or_update_invariant_rw_pointer_effects()

void store_or_update_invariant_rw_pointer_effects ( statement  ,
effects   
)

◆ store_or_update_live_in_paths()

void store_or_update_live_in_paths ( statement  ,
effects   
)

◆ store_or_update_live_out_paths()

void store_or_update_live_out_paths ( statement  ,
effects   
)

◆ store_or_update_live_out_regions()

void store_or_update_live_out_regions ( statement  ,
effects   
)

◆ store_or_update_out_effects()

void store_or_update_out_effects ( statement  ,
effects   
)

◆ store_or_update_proper_references()

void store_or_update_proper_references ( statement  ,
effects   
)

◆ store_or_update_proper_rw_effects()

void store_or_update_proper_rw_effects ( statement  ,
effects   
)

◆ store_or_update_proper_rw_pointer_effects()

void store_or_update_proper_rw_pointer_effects ( statement  ,
effects   
)

◆ store_or_update_rw_effects()

void store_or_update_rw_effects ( statement  ,
effects   
)

◆ store_or_update_rw_pointer_effects()

void store_or_update_rw_pointer_effects ( statement  ,
effects   
)

◆ store_or_update_useful_variables_effects()

void store_or_update_useful_variables_effects ( entity  ,
effects   
)

◆ store_out_effects()

void store_out_effects ( statement  ,
effects   
)

◆ store_out_effects_list()

void store_out_effects_list ( statement  ,
list   
)

◆ store_proper_references()

void store_proper_references ( statement  ,
effects   
)

◆ store_proper_rw_effects()

void store_proper_rw_effects ( statement  ,
effects   
)

◆ store_proper_rw_effects_list()

void store_proper_rw_effects_list ( statement  ,
list   
)

◆ store_proper_rw_pointer_effects()

void store_proper_rw_pointer_effects ( statement  ,
effects   
)

◆ store_proper_rw_pointer_effects_list()

void store_proper_rw_pointer_effects_list ( statement  ,
list   
)

◆ store_rw_effects()

void store_rw_effects ( statement  ,
effects   
)

◆ store_rw_effects_list()

void store_rw_effects_list ( statement  ,
list   
)

◆ store_rw_pointer_effects()

void store_rw_pointer_effects ( statement  ,
effects   
)

◆ store_rw_pointer_effects_list()

void store_rw_pointer_effects_list ( statement  ,
list   
)

◆ store_statement_cumulated_in_regions()

void store_statement_cumulated_in_regions ( statement  ,
list   
)

◆ store_statement_in_regions()

void store_statement_in_regions ( statement  ,
list   
)

◆ store_statement_inv_in_regions()

void store_statement_inv_in_regions ( statement  ,
list   
)

◆ store_statement_inv_regions()

void store_statement_inv_regions ( statement  ,
list   
)

◆ store_statement_local_regions()

void store_statement_local_regions ( statement  ,
list   
)

◆ store_statement_out_regions()

void store_statement_out_regions ( statement  ,
list   
)

◆ store_statement_proper_regions()

void store_statement_proper_regions ( statement  ,
list   
)

◆ store_useful_variables_effects()

void store_useful_variables_effects ( entity  ,
effects   
)

◆ summary_effects_from_declaration()

list summary_effects_from_declaration ( const char *  )

◆ summary_in_effects_engine()

bool summary_in_effects_engine ( const char *  )

◆ summary_out_effects_engine()

bool summary_out_effects_engine ( const char *  )

◆ summary_rw_effects_engine()

bool summary_rw_effects_engine ( const char *  )

◆ transformer_remove_variable_and_dup()

transformer transformer_remove_variable_and_dup ( transformer  ,
entity   
)

◆ type_to_effects()

list type_to_effects ( type  )

◆ undefined_pointer_value_effect_p()

bool undefined_pointer_value_effect_p ( effect  )

Referenced by single_pointer_assignment_to_post_pv().

+ Here is the caller graph for this function:

◆ update_cummulated_in_effects_list()

void update_cummulated_in_effects_list ( statement  ,
list   
)

◆ update_cumulated_in_effects()

void update_cumulated_in_effects ( statement  ,
effects   
)

◆ update_cumulated_references()

void update_cumulated_references ( statement  ,
effects   
)

◆ update_cumulated_rw_effects()

void update_cumulated_rw_effects ( statement  ,
effects   
)

◆ update_cumulated_rw_effects_list()

void update_cumulated_rw_effects_list ( statement  ,
list   
)

Referenced by do_isolate_statement_preconditions_satisified_p().

+ Here is the caller graph for this function:

◆ update_expr_prw_effects()

void update_expr_prw_effects ( expression  ,
effects   
)

◆ update_in_effects()

void update_in_effects ( statement  ,
effects   
)

◆ update_in_effects_list()

void update_in_effects_list ( statement  ,
list   
)

◆ update_invariant_in_effects()

void update_invariant_in_effects ( statement  ,
effects   
)

◆ update_invariant_in_effects_list()

void update_invariant_in_effects_list ( statement  ,
list   
)

◆ update_invariant_rw_effects()

void update_invariant_rw_effects ( statement  ,
effects   
)

◆ update_invariant_rw_effects_list()

void update_invariant_rw_effects_list ( statement  ,
list   
)

◆ update_invariant_rw_pointer_effects()

void update_invariant_rw_pointer_effects ( statement  ,
effects   
)

◆ update_invariant_rw_pointer_effects_list()

void update_invariant_rw_pointer_effects_list ( statement  ,
list   
)

◆ update_last_reference_subscript()

void update_last_reference_subscript ( reference  ,
expression   
)

◆ update_live_in_paths()

void update_live_in_paths ( statement  ,
effects   
)

◆ update_live_in_paths_list()

void update_live_in_paths_list ( statement  ,
list   
)

◆ update_live_out_paths()

void update_live_out_paths ( statement  ,
effects   
)

◆ update_live_out_paths_list()

void update_live_out_paths_list ( statement  ,
list   
)

◆ update_live_out_regions()

void update_live_out_regions ( statement  ,
effects   
)

◆ update_live_out_regions_list()

void update_live_out_regions_list ( statement  ,
list   
)

◆ update_out_effects()

void update_out_effects ( statement  ,
effects   
)

◆ update_out_effects_list()

void update_out_effects_list ( statement  ,
list   
)

◆ update_out_summary_effects_list()

void update_out_summary_effects_list ( list  )

◆ update_proper_references()

void update_proper_references ( statement  ,
effects   
)

◆ update_proper_rw_effects()

void update_proper_rw_effects ( statement  ,
effects   
)

◆ update_proper_rw_effects_list()

void update_proper_rw_effects_list ( statement  ,
list   
)

◆ update_proper_rw_pointer_effects()

void update_proper_rw_pointer_effects ( statement  ,
effects   
)

◆ update_proper_rw_pointer_effects_list()

void update_proper_rw_pointer_effects_list ( statement  ,
list   
)

◆ update_rw_effects()

void update_rw_effects ( statement  ,
effects   
)

◆ update_rw_effects_list()

void update_rw_effects_list ( statement  ,
list   
)

◆ update_rw_pointer_effects()

void update_rw_pointer_effects ( statement  ,
effects   
)

◆ update_rw_pointer_effects_list()

void update_rw_pointer_effects_list ( statement  ,
list   
)

◆ update_statement_inv_in_regions()

void update_statement_inv_in_regions ( statement  ,
list   
)

◆ update_statement_inv_regions()

void update_statement_inv_regions ( statement  ,
list   
)

◆ update_statement_local_regions()

void update_statement_local_regions ( statement  ,
list   
)

◆ update_useful_variables_effects()

void update_useful_variables_effects ( entity  ,
effects   
)

◆ useful_variables_effects_undefined_p()

bool useful_variables_effects_undefined_p ( void  )

◆ vect_debug_entity_name()

string vect_debug_entity_name ( entity  )

◆ w_r_combinable_p()

◆ w_w_combinable_p()

bool w_w_combinable_p ( effect  ,
effect   
)

Referenced by compute_send_regions(), internal_compute_distribution_context(), MCW(), and test_dependence_using_regions().

+ Here is the caller graph for this function:

Variable Documentation

◆ attach_effects_decoration_to_text_func

void(* attach_effects_decoration_to_text_func) (text) ( text  )
extern

◆ c_effects_on_actual_parameter_forward_translation_func

list(* c_effects_on_actual_parameter_forward_translation_func) (entity, expression, entity, list, transformer) ( entity  ,
expression  ,
entity  ,
list  ,
transformer   
)
extern

◆ c_effects_on_formal_parameter_backward_translation_func

list(* c_effects_on_formal_parameter_backward_translation_func) (list, expression, transformer) ( list  ,
expression  ,
transformer   
)
extern

◆ cell_preceding_p_func

bool(* cell_preceding_p_func) (cell, descriptor, cell, descriptor, bool, bool *) ( cell  ,
descriptor  ,
cell  ,
descriptor  ,
bool  ,
bool  
)
extern

◆ db_get_cumulated_in_effects_func

statement_effects(* db_get_cumulated_in_effects_func) (const char *) ( const char *  )
extern

◆ db_get_in_effects_func

statement_effects(* db_get_in_effects_func) (const char *) ( const char *  )
extern

◆ db_get_invariant_in_effects_func

statement_effects(* db_get_invariant_in_effects_func) (const char *) ( const char *  )
extern

◆ db_get_invariant_rw_effects_func

statement_effects(* db_get_invariant_rw_effects_func) (const char *) ( const char *  )
extern

◆ db_get_live_in_paths_func

statement_effects(* db_get_live_in_paths_func) (const char *) ( const char *  )
extern

◆ db_get_live_in_summary_paths_func

list(* db_get_live_in_summary_paths_func) (const char *) ( const char *  )
extern

◆ db_get_live_out_paths_func

statement_effects(* db_get_live_out_paths_func) (const char *) ( const char *  )
extern

◆ db_get_live_out_summary_paths_func

list(* db_get_live_out_summary_paths_func) (const char *) ( const char *  )
extern

◆ db_get_out_effects_func

statement_effects(* db_get_out_effects_func) (const char *) ( const char *  )
extern

◆ db_get_proper_rw_effects_func

statement_effects(* db_get_proper_rw_effects_func) (const char *) ( const char *  )
extern

◆ db_get_rw_effects_func

statement_effects(* db_get_rw_effects_func) (const char *) ( const char *  )
extern

◆ db_get_summary_in_effects_func

list(* db_get_summary_in_effects_func) (const char *) ( const char *  )
extern

◆ db_get_summary_out_effects_func

list(* db_get_summary_out_effects_func) (const char *) ( const char *  )
extern

◆ db_get_summary_rw_effects_func

list(* db_get_summary_rw_effects_func) (const char *) ( const char *  )
extern

◆ db_get_useful_variables_effects_func

entity_effects(* db_get_useful_variables_effects_func) (const char *) ( const char *  )
extern

◆ db_put_cumulated_in_effects_func

void(* db_put_cumulated_in_effects_func) (const char *, statement_effects) ( const char *  ,
statement_effects   
)
extern

◆ db_put_in_effects_func

void(* db_put_in_effects_func) (const char *, statement_effects) ( const char *  ,
statement_effects   
)
extern

◆ db_put_invariant_in_effects_func

void(* db_put_invariant_in_effects_func) (const char *, statement_effects) ( const char *  ,
statement_effects   
)
extern

◆ db_put_invariant_rw_effects_func

void(* db_put_invariant_rw_effects_func) (const char *, statement_effects) ( const char *  ,
statement_effects   
)
extern

◆ db_put_live_in_paths_func

void(* db_put_live_in_paths_func) (const char *, statement_effects) ( const char *  ,
statement_effects   
)
extern

◆ db_put_live_in_summary_paths_func

void(* db_put_live_in_summary_paths_func) (const char *, list) ( const char *  ,
list   
)
extern

◆ db_put_live_out_paths_func

void(* db_put_live_out_paths_func) (const char *, statement_effects) ( const char *  ,
statement_effects   
)
extern

◆ db_put_live_out_summary_paths_func

void(* db_put_live_out_summary_paths_func) (const char *, list) ( const char *  ,
list   
)
extern

◆ db_put_out_effects_func

void(* db_put_out_effects_func) (const char *, statement_effects) ( const char *  ,
statement_effects   
)
extern

◆ db_put_proper_rw_effects_func

void(* db_put_proper_rw_effects_func) (const char *, statement_effects) ( const char *  ,
statement_effects   
)
extern

◆ db_put_rw_effects_func

void(* db_put_rw_effects_func) (const char *, statement_effects) ( const char *  ,
statement_effects   
)
extern

◆ db_put_summary_in_effects_func

void(* db_put_summary_in_effects_func) (const char *, list) ( const char *  ,
list   
)
extern

◆ db_put_summary_out_effects_func

void(* db_put_summary_out_effects_func) (const char *, list) ( const char *  ,
list   
)
extern

◆ db_put_summary_rw_effects_func

void(* db_put_summary_rw_effects_func) (const char *, list) ( const char *  ,
list   
)
extern

◆ db_put_useful_variables_effects_func

void(* db_put_useful_variables_effects_func) (const char *, entity_effects) ( const char *  ,
entity_effects   
)
extern

◆ effect_add_expression_dimension_func

void(* effect_add_expression_dimension_func) (effect eff, expression exp) ( effect  eff,
expression  exp 
)
extern

◆ effect_change_ith_dimension_expression_func

void(* effect_change_ith_dimension_expression_func) (effect eff, expression exp, int i) ( effect  eff,
expression  exp,
int  i 
)
extern

◆ effect_consistent_p_func

bool(* effect_consistent_p_func) (effect) ( effect  )
extern

◆ effect_descriptor_interprocedural_translation_op

void(* effect_descriptor_interprocedural_translation_op) (effect) ( effect  )
extern

◆ effect_dup_func

◆ effect_free_func

void(* effect_free_func) (effect eff) ( effect  eff)
extern

◆ effect_prettyprint_func

void(* effect_prettyprint_func) (effect) ( effect  )
extern

◆ effect_to_constant_path_effects_func

list(* effect_to_constant_path_effects_func) (effect) ( effect  )
extern

◆ effect_to_store_independent_effect_list_func

list(* effect_to_store_independent_effect_list_func) (effect, bool) ( effect  ,
bool   
)
extern

◆ effect_union_op

effect(* effect_union_op) (effect, effect) ( effect  ,
effect   
)
extern

◆ effects_computation_init_func

void(* effects_computation_init_func) (const char *) ( const char *  )
extern

◆ effects_computation_reset_func

void(* effects_computation_reset_func) (const char *) ( const char *  )
extern

◆ effects_descriptor_normalize_func

void(* effects_descriptor_normalize_func) (list) ( list  )
extern

◆ effects_descriptors_variable_change_func

list(* effects_descriptors_variable_change_func) (list, entity, entity) ( list  ,
entity  ,
entity   
)
extern

◆ effects_inf_difference_op

list(* effects_inf_difference_op) (list, list, bool(*eff1_eff2_combinable_p)(effect, effect)) ( list  ,
list  ,
bool(*)(effect, effect eff1_eff2_combinable_p 
)
extern

◆ effects_intersection_op

list(* effects_intersection_op) (list, list, bool(*eff1_eff2_combinable_p)(effect, effect)) ( list  ,
list  ,
bool(*)(effect, effect eff1_eff2_combinable_p 
)
extern

◆ effects_local_to_global_translation_op

list(* effects_local_to_global_translation_op) (list) ( list  )
extern

◆ effects_loop_normalize_func

list(* effects_loop_normalize_func) (list, entity, range, entity *, descriptor, bool) ( list  ,
entity  ,
range  ,
entity ,
descriptor  ,
bool   
)
extern

◆ effects_precondition_composition_op

list(* effects_precondition_composition_op) (list, transformer, bool) ( list  ,
transformer  ,
bool   
)
extern

◆ effects_prettyprint_func

void(* effects_prettyprint_func) (list) ( list  )
extern

◆ effects_sup_difference_op

list(* effects_sup_difference_op) (list, list, bool(*eff1_eff2_combinable_p)(effect, effect)) ( list  ,
list  ,
bool(*)(effect, effect eff1_eff2_combinable_p 
)
extern

◆ effects_test_union_op

list(* effects_test_union_op) (list, list, bool(*eff1_eff2_combinable_p)(effect, effect)) ( list  ,
list  ,
bool(*)(effect, effect eff1_eff2_combinable_p 
)
extern

◆ effects_to_text_func

text(* effects_to_text_func) (list) ( list  )
extern

◆ effects_transformer_composition_op

list(* effects_transformer_composition_op) (list, transformer) ( list  ,
transformer   
)
extern

◆ effects_transformer_inverse_composition_op

list(* effects_transformer_inverse_composition_op) (list, transformer) ( list  ,
transformer   
)
extern

◆ effects_translation_end_func

void(* effects_translation_end_func) (void) ( void  )
extern

◆ effects_translation_init_func

void(* effects_translation_init_func) (entity, list, bool) ( entity  ,
list  ,
bool   
)
extern

◆ effects_union_op

list(* effects_union_op) (list, list, bool(*eff1_eff2_combinable_p)(effect, effect)) ( list  ,
list  ,
bool(*)(effect, effect eff1_eff2_combinable_p 
)
extern

◆ effects_union_over_range_op

list(* effects_union_over_range_op) (list, entity, range, descriptor) ( list  ,
entity  ,
range  ,
descriptor   
)
extern

◆ empty_context_test

◆ eval_cell_with_points_to_func

list(* eval_cell_with_points_to_func) (cell, descriptor, list, bool *, transformer) ( cell  ,
descriptor  ,
list  ,
bool ,
transformer   
)
extern

◆ fortran_effects_backward_translation_op

list(* fortran_effects_backward_translation_op) (entity, list, list, transformer) ( entity  ,
list  ,
list  ,
transformer   
)
extern

◆ fortran_effects_forward_translation_op

list(* fortran_effects_forward_translation_op) (entity, list, list, transformer) ( entity  ,
list  ,
list  ,
transformer   
)
extern

◆ load_completed_transformer_func

transformer(* load_completed_transformer_func) (statement) ( statement  )
extern

◆ load_context_func

◆ load_transformer_func

◆ loop_descriptor_make_func

◆ loop_range_in_effect_func

void(* loop_range_in_effect_func) (loop, list *, list *, bool(*)(effect, effect), entity *, range) ( loop  ,
list ,
list ,
bool(*)(effect, effect ,
entity ,
range   
)
extern

◆ proper_to_summary_effect_func

effect(* proper_to_summary_effect_func) (effect) ( effect  )
extern

◆ reference_to_effect_func

◆ stmt_strongly_feasible_p_func

bool(* stmt_strongly_feasible_p_func) (statement) ( statement  )
extern

◆ vector_to_descriptor_func

descriptor(* vector_to_descriptor_func) (Pvecteur) ( Pvecteur  )
extern