PIPS
|
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "genC.h"
#include "linear.h"
#include "misc.h"
#include "properties.h"
#include "ri.h"
#include "ri-util.h"
#include "workspace-util.h"
#include "prettyprint.h"
#include "effects.h"
#include "effects-util.h"
#include "transformer.h"
Go to the source code of this file.
add the couple (e, address_of_value)
add its name
Definition at line 1309 of file value.c.
References ADDRESS_OF_SUFFIX, concatenate(), copy_type(), entity_domain, entity_name, entity_undefined, entity_user_name(), gen_find_tabulated(), hash_entity_to_user_value_name, hash_get(), hash_put(), hash_reference_to_address_of_value, HASH_UNDEFINED_VALUE, hash_value_to_name, is_storage_rom, make_entity, make_storage(), pips_internal_error, reference_to_string(), reference_variable, strdup(), UU, value_to_variable(), and value_undefined.
add_new_value_name(e);
Definition at line 1495 of file value.c.
References entity_to_intermediate_value(), entity_undefined, hash_entity_to_intermediate_value, hash_get(), hash_put(), HASH_UNDEFINED_VALUE, and pips_assert.
Referenced by add_interprocedural_value_entities().
void add_intermediate_value | ( | entity | e | ) |
get a new intermediate value, if necessary
add its (external) name
Definition at line 1476 of file value.c.
References concatenate(), entity_name, entity_type, hash_entity_to_intermediate_value, hash_get(), hash_put(), HASH_UNDEFINED_VALUE, hash_value_to_name, INTERMEDIATE_VALUE_SUFFIX, make_local_intermediate_value_entity(), and strdup().
Referenced by add_interprocedural_value_entities(), add_or_kill_equivalenced_variables(), convex_in_effect_loop_range_fix(), and interlaced_basic_workchunk_regions_p().
void add_local_intermediate_value | ( | entity | e | ) |
get a new intermediate value, if necessary
add its (external) name
Definition at line 1526 of file value.c.
References concatenate(), entity_name, entity_type, hash_entity_to_intermediate_value, hash_get(), hash_put(), HASH_UNDEFINED_VALUE, hash_value_to_name, INTERMEDIATE_VALUE_SUFFIX, make_local_intermediate_value_entity(), and strdup().
Referenced by add_intraprocedural_value_entities_unconditionally().
void add_local_old_value | ( | entity | e | ) |
get a new old value, if necessary
add its (external) name
Definition at line 1509 of file value.c.
References concatenate(), entity_name, entity_type, hash_entity_to_old_value, hash_get(), hash_put(), HASH_UNDEFINED_VALUE, hash_value_to_name, make_local_old_value_entity(), OLD_VALUE_SUFFIX, and strdup().
Referenced by add_intraprocedural_value_entities_unconditionally().
add_new_value_name(e);
Definition at line 1396 of file value.c.
References entity_name, entity_to_new_value(), entity_undefined, hash_entity_to_new_value, hash_get(), hash_put(), HASH_UNDEFINED_VALUE, pips_assert, and pips_debug.
Referenced by add_interprocedural_new_value_entity(), and add_interprocedural_value_entities().
void add_new_value | ( | entity | e | ) |
Definition at line 1386 of file value.c.
References add_new_value_name(), entity_name, hash_entity_to_new_value, hash_get(), hash_put(), HASH_UNDEFINED_VALUE, and pips_debug.
Referenced by add_interprocedural_new_value_entity(), add_interprocedural_value_entities(), add_intraprocedural_value_entities_unconditionally(), and add_or_kill_equivalenced_variables().
|
static |
HASH TABLE INITIALIZATION.
void add_new_value_name(entity e): add a new value name for entity e
Definition at line 1254 of file value.c.
References concatenate(), entity_name, free(), hash_get(), hash_put(), HASH_UNDEFINED_VALUE, hash_value_to_name, NEW_VALUE_SUFFIX, pips_debug, and strdup().
Referenced by add_new_value().
add_new_value_name(e);
Definition at line 1463 of file value.c.
References entity_to_old_value(), entity_undefined, hash_entity_to_old_value, hash_get(), hash_put(), HASH_UNDEFINED_VALUE, and pips_assert.
Referenced by add_interprocedural_value_entities().
void add_old_value | ( | entity | e | ) |
find the old value entity if possible, else, generate it
add the couple (e, old_value)
add its name
Definition at line 1440 of file value.c.
References concatenate(), copy_type(), entity_domain, entity_name, entity_type, entity_undefined, gen_find_tabulated(), hash_entity_to_old_value, hash_get(), hash_put(), HASH_UNDEFINED_VALUE, hash_value_to_name, is_storage_rom, make_entity, make_storage(), OLD_VALUE_SUFFIX, strdup(), UU, and value_undefined.
Referenced by add_interprocedural_value_entities(), add_or_kill_equivalenced_variables(), and add_synonym_values().
void add_sizeof_value | ( | type | t | ) |
For a given architecture, sizeof(t) is a constant.
It has no old value, no new value, it is a value.
Constants are encoded as 0-ary functions, not as values.
find the sizeof entity if possible, else, generate it
add the couple (e, old_value)
add its name
Definition at line 1352 of file value.c.
References concatenate(), copy_type(), entity_domain, entity_name, entity_undefined, gen_find_tabulated(), hash_entity_to_new_value, hash_entity_to_user_value_name, hash_get(), hash_put(), hash_type_to_sizeof_value, HASH_UNDEFINED_VALUE, hash_value_to_name, is_storage_rom, make_entity, make_storage(), MODULE_SEP_STRING, SIZEOF_SUFFIX, strdup(), TOP_LEVEL_MODULE_NAME, type_to_full_string_definition(), UU, and value_undefined.
Referenced by expression_multiply_sizeof_to_transformer().
e and eq are entities whose values are always equal because they share the exact same memory location (i.e. they are alias). Values for e have already been declared. Values for eq have to be declared.
hash_put(hash_value_to_name, (char *) old_value_eq, entity_name(old_value_eq));
The name does not change. It is not used until the equivalence equations are added
eq | q |
readonly | eadonly |
Definition at line 1578 of file value.c.
References add_old_value(), concatenate(), entity_local_name(), entity_name, entity_to_intermediate_value(), entity_to_new_value(), entity_to_old_value(), eq, hash_entity_to_intermediate_value, hash_entity_to_new_value, hash_entity_to_old_value, hash_put(), hash_update(), hash_value_to_name, NEW_VALUE_SUFFIX, pips_debug, and strdup().
Referenced by add_equivalenced_values().
Definition at line 962 of file value.c.
References ADDRESS_OF_SUFFIX, and entity_local_name().
Referenced by pips_user_value_name(), and value_to_variable().
Definition at line 1165 of file value.c.
References hash_entity_to_intermediate_value, hash_entity_to_new_value, hash_entity_to_old_value, hash_entity_to_user_value_name, hash_pointer, hash_reference_to_address_of_value, hash_table_make(), hash_table_undefined_p, hash_type_to_sizeof_value, hash_value_to_name, and pips_assert.
Referenced by allocate_module_value_mappings().
The entity type is one of the analyzed types.
Definition at line 471 of file value.c.
References abstract_state_variable_p(), analyzed_type_p(), entity_basic_concrete_type(), entity_heap_location_p(), entity_typed_anywhere_locations_p(), place_holder_variable_p(), and typedef_entity_p().
Referenced by add_implicit_interprocedural_write_effects(), add_or_kill_equivalenced_variables(), any_user_call_site_to_transformer(), c_return_to_transformer(), external_entity_to_new_value(), generic_reference_to_transformer(), module_to_formal_analyzable_parameters(), module_to_value_mappings(), precondition_intra_to_inter(), and same_analyzable_type_scalar_entity_list_p().
Does array a contain directly or indirectly a field that may be analyzable?
Definition at line 434 of file value.c.
References analyzed_struct_type_p(), analyzed_type_p(), array_type_to_element_type(), entity_basic_concrete_type(), and struct_type_p().
at | t |
Definition at line 446 of file value.c.
References analyzed_struct_type_p(), analyzed_type_p(), array_type_to_element_type(), and struct_type_p().
Referenced by analyzed_entity_p(), and analyzed_struct_type_p().
The basic corresponds to one of the analyzed types.
Definition at line 337 of file value.c.
References analyze_boolean_scalar_entities, analyze_complex_scalar_entities, analyze_float_scalar_entities, analyze_integer_scalar_entities, analyze_pointer_scalar_entities, analyze_string_scalar_entities, basic_complex_p, basic_derived, basic_derived_p, basic_float_p, basic_int_p, basic_logical_p, basic_pointer, basic_pointer_p, basic_string_p, entity_basic_concrete_type(), pips_debug, type_enum_p, and type_to_string().
Referenced by analyzed_type_p(), and condition_to_transformer().
The constant may appear as a variable in the linear systems.
is f a 0-ary function, i.e. a constant of proper type?
integer and logical constants are handled explicitly
Definition at line 487 of file value.c.
References analyze_complex_scalar_entities, analyze_float_scalar_entities, analyze_pointer_scalar_entities, analyze_string_scalar_entities, basic_complex_p, basic_float_p, basic_pointer_p, basic_string_p, entity_constant_p, entity_type, f(), functional_result, type_functional, type_variable, and variable_basic.
Referenced by value_mappings_compatible_vector_p().
Definition at line 457 of file value.c.
References analyzed_array_type_p(), analyzed_struct_type_p(), analyzed_type_p(), array_type_p(), entity_basic_concrete_type(), and struct_type_p().
Referenced by generic_substitute_formal_array_elements_in_transformer().
FI: Nelson explains the motivation for can_be_constant_path_p() but I do not understand them.
He also explains the motivation for strict_constant_path_p() and I do not understand them either.
Stricly speaking, this funtion should be called analyzed_points_to_reference_p()
Definition at line 518 of file value.c.
References analyzed_type_p(), effects_package_entity_p(), generic_atomic_points_to_reference_p(), pips_debug, points_to_reference_to_concrete_type(), reference_to_string(), reference_variable, and store_independent_points_to_reference_p().
Referenced by any_assign_to_transformer(), any_basic_update_to_transformer(), any_update_to_transformer(), assign_rhs_to_reflhs_to_transformer(), generic_apply_effect_to_transformer(), lhs_expression_to_transformer(), module_to_value_mappings(), points_to_unary_operation_to_transformer(), and substitute_stubs_in_transformer().
Does struct s contain directly or indirectly a field that may be analyzable?
Definition at line 387 of file value.c.
References analyzed_struct_p(), analyzed_type_p(), ENTITY, entity_basic_concrete_type(), f(), FOREACH, struct_type_p(), and struct_variable_to_fields().
Referenced by analyzed_struct_p().
st | t |
Definition at line 406 of file value.c.
References analyzed_array_type_p(), analyzed_struct_type_p(), analyzed_type_p(), array_type_p(), ENTITY, entity_basic_concrete_type(), f(), FOREACH, struct_type_p(), and struct_type_to_fields().
Referenced by analyzed_array_p(), analyzed_array_type_p(), analyzed_entity_p(), and analyzed_struct_type_p().
The type t is one of the analyzed types.
Definition at line 367 of file value.c.
References analyzed_basic_p(), compute_basic_concrete_type(), ENDP, type_variable, type_variable_p, variable_basic, variable_dimensions, and volatile_variable_p().
Referenced by add_inter_or_intraprocedural_field_entities(), analyzable_scalar_entity_p(), analyzed_array_p(), analyzed_array_type_p(), analyzed_entity_p(), analyzed_reference_p(), analyzed_struct_p(), analyzed_struct_type_p(), assign_rhs_to_reflhs_to_transformer(), call_to_transformer(), create_values_for_simple_effect(), expression_to_transformer(), generic_reference_to_transformer(), generic_substitute_formal_array_elements_in_transformer(), make_local_temporary_value_entity(), module_to_value_mappings(), perform_array_element_substitutions_in_transformer(), semantics_usable_points_to_reference_p(), substitute_struct_stub_in_transformer(), and transformer_apply_field_assignments_or_equalities().
int aproximate_number_of_analyzed_variables | ( | void | ) |
FI: I do not know if equivalenced variables are well taken into account
Definition at line 1153 of file value.c.
References hash_entity_to_new_value, and hash_table_entry_count().
Referenced by module_to_value_mappings().
bool boolean_analyzed_p | ( | void | ) |
Definition at line 305 of file value.c.
References analyze_boolean_scalar_entities.
Referenced by any_expression_to_transformer(), and fortran_data_to_prec_for_variables().
bool complex_analyzed_p | ( | void | ) |
Definition at line 320 of file value.c.
References analyze_complex_scalar_entities.
bool constant_path_analyzed_p | ( | void | ) |
Definition at line 330 of file value.c.
References analyze_constant_path.
Referenced by any_assign_to_transformer(), assign_rhs_to_reflhs_to_transformer(), basic_update_reflhs_with_rhs_to_transformer(), generic_apply_effect_to_transformer(), integer_call_expression_to_transformer(), lhs_expression_to_transformer(), module_to_value_mappings(), process_call_for_summary_precondition(), and update_reflhs_with_rhs_to_transformer().
This function could be made more robust by checking the storage of e.
Formal parameters of analyzed type always have values.
is e a variable whose value(s) (already) are analyzed?
Definition at line 911 of file value.c.
References hash_defined_p(), hash_entity_to_new_value, hash_table_undefined_p, and pips_assert.
Referenced by add_index_range_conditions(), add_inter_or_intraprocedural_field_entities(), add_interprocedural_new_value_entity(), add_interprocedural_value_entities(), add_intraprocedural_value_entities(), add_loop_index_exit_value(), add_or_kill_equivalenced_variables(), any_assign_operation_to_transformer(), any_scalar_assign_to_transformer_list(), any_scalar_assign_to_transformer_without_effect(), apply_abstract_effect_to_transformer(), assign_operation_to_transformer(), assigned_expression_to_transformer(), assigned_expression_to_transformer_list(), c_data_to_prec_for_variables(), declaration_to_transformer(), declaration_to_transformer_list(), dynamic_variables_to_values(), effects_to_arguments(), filter_transformer(), fortran_data_to_prec_for_variables(), fortran_user_call_to_transformer(), generic_apply_effect_to_transformer(), generic_reference_to_transformer(), generic_unary_operation_to_transformer(), integer_assign_to_transformer(), integer_assign_to_transformer_list(), logical_reference_to_transformer(), loop_bound_evaluation_to_transformer(), module_to_value_mappings(), noms_var(), pips_user_value_name(), pointer_unary_operation_to_transformer(), safe_assigned_expression_to_transformer(), safe_assigned_expression_to_transformer_list(), string_expression_to_transformer(), substitute_scalar_stub_in_transformer(), substitute_stubs_in_transformer(), transformer_add_condition_information_updown(), transformer_add_loop_index_incrementation(), transformer_add_loop_index_initialization(), transformer_add_modified_variable_entity(), transformer_add_variable_type_information(), transformer_filter_subsumed_variables(), transformer_general_consistency_p(), transformer_projection_with_redundancy_elimination_and_check(), transformer_variables_filter(), value_mappings_compatible_vector_p(), variable_to_values(), and variables_to_values().
Definition at line 879 of file value.c.
References entity_name, entity_undefined, hash_entity_to_intermediate_value, hash_get(), and pips_internal_error.
Referenced by add_intermediate_alias_value(), add_synonym_values(), convex_in_effect_loop_range_fix(), external_value_name(), interlaced_basic_workchunk_regions_p(), remove_entity_values(), transformer_combine(), transformer_derivative_constraints(), transformer_derivative_fix_point(), and transformer_list_generic_transitive_closure().
Definition at line 859 of file value.c.
References entity_name, entity_undefined, hash_entity_to_new_value, hash_get(), and pips_internal_error.
Referenced by add_affine_bound_conditions(), add_loop_index_exit_value(), add_new_alias_value(), add_synonym_values(), affine_to_transformer(), any_assign_operation_to_transformer(), any_scalar_assign_to_transformer_list(), any_scalar_assign_to_transformer_without_effect(), args_to_transformer(), assign_operation_to_transformer(), assigned_expression_to_transformer(), assigned_expression_to_transformer_list(), comp_regions_of_implied_do(), dynamic_variables_to_values(), external_value_name(), filter_transformer(), fortran_user_call_to_transformer(), generic_reference_to_transformer(), logical_reference_to_transformer(), loop_bound_evaluation_to_transformer(), old_value_to_new_value(), remove_entity_values(), string_expression_to_transformer(), substitute_scalar_stub_in_transformer(), substitute_stubs_in_transformer_with_translation_binding(), transformer_add_condition_information_updown(), transformer_add_identity(), transformer_add_loop_index_incrementation(), transformer_add_modified_variable_entity(), transformer_add_value_update(), transformer_add_variable_incrementation(), transformer_add_variable_type_information(), transformer_add_variable_update(), transformer_argument_general_consistency_p(), transformer_arguments_projection(), transformer_convex_hulls(), transformer_derivative_constraints(), transformer_derivative_fix_point(), transformer_domain_intersection(), transformer_internal_consistency_p(), transformer_list_generic_transitive_closure(), transformer_to_domain(), transformer_variables_filter(), update_cp_with_rhs_to_transformer(), value_mappings_compatible_vector_p(), value_passing_summary_transformer(), variable_to_values(), variables_to_new_values(), variables_to_values(), and vect_variables_to_values().
Definition at line 869 of file value.c.
References entity_name, entity_undefined, hash_entity_to_old_value, hash_get(), and pips_internal_error.
Referenced by add_old_alias_value(), add_synonym_values(), add_type_information(), affine_to_transformer(), any_assign_operation_to_transformer(), any_basic_update_operation_to_transformer(), any_scalar_assign_to_transformer_list(), any_scalar_assign_to_transformer_without_effect(), assigned_expression_to_transformer(), assigned_expression_to_transformer_list(), dynamic_variables_to_values(), external_value_name(), fortran_user_call_to_transformer(), new_value_to_old_value(), perform_array_element_substitutions_in_transformer(), precondition_intra_to_inter(), remove_entity_values(), safe_transformer_projection(), statement_to_postcondition(), statement_to_total_precondition(), substitute_scalar_stub_in_transformer(), substitute_stubs_in_transformer_with_translation_binding(), transformer_add_identity(), transformer_add_loop_index_incrementation(), transformer_add_loop_index_initialization(), transformer_add_modified_variable_entity(), transformer_add_value_update(), transformer_add_variable_incrementation(), transformer_add_variable_update(), transformer_arguments_projection(), transformer_combine(), transformer_convex_hulls(), transformer_domain_intersection(), transformer_intersect_range_with_domain(), transformer_list_safe_variables_projection(), transformer_projection_with_redundancy_elimination_and_check(), transformer_range(), transformer_to_domain(), transformer_variables_filter(), update_cp_with_rhs_to_transformer(), value_passing_summary_transformer(), variable_to_values(), variables_to_old_values(), and variables_to_values().
void error_free_value_mappings | ( | void | ) |
To be called by an error handler.
free previous hash tables, desallocate names; this implies ALL value names were malloced and were not pointer to a ri part
the three tables are assumed to be allocated all together
free names in hash_value_to_name; the other two hash tables contain pointers to the entity tabulated domain and thus need no value freeing
k is discovered unused by lint; it is syntaxically necessary
free the three tables themselves
Definition at line 1222 of file value.c.
References free(), hash_entity_to_intermediate_value, hash_entity_to_new_value, hash_entity_to_old_value, hash_entity_to_user_value_name, HASH_MAP, hash_reference_to_address_of_value, hash_table_free(), hash_type_to_sizeof_value, hash_value_to_name, reset_analyzed_types(), reset_temporary_value_counter(), and reset_value_mappings().
Referenced by free_value_mappings().
void error_reset_value_mappings | ( | void | ) |
To be called by error handler only.
Potential memory leak.
Definition at line 1205 of file value.c.
References reset_value_mappings().
Referenced by free_value_mappings(), and module_to_value_mappings().
there is no decisive test here; a necessary condition is used instead
Definition at line 1411 of file value.c.
References analyzable_scalar_entity_p(), and pips_assert.
Referenced by add_formal_to_actual_bindings(), formal_and_actual_parameters_association(), fortran_user_call_to_transformer(), generic_reference_to_transformer(), logical_reference_to_transformer(), and substitute_stubs_in_transformer_with_translation_binding().
find the old value entity if possible or abort I should never have to call this function on an local entity (local entities include static local variables)
Definition at line 1422 of file value.c.
References concatenate(), entity_domain, entity_name, entity_undefined, gen_find_tabulated(), OLD_VALUE_SUFFIX, and pips_assert.
Referenced by fortran_user_call_to_transformer(), perform_array_element_substitutions_in_transformer(), and substitute_stubs_in_transformer_with_translation_binding().
const char* external_value_name | ( | entity | e | ) |
This should never occur. Please core dump!
Definition at line 753 of file value.c.
References entity_constant_p, entity_local_name(), entity_name, entity_symbolic_p, entity_to_intermediate_value(), entity_to_new_value(), entity_to_old_value(), get_current_module_entity(), global_intermediate_value_p(), global_new_value_p(), global_old_value_p(), global_value_name_to_user_name(), hash_get(), HASH_UNDEFINED_VALUE, hash_value_to_name, module_local_name(), module_name(), null_pointer_value_entity_p(), pips_assert, pips_internal_error, string_undefined, TOP_LEVEL_MODULE_NAME, and variable_in_module_p().
Referenced by __attribute__(), add_loop_skip_condition(), build_transfer_equations(), complete_loop_transformer(), complete_loop_transformer_list(), intermediate_value_entity_p(), invariant_vector_p(), loop_to_transformer(), noms_var(), old_complete_whileloop_transformer(), pips_user_value_name(), print_transformer(), print_transformers(), print_value_mappings(), readable_value_name(), recompute_loop_transformer(), remove_entity_values(), standard_whileloop_to_transformer(), transformer_derivative_constraints(), transformer_derivative_fix_point(), transformer_equality_fix_point(), transformer_list_generic_transitive_closure(), transformer_normalize(), and transformer_pattern_fix_point().
bool float_analyzed_p | ( | void | ) |
Definition at line 315 of file value.c.
References analyze_float_scalar_entities.
Referenced by any_expression_to_transformer(), fortran_data_to_prec_for_variables(), parametric_transformer_empty_p(), and transformer_normalize().
void free_value_mappings | ( | void | ) |
Normal call to free the mappings.
Definition at line 1212 of file value.c.
References error_free_value_mappings(), error_reset_value_mappings(), hash_entity_to_old_value, hash_table_undefined_p, pips_assert, and reset_hooks_unregister().
Referenced by add_alias_pairs_for_this_caller(), alias_classes(), alias_lists(), alias_pairs(), aliases_text(), any_complexities(), array_expansion(), bdsc_code_instrumentation(), call_site_to_module_precondition_text(), continuation_conditions(), dsc_code_parallelization(), generic_module_name_to_transformers(), generic_print_xml_application(), get_continuation_condition_text(), get_semantic_text(), hbdsc_parallelization(), initial_precondition(), isolate_statement(), kernel_data_mapping(), kernel_load_store_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(), print_initial_precondition(), print_program_precondition(), program_precondition(), reset_convex_in_out_regions(), reset_convex_rw_regions(), reset_convex_summary_in_out_regions(), reset_convex_summary_rw_regions(), safescale_distributor(), safescale_module_analysis(), sequence_dependence_graph(), solve_hardware_constraints(), spire_distributed_unstructured_to_structured(), summary_precondition(), summary_total_postcondition(), and update_precondition_with_call_site_preconditions().
this is not a general test; it will only work for GLOBAL values
Definition at line 703 of file value.c.
References entity_local_name(), entity_module_name(), INTERMEDIATE_VALUE_SUFFIX, SEMANTICS_MODULE_NAME, and SEMANTICS_SEPARATOR.
Referenced by external_value_name().
GLOBAL VALUES.
this is not a general test; it will only work for GLOBAL values
this function should always return false because new value = variable (FI)
=> suf == NULL string suf = strchr(entity_local_name(e), SEMANTICS_SEPARATOR);
pips_assert("global_new_value", suf != NULL);
new = strcmp(entity_module_name(e), SEMANTICS_MODULE_NAME) != 0 && strcmp(suf, NEW_VALUE_SUFFIX) == 0;
Definition at line 667 of file value.c.
References pips_assert.
Referenced by external_value_name().
There is no real test for global new values
v_new | _new |
Definition at line 716 of file value.c.
References concatenate(), entity_domain, entity_module_name(), entity_name, entity_undefined, gen_find_tabulated(), OLD_VALUE_SUFFIX, pips_assert, and SEMANTICS_MODULE_NAME.
Referenced by c_user_function_call_to_transformer(), fortran_user_function_call_to_transformer(), substitute_scalar_stub_in_transformer(), transformer_projection_with_redundancy_elimination_and_check(), and translate_global_value().
Return true if an entity is a global old value (such as "i#init"...).
this is not a general test; it will only work for GLOBAL values
Definition at line 690 of file value.c.
References entity_local_name(), entity_module_name(), OLD_VALUE_SUFFIX, SEMANTICS_MODULE_NAME, and SEMANTICS_SEPARATOR.
Referenced by external_value_name(), and translate_global_value().
const char* global_value_name_to_user_name | ( | const char * | gn | ) |
HASH TABLE USE.
Return a variable value name or map a variable to its different variable values. the '#' character used in value naming conflicts with the reserved character for struct naming
gn | n |
Definition at line 741 of file value.c.
References BLOCK_SEP_CHAR, and local_name().
Referenced by external_value_name().
bool hash_entity_to_values_undefined_p | ( | void | ) |
value.c
Definition at line 229 of file value.c.
References hash_entity_to_new_value, and hash_table_undefined_p.
bool hash_value_to_name_undefined_p | ( | void | ) |
Definition at line 1199 of file value.c.
References hash_table_undefined_p, and hash_value_to_name.
Referenced by generic_value_name().
bool integer_analyzed_p | ( | void | ) |
Definition at line 300 of file value.c.
References analyze_integer_scalar_entities.
Referenced by any_expression_to_transformer().
Definition at line 955 of file value.c.
References external_value_name(), and INTERMEDIATE_VALUE_SUFFIX.
Referenced by transformer_internal_consistency_p(), and value_to_variable().
this is not a general test; it will only work for LOCAL values
Definition at line 648 of file value.c.
References entity_local_name(), and INTERMEDIATE_VALUE_PREFIX.
Return true if an entity is a local old value (such as "o#0" for a global value "i#init"...).
This is not a general test; it will only work for LOCAL values
Definition at line 642 of file value.c.
References entity_local_name(), and OLD_VALUE_PREFIX.
Referenced by add_type_information(), and regions_transformer_apply().
this is not a general test; it will only work for LOCAL values
Definition at line 654 of file value.c.
References entity_local_name(), and TEMPORARY_VALUE_PREFIX.
Referenced by generic_transformer_to_analyzed_locations(), generic_value_name(), non_local_temporary_value_entity_p(), old_value_entity_p(), readable_value_name(), transformer_add_sign_information(), transformer_projection_with_redundancy_elimination_and_check(), transformer_temporary_value_projection(), transformer_to_potential_stub_translation(), transformer_with_temporary_values_p(), and value_mappings_compatible_vector_p().
Definition at line 600 of file value.c.
References local_intermediate_value_counter, and make_local_value_entity().
Referenced by add_intermediate_value(), and add_local_intermediate_value().
Definition at line 595 of file value.c.
References local_old_value_counter, and make_local_value_entity().
Referenced by add_local_old_value().
entity make_local_temporary_integer_value_entity | ( | void | ) |
Definition at line 629 of file value.c.
References free_type(), is_basic_int, is_type_variable, local_temporary_value_counter, make_basic(), make_local_value_entity(), make_type(), make_variable(), and NIL.
Referenced by add_type_information(), bitwise_xor_to_transformer(), logical_not_to_transformer(), modulo_to_transformer(), transformer_add_condition_information_updown(), transformer_derivative_fix_point(), and transformer_list_generic_transitive_closure().
FI: is it easier to admit value of type void than to make a special case? Let see if it works... No, it's not a good idea because value are assumed of type variable in many places.
Definition at line 605 of file value.c.
References analyzed_type_p(), entity_undefined, local_temporary_value_counter, make_local_value_entity(), and pips_internal_error.
Referenced by add_formal_to_actual_bindings(), add_index_bound_conditions(), add_type_information(), addition_operation_to_transformer(), any_assign_operation_to_transformer(), any_scalar_assign_to_transformer_list(), any_scalar_assign_to_transformer_without_effect(), assigned_expression_to_transformer(), assigned_expression_to_transformer_list(), call_to_transformer(), expression_multiply_sizeof_to_transformer(), expression_to_transformer(), generic_abs_to_transformer(), generic_minmax_to_transformer(), iabs_to_transformer(), integer_binary_operation_to_transformer(), integer_expression_and_precondition_to_integer_interval(), integer_left_shift_to_transformer(), integer_minmax_to_transformer(), integer_multiply_to_transformer(), logical_binary_operation_to_transformer(), logical_unary_operation_to_transformer(), loop_bound_evaluation_to_transformer(), loop_to_enter_transformer(), unary_minus_operation_to_transformer(), update_cp_with_rhs_to_transformer(), update_operation_to_transformer(), and value_passing_summary_transformer().
Definition at line 620 of file value.c.
References copy_basic(), free_type(), is_type_variable, local_temporary_value_counter, make_local_value_entity(), make_type(), make_variable(), and NIL.
Referenced by condition_to_transformer(), precondition_minmax_of_expression(), and transformer_add_any_relation_information().
LOCAL VALUE ENTITY.
static entity make_local_value_entity(int n, bool old): find or generate an entity representing an old or an intermediate value of number n
13 is a magic number that can accommodate 2 prefix characters, 10 digits and a null character
find entity or define it
Another option might be to undefine types when counters are reset?
It is likely to take longer to compare types than to free one and allocate one...
Well, type_equal_p() replaces typedefs types by the underlying type which leads to disasters; see suppress_dead_code04.c
The previous test always returns true for strings
Definition at line 547 of file value.c.
References basic_string_p, concatenate(), copy_type(), entity_domain, entity_type, entity_undefined, free(), free_type(), gen_find_tabulated(), INTERMEDIATE_VALUE_PREFIX, is_storage_rom, make_entity, make_storage(), MODULE_SEP_STRING, OLD_VALUE_PREFIX, pips_debug, SEMANTICS_MODULE_NAME, strdup(), TEMPORARY_VALUE_PREFIX, type_equal_p(), type_variable, UU, value_undefined, and variable_basic.
Referenced by make_local_intermediate_value_entity(), make_local_old_value_entity(), make_local_temporary_integer_value_entity(), make_local_temporary_value_entity(), and make_local_temporary_value_entity_with_basic().
|
static |
Returns the list of entities in the mapping domain.
Could be more efficient to return a set.
Note: this is a copy of mapping_to_value_number()
Definition at line 1048 of file value.c.
References CONS, count, ENTITY, gen_in_list_p(), gen_length(), HASH_MAP, NIL, and pips_assert.
Referenced by modified_variables_with_values().
|
static |
Definition at line 1024 of file value.c.
References CONS, count, ENTITY, gen_free_list(), gen_in_list_p(), gen_length(), HASH_MAP, NIL, and pips_assert.
Referenced by test_mapping_entry_consistency().
list modified_variables_with_values | ( | void | ) |
Return the list of all analyzed variables which are modified in the current module.
If they are modified, they must have old values.
The intermediate values could be used as well
Definition at line 1094 of file value.c.
References hash_entity_to_old_value, and mapping_to_domain_list().
Referenced by apply_abstract_effect_to_transformer(), generic_reference_to_transformer(), and transformer_combine().
the following three functions are directly or indirectly relative to the current module and its value hash tables.
since new values are always variable entities, hash_entity_to_new_value can be used for this test
Definition at line 925 of file value.c.
References entity_undefined, hash_entity_to_new_value, hash_get(), and pips_assert.
Referenced by build_transfer_matrix(), equations_to_bases(), invariant_vector_p(), look_for_the_best_counter(), new_value_in_transfer_equation(), transfer_equation_p(), transformer_internal_consistency_p(), and value_to_variable().
FI: correct code entity var = entity_undefined;
var = value_to_variable(n_val); o_val = entity_to_old_value(var);
FI: faster code
n_val | _val |
Definition at line 1710 of file value.c.
References entity_to_old_value(), and entity_undefined.
Referenced by transformer_equality_fix_point(), and upwards_vect_rename().
Definition at line 660 of file value.c.
References local_temporary_value_entity_p().
Referenced by vect_variables_to_values().
int number_of_analyzed_values | ( | void | ) |
Definition at line 1148 of file value.c.
References hash_table_entry_count(), and hash_value_to_name.
Referenced by module_to_value_mappings().
int number_of_analyzed_variables | ( | void | ) |
FI: looks more like the number of values used.
Definition at line 1160 of file value.c.
References hash_table_entry_count(), and hash_value_to_name.
int number_of_temporary_values | ( | void | ) |
Definition at line 255 of file value.c.
References local_temporary_value_counter.
Referenced by transformer_temporary_value_projection(), and transformer_with_temporary_values_p().
Temporary values do not have an external name.
OLD_VALUE_PREFIX is not used for global old values
string s = strstr(external_value_name(e), OLD_VALUE_SUFFIX);
string s = strstr(entity_local_name(e), OLD_VALUE_PREFIX);
Definition at line 936 of file value.c.
References entity_local_name(), local_temporary_value_entity_p(), OLD_VALUE_PREFIX, OLD_VALUE_SUFFIX, and s1.
Referenced by expression_less_than_in_context(), invariant_vector_p(), look_for_the_best_counter(), my_system_remove_variables(), precondition_filter_old_values(), print_call_precondition(), remove_temporal_variables_from_system(), transformer_derivative_constraints(), transformer_derivative_fix_point(), transformer_general_consistency_p(), transformer_internal_consistency_p(), transformer_list_generic_transitive_closure(), and value_to_variable().
o_val = variable_to_old_value(var);
o_val | _val |
Definition at line 1698 of file value.c.
References entity_to_new_value(), entity_undefined, and value_to_variable().
Referenced by build_transfer_matrix(), and equations_to_bases().
const char* pips_user_value_name | ( | entity | e | ) |
This function is called many times when the constraints and the system of constraints are sorted using lexicographic information based on this particular value name.
See for instance Semantics-New/freia_52.c. Hence it is memorized.
Definition at line 815 of file value.c.
References ADDRESS_OF_SUFFIX, address_of_value_entity_p(), concatenate(), entity_domain, entity_has_values_p(), entity_minimal_name(), entity_name, entity_type, entity_user_name(), external_value_name(), free(), gen_check(), hash_entity_to_user_value_name, hash_get(), hash_put(), HASH_UNDEFINED_VALUE, null_pointer_value_entity_p(), pips_debug, sizeof_value_entity_p(), strdup(), string_undefined, TCST, type_to_full_string_definition(), and value_to_variable().
Referenced by generic_value_name(), is_inferior_pvarval(), semantics_is_inferior_pvarval(), text_continuation(), and text_transformer().
bool pointer_analyzed_p | ( | void | ) |
Definition at line 325 of file value.c.
References analyze_pointer_scalar_entities.
Referenced by any_expression_to_transformer().
void print_value_mappings | ( | void | ) |
Definition at line 993 of file value.c.
References dump_value_name(), entity_minimal_name(), external_value_name(), fprintf(), hash_entity_to_intermediate_value, hash_entity_to_new_value, hash_entity_to_old_value, hash_reference_to_address_of_value, hash_table_fprintf(), hash_type_to_sizeof_value, hash_value_to_name, reference_to_string(), string_identity(), and type_to_full_string_definition().
Referenced by module_to_value_mappings().
const char* readable_value_name | ( | entity | v | ) |
For debugging purposes, we might have to print system with temporary values.
Definition at line 1769 of file value.c.
References entity_local_name(), external_value_name(), and local_temporary_value_entity_p().
Referenced by generic_module_name_to_transformers(), module_name_to_preconditions(), and module_name_to_total_preconditions().
The address is the address of a variable or of a reference such as &a[5], not a of a value.
The reference must be a constant memory access path. It does not have to be atomic, as struct are not considered atomic, following Pierre Jouvelot's view point since partial updates are possible.
An address is a constant within a C user function.
As a constant, it must be encoded as a 0-ary function, just like 1.0 or true.
We use the user representation as entity name, namey &a[5].
We do not use array names as constant pointers because they alreay are entities with types and storage. So the address of array a is &a[0].
References can be points-to references, i.e. fields can be encoded as indices.
trict_constant_path_p(r)
Should this local constant be added to the module declarations ?
Definition at line 1285 of file value.c.
References ADDRESS_OF_OPERATOR_NAME, concatenate(), copy_reference(), copy_type(), DEFAULT_ENTITY_KIND, entity_initial, entity_kind, entity_module_name(), entity_storage, entity_type, entity_undefined, FindOrCreateEntity(), make_constant_unknown(), make_functional(), make_storage_rom(), make_symbolic(), make_type_functional(), make_value_symbolic(), NIL, points_to_reference_to_concrete_type(), reference_to_expression(), reference_to_string(), reference_variable, store_independent_points_to_reference_p(), strdup(), and unary_intrinsic_expression.
Definition at line 889 of file value.c.
References entity_undefined, hash_get(), hash_reference_to_address_of_value, pips_internal_error, and reference_to_string().
pips_assert("remove_entity_values", e != entity_undefined);
readonly | eadonly |
Definition at line 1545 of file value.c.
References entity_to_intermediate_value(), entity_to_new_value(), entity_to_old_value(), entity_undefined, external_value_name(), hash_del(), hash_entity_to_intermediate_value, hash_entity_to_new_value, hash_entity_to_old_value, hash_value_to_name, and pips_assert.
Referenced by add_or_kill_equivalenced_variables().
void reset_analyzed_types | ( | void | ) |
Definition at line 289 of file value.c.
References analyze_boolean_scalar_entities, analyze_complex_scalar_entities, analyze_constant_path, analyze_float_scalar_entities, analyze_integer_scalar_entities, analyze_pointer_scalar_entities, and analyze_string_scalar_entities.
Referenced by error_free_value_mappings(), and eval_linear_expression().
void reset_temporary_value_counter | ( | void | ) |
Definition at line 250 of file value.c.
References local_temporary_value_counter.
Referenced by add_index_bound_conditions(), any_scalar_assign_to_transformer_list(), any_scalar_assign_to_transformer_without_effect(), call_to_transformer(), error_free_value_mappings(), loop_bound_evaluation_to_transformer(), module_to_value_mappings(), precondition_add_condition_information(), test_to_transformer(), test_to_transformer_list(), and transformer_add_condition_information().
void reset_value_counters | ( | void | ) |
Definition at line 244 of file value.c.
References local_intermediate_value_counter, and local_old_value_counter.
Referenced by module_to_value_mappings().
|
static |
Definition at line 1188 of file value.c.
References hash_entity_to_intermediate_value, hash_entity_to_new_value, hash_entity_to_old_value, hash_entity_to_user_value_name, hash_reference_to_address_of_value, hash_table_undefined, hash_type_to_sizeof_value, and hash_value_to_name.
Referenced by error_free_value_mappings(), and error_reset_value_mappings().
void set_analyzed_types | ( | void | ) |
Definition at line 271 of file value.c.
References analyze_boolean_scalar_entities, analyze_complex_scalar_entities, analyze_constant_path, analyze_float_scalar_entities, analyze_integer_scalar_entities, analyze_pointer_scalar_entities, analyze_string_scalar_entities, and get_bool_property().
Referenced by eval_linear_expression(), and module_to_value_mappings().
Definition at line 969 of file value.c.
References entity_local_name(), and SIZEOF_SUFFIX.
Referenced by have_sizeof_value_in_multiply_pointer_expression_p(), pips_user_value_name(), and value_to_variable().
bool string_analyzed_p | ( | void | ) |
Definition at line 310 of file value.c.
References analyze_string_scalar_entities.
Referenced by any_expression_to_transformer(), fortran_data_to_prec_for_variables(), and parametric_transformer_empty_p().
used with hash_table_fprintf
Definition at line 990 of file value.c.
Referenced by print_value_mappings().
void test_mapping_entry_consistency | ( | void | ) |
This second assert is too strong when some analyzable variables are equivalenced together. The number of values required is smaller since two (or more) different variables share the same value: the number of entries in the tables is greater than the number of values. We must compute the number of values in each table.
Why greater instead of equal? Because the equivalence variable appears in the equivalence equations although it should never appear in regular constraints, except under its canonical name.
Definition at line 1113 of file value.c.
References hash_entity_to_intermediate_value, hash_entity_to_new_value, hash_entity_to_old_value, hash_table_entry_count(), hash_value_to_name, mapping_to_value_number(), and pips_assert.
Referenced by module_to_value_mappings().
Definition at line 899 of file value.c.
References entity_undefined, hash_get(), hash_type_to_sizeof_value, pips_internal_error, type_to_full_string_definition(), and type_to_string().
Referenced by expression_multiply_sizeof_to_transformer().
Static aliasing.
useful for Fortran, useless for C. When no alias is found, an undefined entity must be returned.
lookup the current value name mapping and return an arbitrary "representant" of the interprocedural alias set of e; the equivalence relation is "has same location"
Definition at line 1729 of file value.c.
References entities_may_conflict_p(), entity_name, entity_undefined, HASH_FOREACH, hash_value_to_name, pips_debug, and variable_entity_p().
Referenced by add_interprocedural_new_value_entity(), add_interprocedural_value_entities(), and translate_global_value().
tells if e is seen as a variable value in the current module
Definition at line 976 of file value.c.
References hash_get(), HASH_UNDEFINED_VALUE, and hash_value_to_name.
Referenced by generic_value_name(), transformer_add_sign_information(), transformer_filter_subsumed_variables(), and translate_global_value().
for debugging purposes
Definition at line 1762 of file value.c.
References entity_name.
Referenced by parametric_transformer_empty_p().
Get the primitive variable associated to any value involved in a transformer.
For example can associate values such as "o#0" to "i" (via "i#init").
This function used to be restricted to values seen by the current module. It was extended to values in general to cope with translation issues.
for gcc only!
pips_assert("value_to_variable", s != HASH_UNDEFINED_VALUE);
pips_assert("value_to_variable", strchr(entity_name(val), (int) SEMANTICS_SEPARATOR) != NULL);
this may be a value, but it is unknown in the current module
new values in fact have no suffixes...
It can be an equivalenced variable... Additional testing should be performed!
val | al |
Definition at line 1624 of file value.c.
References ADDRESS_OF_SUFFIX, address_of_value_entity_p(), entity_domain, entity_name, entity_undefined, free(), gen_find_tabulated(), hash_get(), HASH_UNDEFINED_VALUE, hash_value_to_name, intermediate_value_entity_p(), INTERMEDIATE_VALUE_SUFFIX, new_value_entity_p(), NEW_VALUE_SUFFIX, old_value_entity_p(), OLD_VALUE_SUFFIX, pips_internal_error, SEMANTICS_SEPARATOR, SIZEOF_SUFFIX, sizeof_value_entity_p(), and strdup().
Referenced by add_address_of_value(), add_loop_index_exit_value(), add_type_information(), any_assign_operation_to_transformer(), any_scalar_assign_to_transformer_list(), any_scalar_assign_to_transformer_without_effect(), fortran_user_call_to_transformer(), generic_transformer_intra_to_inter(), generic_transformer_to_analyzed_locations(), invariant_vector_p(), look_for_the_best_counter(), old_value_to_new_value(), pips_user_value_name(), print_call_precondition(), transformer_add_variable_incrementation(), transformer_add_variable_update(), transformer_derivative_constraints(), transformer_derivative_fix_point(), transformer_formal_parameter_projection(), transformer_general_consistency_p(), transformer_list_generic_transitive_closure(), transformer_projection_with_redundancy_elimination_and_check(), transformer_return_value_projection(), transformer_to_analyzed_arrays(), transformer_to_local_values(), transformer_to_potential_stub_translation(), and value_passing_summary_transformer().
FI: not used, not debugged.
Definition at line 1755 of file value.c.
References entity_to_new_value(), non_local_temporary_value_entity_p(), and vect_rename_variables().
Definition at line 263 of file value.c.
Referenced by analyzed_basic_p(), boolean_analyzed_p(), reset_analyzed_types(), and set_analyzed_types().
Definition at line 266 of file value.c.
Referenced by analyzed_basic_p(), analyzed_constant_p(), complex_analyzed_p(), reset_analyzed_types(), and set_analyzed_types().
Definition at line 269 of file value.c.
Referenced by constant_path_analyzed_p(), reset_analyzed_types(), and set_analyzed_types().
Definition at line 265 of file value.c.
Referenced by analyzed_basic_p(), analyzed_constant_p(), float_analyzed_p(), reset_analyzed_types(), and set_analyzed_types().
TYPING.
Definition at line 262 of file value.c.
Referenced by analyzed_basic_p(), integer_analyzed_p(), reset_analyzed_types(), and set_analyzed_types().
Definition at line 267 of file value.c.
Referenced by analyzed_basic_p(), analyzed_constant_p(), pointer_analyzed_p(), reset_analyzed_types(), and set_analyzed_types().
Definition at line 264 of file value.c.
Referenced by analyzed_basic_p(), analyzed_constant_p(), reset_analyzed_types(), set_analyzed_types(), and string_analyzed_p().
|
static |
Definition at line 221 of file value.c.
Referenced by add_intermediate_alias_value(), add_intermediate_value(), add_local_intermediate_value(), add_synonym_values(), allocate_value_mappings(), entity_to_intermediate_value(), error_free_value_mappings(), print_value_mappings(), remove_entity_values(), reset_value_mappings(), and test_mapping_entry_consistency().
|
static |
VARIABLE VALUE MANAGEMENT PACKAGE FOR TRANSFORMERS.
Values of variables could be a new data structure or a special kind of entities. To avoid an increase in data structure declarations and an increased size for the implicit array of entities, values are often entities with special names. Their meaning is defined with respect to an environment defined at the module level and so, constant during the analysis of a module.
Constant values may be used as values. They are 0-ary functions. They are used to encode character strings. They are not dealt with by this package. It is possible to handle scalar floating point constants in the same way.
Temporary values may be used to denote expression values. These temporary values have no names. They are read only. They must be eliminated from long lasting data structures as their semantics is local to a single expression, usually a right hand side. Only the most basic entity printing routine can be used for such values.
Only scalar variables are analyzed.
Properties are used to select the variables types that are to be analyzed among integer, boolean, string, float and/or complex. Any combination of types is legal. Scalar variables of an analyzed type are said to be analyzable but they may be not analyzed because of some static aliasing (EQUIVALENCE).
Three different kind of variable values are used: new, old and intermediate. New values are used in post-condition predicates. Old values are used in pre-condition predicates. New and old values are also used in predicate transformers. Intermediate values are used to combine transformers.
New values are directly referenced by the corresponding scalar variable, a regular entity, with types integer, boolean, float, complex or string. However they are printed with a different name to avoid confusion between variables and values. The value name is the variable name, suffixed by "#new".
Old values and intermediate values are referenced via special entities, distinguished by their names made of a specific prefix followed by a number (see OLD_VALUE_PREFIX and INTERMEDIATE_VALUE_PREFIX in transformer.h).
The type of a value is the type of the associated entity. Equivalenced variables are handled only if they all have the same type.
Pre-values, a.k.a. old values, for local dynamic entities are named "o#XX", where "XX" is a number. A pre-value is associated to an entity via a hash table used by the function entity_to_old_value(). Static aliasing (i.e. EQUIVALENCEs) is dealed with by associating the same value entity to the two aliased variable entities.
Pre-values, a.k.a. old values, for analyzed scalar formal parameters and analyzed scalar global variables are represented by special entities named from the relevant variable entity, by suffixing its name by "#init". These values have to be represented by specific entities to let us consider parameter values at entry point and to let us perform interprocedural semantics analysis.
Intermediate values are referenced by special entities named "i#XX", which are reused from procedure to procedure. Within a procedure, each variable is linked to one intermediate value entity.
These conventions are used by value_to_name(e) to generate EXTERNAL names I::new, I::old and I::tmp and to print readable debug information.
To accelerate conversions between new, old and intermediate value entities, four hash tables must set up for each module before semantics analysis is started or used:
Francois Irigoin, December 1989 (updated June 2001,... August 2009)
Modifications:
*** assigments to array or to non integer scalar can now affect transformer on integer scalar variables (Francois Irigoin, April 90)*** no longer true - such integer scalar variables are just ignored; however, it would be easy to do slightly better (21 April 1990)
Bugs/Features:
hash tables are static; recursion is not possible for interprocedural analysis; topographical order will have to be used for it (Francois Irigoin, April 1990)
Assumptions:
Francois Irigoin, 13 January 1994 STATIC VARIABLES Four global hash tables used to map scalar analyzable variable entities onto the different kind of value entities and to map value entities onto their external names.
They prevent recursive calls.
Definition at line 219 of file value.c.
Referenced by add_new_alias_value(), add_new_value(), add_sizeof_value(), add_synonym_values(), allocate_value_mappings(), aproximate_number_of_analyzed_variables(), entity_has_values_p(), entity_to_new_value(), error_free_value_mappings(), hash_entity_to_values_undefined_p(), new_value_entity_p(), print_value_mappings(), remove_entity_values(), reset_value_mappings(), and test_mapping_entry_consistency().
|
static |
Definition at line 220 of file value.c.
Referenced by add_local_old_value(), add_old_alias_value(), add_old_value(), add_synonym_values(), allocate_value_mappings(), entity_to_old_value(), error_free_value_mappings(), free_value_mappings(), modified_variables_with_values(), print_value_mappings(), remove_entity_values(), reset_value_mappings(), and test_mapping_entry_consistency().
|
static |
Definition at line 223 of file value.c.
Referenced by add_address_of_value(), add_sizeof_value(), allocate_value_mappings(), error_free_value_mappings(), pips_user_value_name(), and reset_value_mappings().
|
static |
Definition at line 225 of file value.c.
Referenced by add_address_of_value(), allocate_value_mappings(), error_free_value_mappings(), print_value_mappings(), reference_to_address_of_value(), and reset_value_mappings().
|
static |
Definition at line 227 of file value.c.
Referenced by add_sizeof_value(), allocate_value_mappings(), error_free_value_mappings(), print_value_mappings(), reset_value_mappings(), and type_to_sizeof_value().
|
static |
Definition at line 222 of file value.c.
Referenced by add_address_of_value(), add_intermediate_value(), add_local_intermediate_value(), add_local_old_value(), add_new_value_name(), add_old_value(), add_sizeof_value(), add_synonym_values(), allocate_value_mappings(), error_free_value_mappings(), external_value_name(), hash_value_to_name_undefined_p(), number_of_analyzed_values(), number_of_analyzed_variables(), print_value_mappings(), remove_entity_values(), reset_value_mappings(), test_mapping_entry_consistency(), value_alias(), value_entity_p(), and value_to_variable().
|
static |
Two counters used to assign meaningless value entities to local variables.
A special global prefix, SEMANTICS_MODULE_NAME, and two special local prefixes, OLD_VALUE_PREFIX and INTERMEDIATE_VALUE_PREFIX, are also used
Definition at line 240 of file value.c.
Referenced by make_local_intermediate_value_entity(), and reset_value_counters().
|
static |
Definition at line 241 of file value.c.
Referenced by make_local_old_value_entity(), and reset_value_counters().
|
static |
Definition at line 242 of file value.c.
Referenced by make_local_temporary_integer_value_entity(), make_local_temporary_value_entity(), make_local_temporary_value_entity_with_basic(), number_of_temporary_values(), and reset_temporary_value_counter().