PIPS
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "genC.h"
#include "linear.h"
#include "ri.h"
#include "effects.h"
#include "database.h"
#include "misc.h"
#include "ri-util.h"
#include "effects-util.h"
#include "transformer.h"
#include "semantics.h"
#include "properties.h"
#include "resources.h"
#include "pipsdbm.h"
#include "effects-generic.h"
#include "effects-convex.h"
Go to the source code of this file.
|
static |
If the loop range cannot be represented in the chosen representation then, no useful computation can be performed.
OPTIMIZATION:
keep only in global_write the write regions corresponding to regions in global_in.
VIRTUAL NORMALIZATION OF LOOP (the new increment is equal to +/-1). This may result in a new loop index, new_i, with an updated range descriptor. Effects are updated at the same time.
first work around the fact that loop preconditions have not been added to scalar regions
COMPUTATION OF IN EFFECTS. We must remove the effects written in previous iterations i.e. IN(i) - U_i'(i'<i)[W(i')] for a positive increment, and IN(i) - U_i'(i < i')[W(i')] for a negative one.
computation of W(i')
i' is here an integer scalar value
We must take into account the fact that i<i' or i'<i.
This is somewhat implementation dependent. BC.
IN = IN(i) - U_i'[W(i')]
We eliminate the loop index
Definition at line 84 of file methods.c.
References add_intermediate_value(), add_precondition_to_scalar_convex_regions, descriptor_convex, descriptor_inequality_add(), descriptor_undefined, effects_dup(), effects_entities_intersection(), effects_to_may_effects(), entity_to_intermediate_value(), entity_undefined, entity_undefined_p, free_descriptor(), get_descriptor_range_p(), ifdebug, normalizable_and_linear_loop_p(), NORMALIZE_EXPRESSION, normalized_linear, pips_debug, pips_debug_effects, r_w_combinable_p(), range_increment, range_undefined, same_entity_p(), scalar_regions_sc_append(), TCST, VALUE_MONE, VALUE_ONE, value_pos_p, vect_coeff(), vect_make(), VECTEUR_NUL, VECTEUR_UNDEFINED, and w_r_combinable_p().
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
bool in_out_methods_p | ( | void | ) |
Definition at line 476 of file methods.c.
References effects_computation_init_func, and init_convex_in_out_regions().
Referenced by c_convex_effects_on_actual_parameter_forward_translation().
void init_convex_in_out_regions | ( | const char * | module_name | ) |
This very useful warning should be placed in pipsmake where IN and OUT regions are requested. Moved to rmake() in pipsmake.c
if (!same_string_p(rule_phase(find_rule_by_resource("REGIONS")),
"MUST_REGIONS"))
pips_user_warning("\nMUST REGIONS not selected - "
"Do not expect wonderful results\n");
Get the transformers and preconditions of the module.
for intermediate values
module_name | odule_name |
Definition at line 528 of file methods.c.
References db_get_memory_resource(), get_in_out_regions_properties(), init_convex_inout_prettyprint(), module_name(), module_name_to_entity(), module_to_value_mappings(), regions_init(), reset_proper_rw_effects(), set_bool_property(), set_cumulated_rw_effects(), set_precondition_map(), set_proper_rw_effects(), and set_transformer_map().
Referenced by in_out_methods_p(), and set_methods_for_convex_in_out_effects().
void init_convex_inout_prettyprint | ( | const char *__attribute__((unused)) | module_name | ) |
Definition at line 519 of file methods.c.
References ACTION_IN, ACTION_OUT, effect_prettyprint_func, effects_prettyprint_func, effects_to_text_func, module_name(), pips_debug, print_inout_regions(), print_region, set_action_interpretation(), and text_inout_array_regions().
Referenced by init_convex_in_out_regions(), and init_convex_summary_in_out_regions().
void init_convex_rw_prettyprint | ( | const char *__attribute__((unused)) | module_name | ) |
Definition at line 485 of file methods.c.
References ACTION_READ, ACTION_WRITE, effect_prettyprint_func, effects_prettyprint_func, effects_to_text_func, module_name(), pips_debug, print_region, print_rw_regions(), set_action_interpretation(), and text_rw_array_regions().
Referenced by init_convex_rw_regions(), and init_convex_summary_rw_regions().
void init_convex_rw_regions | ( | const char * | module_name | ) |
Get the transformers and preconditions of the module.
for intermediate values
module_name | odule_name |
Definition at line 495 of file methods.c.
References db_get_memory_resource(), get_bool_property(), get_regions_properties(), init_convex_rw_prettyprint(), module_name(), module_name_to_entity(), module_to_value_mappings(), region_translation_statistics_init(), regions_init(), reset_proper_rw_effects(), set_cumulated_rw_effects(), set_precondition_map(), set_proper_rw_effects(), and set_transformer_map().
Referenced by set_methods_for_convex_rw_effects(), set_methods_for_convex_rw_pointer_effects(), and step_analyse().
void init_convex_summary_in_out_regions | ( | const char * | module_name | ) |
for intermediate values
module_name | odule_name |
Definition at line 606 of file methods.c.
References db_get_memory_resource(), get_in_out_regions_properties(), init_convex_inout_prettyprint(), module_name(), module_name_to_entity(), module_to_value_mappings(), regions_init(), reset_proper_rw_effects(), set_bool_property(), set_cumulated_rw_effects(), and set_proper_rw_effects().
void init_convex_summary_rw_regions | ( | const char * | module_name | ) |
for intermediate values
module_name | odule_name |
Definition at line 583 of file methods.c.
References db_get_memory_resource(), init_convex_rw_prettyprint(), module_name(), module_name_to_entity(), module_to_value_mappings(), regions_init(), reset_proper_rw_effects(), set_cumulated_rw_effects(), and set_proper_rw_effects().
void reset_convex_in_out_regions | ( | const char *__attribute__((unused)) | module_name | ) |
Definition at line 571 of file methods.c.
References free_value_mappings(), module_name(), pips_debug, regions_end(), reset_cumulated_rw_effects(), reset_precondition_map(), and reset_transformer_map().
Referenced by set_methods_for_convex_in_out_effects().
void reset_convex_prettyprint | ( | const char *__attribute__((unused)) | module_name | ) |
Definition at line 623 of file methods.c.
References abort, effect_prettyprint_func, effects_prettyprint_func, effects_to_text_func, module_name(), pips_debug, and reset_action_interpretation().
void reset_convex_rw_regions | ( | const char * | module_name | ) |
module_name | odule_name |
Definition at line 560 of file methods.c.
References free_value_mappings(), module_name(), region_translation_statistics_close(), regions_end(), reset_cumulated_rw_effects(), reset_precondition_map(), and reset_transformer_map().
Referenced by set_methods_for_convex_rw_effects(), set_methods_for_convex_rw_pointer_effects(), and step_analyse().
void reset_convex_summary_in_out_regions | ( | const char *__attribute__((unused)) | module_name | ) |
Definition at line 633 of file methods.c.
References free_value_mappings(), module_name(), pips_debug, regions_end(), and reset_cumulated_rw_effects().
void reset_convex_summary_rw_regions | ( | const char *__attribute__((unused)) | module_name | ) |
Definition at line 597 of file methods.c.
References free_value_mappings(), module_name(), pips_debug, regions_end(), and reset_cumulated_rw_effects().
void set_methods_for_convex_effects | ( | void | ) |
methods.c
Definition at line 235 of file methods.c.
References c_convex_effects_on_actual_parameter_forward_translation(), c_convex_effects_on_formal_parameter_backward_translation(), c_effects_on_actual_parameter_forward_translation_func, c_effects_on_formal_parameter_backward_translation_func, convex_effect_to_constant_path_effects_with_pointer_values(), convex_effect_to_constant_path_effects_with_points_to(), convex_effects_descriptor_normalize(), convex_in_effect_loop_range_fix(), convex_region_add_expression_dimension(), convex_region_change_ith_dimension_expression(), convex_region_descriptor_translation(), convex_regions_backward_translation(), convex_regions_descriptor_variable_rename(), convex_regions_forward_translation(), convex_regions_inverse_transformer_compose(), convex_regions_loop_normalize(), convex_regions_precondition_compose(), convex_regions_transformer_compose(), convex_regions_translation_end(), convex_regions_translation_init(), convex_regions_union_over_range(), 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_out_effects_func, db_get_proper_rw_effects_func, db_get_rw_effects_func, db_get_summary_in_effects_func, db_get_summary_out_effects_func, db_get_summary_rw_effects_func, db_get_useful_variables_effects_func, db_put_cumulated_in_effects_func, db_put_in_effects_func, db_put_invariant_in_effects_func, db_put_invariant_rw_effects_func, db_put_out_effects_func, db_put_proper_rw_effects_func, db_put_rw_effects_func, db_put_summary_in_effects_func, db_put_summary_out_effects_func, db_put_summary_rw_effects_func, db_put_useful_variables_effects_func, effect_add_expression_dimension_func, effect_change_ith_dimension_expression_func, effect_consistent_p_func, effect_descriptor_interprocedural_translation_op, effect_dup_func, effect_free_func, effect_nop(), effect_to_constant_path_effects_func, effect_to_constant_path_effects_with_no_pointer_information(), effect_to_store_independent_effect_list_func, effect_union_op, effects_descriptor_normalize_func, effects_descriptors_variable_change_func, effects_inf_difference_op, effects_intersection_op, effects_local_to_global_translation_op, effects_loop_normalize_func, effects_precondition_composition_op, effects_sup_difference_op, effects_test_union_op, effects_transformer_composition_op, effects_transformer_inverse_composition_op, effects_translation_end_func, effects_translation_init_func, effects_union_op, effects_union_over_range_op, empty_context_test, empty_convex_context_p(), eval_cell_with_points_to_func, eval_convex_cell_with_points_to(), fortran_effects_backward_translation_op, fortran_effects_forward_translation_op, get_constant_paths_p(), get_pointer_info_kind(), load_completed_statement_transformer(), load_completed_transformer_func, load_context_func, load_statement_precondition(), load_statement_transformer(), load_transformer_func, loop_convex_descriptor_make(), loop_descriptor_make_func, loop_range_in_effect_func, pips_internal_error, proper_to_summary_effect_func, reference_to_convex_region(), reference_to_effect_func, region_consistent_p(), region_dup(), region_free(), region_to_store_independent_region_list(), regions_dynamic_elim(), regions_must_convex_hull(), RegionsInfDifference(), RegionsIntersection(), RegionsMayUnion(), RegionsMustUnion(), RegionsSupDifference(), set_contracted_proper_effects(), set_descriptor_range_p(), statement_strongly_feasible_p(), stmt_strongly_feasible_p_func, vector_to_convex_descriptor(), vector_to_descriptor_func, with_no_pointer_info, with_pointer_values, and with_points_to.
Referenced by bdsc_code_instrumentation(), dsc_code_parallelization(), hbdsc_parallelization(), pragma_outliner(), regions_to_loops(), sequence_dependence_graph(), set_methods_for_convex_in_out_effects(), set_methods_for_convex_rw_effects(), spire_distributed_unstructured_to_structured(), and step_analyse().
void set_methods_for_convex_in_out_effects | ( | void | ) |
Definition at line 469 of file methods.c.
References effects_computation_init_func, effects_computation_reset_func, init_convex_in_out_regions(), reset_convex_in_out_regions(), and set_methods_for_convex_effects().
Referenced by c_convex_effects_on_actual_parameter_forward_translation().
void set_methods_for_convex_rw_effects | ( | void | ) |
Definition at line 358 of file methods.c.
References effects_computation_init_func, effects_computation_reset_func, init_convex_rw_regions(), reset_convex_rw_regions(), and set_methods_for_convex_effects().
Referenced by c_convex_effects_on_actual_parameter_forward_translation().
void set_methods_for_convex_rw_pointer_effects | ( | void | ) |
Definition at line 365 of file methods.c.
References c_convex_effects_on_actual_parameter_forward_translation(), c_convex_effects_on_formal_parameter_backward_translation(), c_effects_on_actual_parameter_forward_translation_func, c_effects_on_formal_parameter_backward_translation_func, convex_effects_descriptor_normalize(), convex_in_effect_loop_range_fix(), convex_region_add_expression_dimension(), convex_region_change_ith_dimension_expression(), convex_region_descriptor_translation(), convex_regions_backward_translation(), convex_regions_descriptor_variable_rename(), convex_regions_forward_translation(), convex_regions_inverse_transformer_compose(), convex_regions_loop_normalize(), convex_regions_precondition_compose(), convex_regions_transformer_compose(), convex_regions_translation_end(), convex_regions_translation_init(), convex_regions_union_over_range(), 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_out_effects_func, db_get_proper_rw_effects_func, db_get_rw_effects_func, db_get_summary_in_effects_func, db_get_summary_out_effects_func, db_get_summary_rw_effects_func, db_get_useful_variables_effects_func, db_put_cumulated_in_effects_func, db_put_in_effects_func, db_put_invariant_in_effects_func, db_put_invariant_rw_effects_func, db_put_out_effects_func, db_put_proper_rw_effects_func, db_put_rw_effects_func, db_put_summary_in_effects_func, db_put_summary_out_effects_func, db_put_summary_rw_effects_func, db_put_useful_variables_effects_func, effect_add_expression_dimension_func, effect_change_ith_dimension_expression_func, effect_consistent_p_func, effect_descriptor_interprocedural_translation_op, effect_dup_func, effect_free_func, effect_nop(), effect_to_store_independent_effect_list_func, effect_union_op, effects_computation_init_func, effects_computation_reset_func, effects_descriptor_normalize_func, effects_descriptors_variable_change_func, effects_inf_difference_op, effects_intersection_op, effects_local_to_global_translation_op, effects_loop_normalize_func, effects_precondition_composition_op, effects_sup_difference_op, effects_test_union_op, effects_transformer_composition_op, effects_transformer_inverse_composition_op, effects_translation_end_func, effects_translation_init_func, effects_union_op, effects_union_over_range_op, empty_context_test, empty_convex_context_p(), fortran_effects_backward_translation_op, fortran_effects_forward_translation_op, init_convex_rw_regions(), load_completed_statement_transformer(), load_completed_transformer_func, load_context_func, load_statement_precondition(), load_statement_transformer(), load_transformer_func, loop_convex_descriptor_make(), loop_descriptor_make_func, loop_range_in_effect_func, proper_to_summary_effect_func, reference_to_convex_region(), reference_to_effect_func, region_consistent_p(), region_dup(), region_free(), region_to_store_independent_region_list(), regions_dynamic_elim(), regions_must_convex_hull(), RegionsInfDifference(), RegionsIntersection(), RegionsMayUnion(), RegionsMustUnion(), RegionsSupDifference(), reset_convex_rw_regions(), set_contracted_proper_effects(), set_descriptor_range_p(), statement_strongly_feasible_p(), stmt_strongly_feasible_p_func, vector_to_convex_descriptor(), and vector_to_descriptor_func.