PIPS
|
Go to the source code of this file.
Functions | |
bool | compilation_unit_p (const char *module_name) |
The names of PIPS entities carry information about their nature. More... | |
bool | module_name_p (string name) |
Check if the given name is the name of a plain module and not of a compilation unit. More... | |
bool | main_module_global_name_p (const char *name) |
Argument "name" is a global name. More... | |
bool | main_module_name_p (const char *name) |
Argument "name" is a local name (not a user name) More... | |
bool | static_module_name_p (const char *name) |
Check if the given name is a static module name. More... | |
const char * | global_name_to_user_name (const char *global_name) |
functions on strings for entity names More... | |
const char * | local_name (const char *s) |
Does not take care of block scopes and returns a pointer. More... | |
string | make_entity_fullname (const char *module_name, const char *local_name) |
END_EOLE. More... | |
bool | empty_string_p (const char *s) |
bool | blank_string_p (const char *s) |
bool | return_local_label_name_p (const char *s) |
bool | empty_label_p (const char *s) |
bool | empty_global_label_p (const char *gln) |
bool | return_label_p (const char *s) |
const char * | module_name (const char *s) |
Return the module part of an entity name. More... | |
bool blank_string_p | ( | const char * | s | ) |
Definition at line 245 of file entity_names.c.
bool compilation_unit_p | ( | const char * | module_name | ) |
The names of PIPS entities carry information about their nature.
cproto-generated files
A lot of string-based functions are used to know what an entity is according to its name.
The purpose of this file (library?) is to keep together these basic string functions for entity names, with no dependence on ri.newgen.
Different kinds of names:
At execution time, this encoding leads to over using string functions. This was studied by HPC Project and Beatrice Creusillet. She suggested to add a new field to entities, which would carry this information. Check if the given name is a compilation unit internal name.
Should be called "compilation_unit_name_p()" to avoid ambiguity about the argument.
A module name is a compilation unit if and only if its last character is FILE_SEP
module_name | odule_name |
Definition at line 56 of file entity_names.c.
References FILE_SEP, and module_name().
Referenced by actual_c_parser(), build_real_resources(), compilation_unit_entity_p(), controlizer(), db_get_module_list_initial_order(), db_get_module_or_function_list(), ensure_comment_consistency(), entity_more_or_less_minimal_name(), initial_points_to(), MakeCompilationUnitEntity(), module_name_p(), new_controlizer(), open_module_if_unique(), set_current_function(), set_entity_initial(), static_global_variable_p(), static_module_name_p(), step_compile_generated_module(), UpdateEntity(), and UpdateFunctionEntity().
bool empty_global_label_p | ( | const char * | gln | ) |
gln | ln |
Definition at line 264 of file entity_names.c.
References empty_label_p(), and local_name().
Referenced by create_statements_of_label(), get_label_control(), init_label(), loop_to_complexity(), make_conditional_control(), set_control_to_label(), text_trail(), and update_used_labels().
bool empty_label_p | ( | const char * | s | ) |
Definition at line 256 of file entity_names.c.
References EMPTY_LABEL_NAME, MODULE_SEP, and pips_assert.
Referenced by empty_global_label_p(), entity_empty_label_p(), and label_name_conflict_with_labels().
bool empty_string_p | ( | const char * | s | ) |
Definition at line 239 of file entity_names.c.
Referenced by do_statement_insertion(), effects_to_dma(), find_statements_interactively_walker(), full_unroll(), generate_compact(), inline_expression_call(), isolate_statement(), local_tile_constraints(), loop_chunk_size_and_strip_mine(), loop_expansion(), loop_expansion_init(), module_loops(), outline(), parallel_tiling(), RenameFunctionEntity(), retrieve_a_missing_file_using_external_resolver(), static_partitioning_matrix(), step_install(), string_to_entity(), text_block(), text_instruction(), tile_hyperplane_constraints(), tiling_transformation(), and unroll().
const char* global_name_to_user_name | ( | const char * | global_name | ) |
functions on strings for entity names
BEGIN_EOLE
First, take care of constrant strings and characters, wich may contain any of the PIPS special characters and strings. And do not forget Fortran format
Then all possible prefixes first
Clash with the address-of C operator
Then F95 module separator
Then block seperators
Then module separator
Then file separator
Take care of the special case of static functions, leaving compilation unit names untouched
global_name | lobal_name |
Definition at line 136 of file entity_names.c.
References BLOCK_SEP_CHAR, BLOCK_SEP_STRING, BLOCKDATA_PREFIX, COMMON_PREFIX, ENUM_PREFIX, F95MODULE_PREFIX, FILE_SEP_STRING, LABEL_PREFIX, MAIN_PREFIX, MEMBER_SEP_STRING, MODULE_SEP_STRING, pips_debug, pips_internal_error, string_undefined, STRUCT_PREFIX, TYPEDEF_PREFIX, and UNION_PREFIX.
Referenced by entity_field_to_entity(), entity_user_name(), gfc2pips_namespace(), gpu_ify(), make_new_index_entity(), and unique_entity_name_p().
const char* local_name | ( | const char * | s | ) |
Does not take care of block scopes and returns a pointer.
Definition at line 221 of file entity_names.c.
References MODULE_SEP, and pips_assert.
Referenced by c_call(), control_to_label_name(), CreateEntity(), CreateEntityFromLocalNameAndPrefix(), empty_global_label_p(), entity_all_module_xxx_locations_typed(), entity_local_name(), FindOrCreateCurrentEntity(), FindOrCreateEntity(), gfc2pips_getTypesDeclared(), gfc2pips_namespace(), global_value_name_to_user_name(), intrinsic_name_p(), Is_Associative_Commutative(), label_local_name(), loadstore_type_conversion_string(), make_entity_fullname(), make_label(), make_loadsave_statement(), make_new_label(), MakeRunTimeSupportFunction(), MakeRunTimeSupportSubroutine(), module_local_name(), new_label_local_name(), return_label_p(), set_control_to_label(), and string_to_callees().
bool main_module_global_name_p | ( | const char * | name | ) |
Argument "name" is a global name.
In C, the main module is always called "main".
In Fortran, the main module can have any declared name and a special prefix is used.
In both cases, they are part of TOP-LEVEL
Look for a C main name
Look for a Fortran main
name | ame |
Definition at line 86 of file entity_names.c.
References MAIN_PREFIX, MODULE_SEP_STRING, prefix, same_string_p, and TOP_LEVEL_MODULE_NAME.
Referenced by entity_main_module_p().
bool main_module_name_p | ( | const char * | name | ) |
Argument "name" is a local name (not a user name)
In C, the main module is always called "main".
In Fortran, the main module can have any declared name and a special prefix is used.
In both cases, they are part of TOP-LEVEL
Look for a C main name
Look for a Fortran main
name | ame |
Definition at line 108 of file entity_names.c.
References MAIN_PREFIX_CHAR, and same_string_p.
string make_entity_fullname | ( | const char * | module_name, |
const char * | local_name | ||
) |
END_EOLE.
module_name | odule_name |
local_name | ocal_name |
Definition at line 230 of file entity_names.c.
References concatenate(), local_name(), module_name(), and MODULE_SEP_STRING.
Referenced by add_test(), binary_arithmetic_operator_to_post_pv(), complex_bound_generation(), ecrit_une_var_neg(), local_name_to_variable(), loop_normalize_of_loop(), make_func_op(), make_movements_loop_body_wp65(), make_op_exp(), make_rational_exp(), MakeAssignedOrComputedGotoInst(), predicate_to_expression(), psystem_to_expression(), rational_op_exp(), signed_integer_constant_expression_p(), and xml_TaskParameter().
const char* module_name | ( | const char * | s | ) |
Return the module part of an entity name.
OK, this function name is pretty misleading: entity_name_to_entity_module_name().
Maybe, it should be wrapped up in a higher-level function such as entity_to_module_name().
It uses a static buffer and should create trouble with long function names.
No memory allocation is performed, but it's result is transient. It must be strdup'ed by the caller if it is to be preserved.
To eliminate the static buffer and to allocate the returned string would require lots of changes or add lots of memory leaks in PIPS since the callers do not know they must free the result. Maybe we should stack allocate a buffer of size strlen(s), but we would end up returning a pointer to a popped area of the stack...
Definition at line 296 of file entity_names.c.
References free(), malloc(), and MODULE_SEP.
Referenced by actual_c_parser(), actual_symbol_table_dump(), add_alias_lists_callees(), add_classes_callees(), add_common_variables_to_hash_table(), add_control_counters(), add_entity_to_declarations(), add_new_module(), add_new_module_from_text(), alias_check(), alias_classes(), alias_lists(), alias_pairs(), alias_propagation(), aliases_text(), any_complexities(), apply_eole_on_statement(), array_bound_check_bottom_up(), array_bound_check_instrumentation(), array_bound_check_interprocedural(), array_bound_check_top_down(), array_expansion(), atomic_chains(), bdsc_code_instrumentation(), bootstrap_kernels(), bootstrap_stubs(), c_initializer(), c_parser(), callgraph(), callgraph_module_name(), chains(), check_call_mode_consistency(), check_tiling_legality(), clean_declarations(), clear_pragma(), clone_variable_with_new_name(), comEngine_distribute(), comEngine_distribute_code(), comEngine_generate_HRECode(), common_subexpression_elimination(), comp_regions(), compilation_unit_of_module(), compilation_unit_p(), compilation_unit_parser(), complementary_sections(), computation_intensity(), constant_memory_access_path_to_location_name(), continuation_conditions(), controlizer(), copy_value_of_write(), copy_value_of_write_with_cumulated_regions(), create_HRE_module(), create_integer_parameter_for_new_module(), create_parameter_for_new_module(), create_state_variable(), creer_nom_entite(), creer_nom_var(), csplit_copy(), cumulated_reductions(), davinci_dump_expressions(), db_get_in_simple_pv(), db_get_initial_simple_pv(), db_get_out_simple_pv(), db_get_simple_pv(), db_put_in_simple_pv(), db_put_initial_simple_pv(), db_put_out_simple_pv(), db_put_simple_pv(), delay_communications(), delay_communications_inter(), delay_communications_intra(), delay_load_communications(), delay_load_communications_inter(), delay_load_communications_intra(), delay_store_communications(), delay_store_communications_inter(), delay_store_communications_intra(), do_inlining(), do_unfolding(), dowhile_to_while(), dsc_code_parallelization(), eliminate_original_variables(), entity_module_name(), entity_to_callees(), epips_execute_and_display_something(), epips_select_module(), epips_sequential_view(), expression_substitution(), external_value_name(), fast_interprocedural_points_to_analysis(), fetch_callees_complexities(), fetch_complexity_parameters(), filter_proper_effects(), find_code_status(), find_label_entity(), find_or_create_scalar_entity(), find_or_create_typed_entity(), find_statement_from_label_name(), FindOrCreateCurrentEntity(), flag_as_stub(), flag_kernel(), flag_loops(), flatten_code(), flinter(), for_loop_to_do_loop(), for_loop_to_while_loop(), fortran_initializer(), forward_substitute(), fp_complexities(), fsm_generation(), fsm_merge_states(), fsm_split_state(), fsmize_statement(), full_fsm_generation(), full_spaghettify(), full_spaghettify_module(), full_spaghettify_statement(), gen_multi_recurse_explorer(), generate_starpu_pragma(), generate_two_addresses_code(), generate_variable_with_unique_name_to_module(), generic_initializer(), generic_make_entity_copy_with_new_name(), generic_module_initial_pointer_values(), generic_module_name_to_transformers(), generic_module_pointer_values(), generic_points_to_analysis(), generic_print_code_gen_kill_pv(), generic_print_code_pv(), generic_print_icfg(), generic_print_icfg_filtered(), generic_print_icfg_precise(), generic_print_xml_application(), generic_program_pointer_values(), get_any_comp_regions_text(), get_callees_of(), get_callers_of(), get_continuation_condition_text(), get_loop_execution_parallel(), get_semantic_text(), get_text_comp_regions(), get_text_complexities(), get_text_preconditions(), get_text_total_preconditions(), get_text_transformers(), get_view_file(), GetFullyDefinedReturnCodeVariable(), gfc2pips_symbol2entity(), global_parallelization(), gpips_execute_and_display_something(), gpips_execute_and_display_something_from_alias(), gpu_loop_nest_annotate(), gpu_memory(), gpu_promote_sequential(), gpu_qualify_pointers(), group_constants(), hbdsc_parallelization(), hpfcompile(), HRE_distribute(), icm(), ikernel_load_store(), impact_check(), in_alias_pairs(), in_out_regions_chains(), init_convex_in_out_regions(), init_convex_inout_prettyprint(), init_convex_rw_prettyprint(), init_convex_rw_regions(), init_convex_summary_in_out_regions(), init_convex_summary_rw_regions(), init_points_to_analysis(), init_use_preconditions(), init_use_proper_effects(), initial_simple_pointer_values(), initializer(), inlining(), inlining_simple(), instruction_selection(), interactive_loop_transformation(), internal_print_icfg(), interprocedural_points_to_analysis(), interprocedural_summary_precondition(), interprocedural_summary_precondition_with_points_to(), intraprocedural_points_to_analysis(), intraprocedural_summary_precondition(), invariant_code_motion(), isolate_statement(), kernel_data_mapping(), kernel_load_store(), kernel_load_store_engine(), kernel_load_store_generator(), kernelize(), linearize_array(), linearize_array_fortran(), linearize_array_generic(), live_in_summary_paths_engine(), live_out_region_engine(), live_out_summary_paths_engine(), live_paths_engine(), load_body_effects(), loop_expansion(), loop_expansion_init(), loop_hyperplane(), loop_nest_unswitching(), loop_pragma(), loop_tiling(), main(), make_array_communication_module(), make_array_entity(), make_begin_variable(), make_body_from_forloop(), make_body_from_loop(), make_body_from_whileloop(), make_derived_entity(), make_end_variable(), make_entity_fullname(), make_fsm_from_statement(), make_fsm_transitions_statement(), make_if_false_from_test(), make_if_true_from_test(), make_increment_variable(), make_index_variable(), make_label(), make_new_array_variable_with_prefix(), make_new_derived_entity_with_prefix(), make_new_label(), make_new_scalar_variable_with_prefix(), make_return_statement(), make_scalar_communication_module(), make_scalar_communication_modules(), make_scalar_entity(), make_scalar_integer_entity(), make_transition_statement(), make_unstructured_from_forloop(), make_unstructured_from_loop(), make_unstructured_from_test(), make_unstructured_from_whileloop(), make_variable_from_name_and_entity(), missing_file_initializer(), module_loops(), module_name_to_callees(), module_name_to_input_file_name(), module_name_to_preconditions(), module_name_to_total_preconditions(), module_name_to_transformers(), module_name_to_transformers_in_context(), module_to_all_declarations(), module_to_value_mappings(), mpi_conversion(), mpi_make_ctx(), mpi_task_generation(), new_controlizer(), new_label_local_name(), normalize_microcode(), old__gpu_ify(), old_array_bound_check_instrumentation(), old_summary_precondition(), omp_loop_parallel_threshold_set(), omp_merge_pragma(), open_module(), openmp_task_generation(), optimize_expressions(), ordinary_summary_precondition(), out_alias_pairs(), outline(), outliner_independent(), outliner_independent_recursively(), parallel_loop_tiling(), parsed_symbol_table(), partial_eval(), phrase_comEngine_distributor(), phrase_distributor(), phrase_distributor_control_code(), phrase_distributor_init(), phrase_remove_dependences(), pocc_prettyprinter(), pragma_outliner(), preconditions_inter_fast(), preconditions_inter_full(), preconditions_inter_full_with_points_to(), preconditions_intra(), preconditions_intra_fast(), prepend_comment(), prgm_mapping(), print_alias_classes(), print_alias_lists(), print_aliases(), print_any_reductions(), print_array_dfg(), print_bdt(), print_c_code(), print_call_graph(), print_call_graph_with_complexities(), print_call_graph_with_preconditions(), print_call_graph_with_total_preconditions(), print_call_graph_with_transformers(), print_code_comp_regions(), print_code_complementary_sections(), print_code_complexities(), print_code_continuation_conditions(), print_code_cumulated_reductions(), print_code_or_source_comp(), print_code_points_to(), print_code_points_to_list(), print_code_preconditions(), print_code_proper_reductions(), print_code_semantics(), print_code_simple_gen_kill_pointer_values(), print_code_simple_pointer_values(), print_code_smalltalk(), print_code_static_control(), print_code_total_preconditions(), print_code_transformers(), print_code_with_comp_regions(), print_continuation_conditions(), print_crough(), print_decorated_call_graph(), print_icfg(), print_icfg_with_control(), print_icfg_with_loops(), print_in_alias_pairs(), print_interface(), print_loopnest_dependence_cone(), print_loops(), print_module_icfg(), print_module_name_to_toposorts(), print_out_alias_pairs(), print_parallelizedHPF_code(), print_plc(), print_sesam_tasks_buffers_header(), print_source_comp_regions(), print_source_complexities(), print_source_continuation_conditions(), print_source_preconditions(), print_source_total_preconditions(), print_source_transformers(), print_xml_application(), print_xml_application_main(), print_xml_application_main_with_points_to(), print_xml_application_with_points_to(), print_xml_code(), print_xml_code_with_explicit_motif(), proper_reductions(), redeclaration_enter_statement(), reduction_atomization(), redundant_load_store_elimination(), refine_transformers(), refine_transformers_with_points_to(), region_chains(), regions_to_loops(), remove_common_variables_from_hash_table(), rename_operator(), reset_convex_in_out_regions(), reset_convex_prettyprint(), reset_convex_rw_regions(), reset_convex_summary_in_out_regions(), reset_convex_summary_rw_regions(), rstream_interface(), run_inlining(), safe_apply_outside_the_notifyer(), safescale_distributor(), safescale_distributor_init(), safescale_module_analysis(), scalopify(), scalopragma(), select_a_module_by_default(), select_module_from_status_menu_callback(), sequence_dependence_graph(), sesam_buffers_processing(), sesam_servers_processing(), sesamify(), set_control_to_label(), set_effects(), set_loop_execution_parallel(), set_resources_for_module(), simd_operator_mappings(), simd_treematcher(), simdizer_auto_tile(), simdizer_init(), simple_pointer_values(), simple_xpath_test(), simplify_complex(), simplify_constant_address_expressions(), simplify_subscripts(), solve_hardware_constraints(), spaghettify(), spaghettify_forloop(), spaghettify_loop(), spaghettify_statement(), spaghettify_test(), spaghettify_whileloop(), spire_distributed_unstructured_to_structured(), spire_shared_unstructured_to_structured(), split_initializations(), split_structures(), split_update_operator(), statement_flatten_declarations(), statement_insertion(), statement_insertion_fix_access_in_callers(), step_analyse(), step_analyse_CHAINS_DG(), step_analyse_init(), step_analysed_module_p(), step_compile(), step_compile_analysed_module(), step_compile_generated_module(), step_directives_init(), step_directives_save(), step_install(), step_parser(), store_new_module(), string_to_callees(), string_to_entity(), summary_complementary_sections(), summary_complexity(), summary_precondition(), summary_reductions(), summary_total_postcondition(), summary_total_precondition(), summary_transformer(), symbol_table(), symbolic_tiling(), task_mapping(), taskify(), terapix_remove_divide(), terapix_warmup(), text_summary_complexity(), total_preconditions_inter(), total_preconditions_intra(), transformers_inter_fast(), transformers_inter_full(), transformers_inter_full_with_points_to(), transformers_intra_fast(), transformers_intra_full(), unfolding(), unfolding_simple(), uniform_complexities(), used_before_set(), variable_replication(), wpips_execute_and_display_something(), wpips_execute_and_display_something_from_alias(), wrap_call_argument(), wrap_kernel_argument(), xml_Application(), xml_Boxes(), xml_Task(), and xml_tasks().
Check if the given name is the name of a plain module and not of a compilation unit.
Argument "name" is supposed to be an internal name.
name | ame |
Definition at line 73 of file entity_names.c.
References compilation_unit_p(), and MODULE_SEP_STRING.
bool return_label_p | ( | const char * | s | ) |
Definition at line 272 of file entity_names.c.
References LABEL_PREFIX, local_name(), and return_local_label_name_p().
Referenced by compact_list(), and entity_return_label_p().
bool return_local_label_name_p | ( | const char * | s | ) |
Definition at line 251 of file entity_names.c.
References RETURN_LABEL_NAME.
Referenced by return_label_p().
bool static_module_name_p | ( | const char * | name | ) |
Check if the given name is a static module name.
An entity is a static module if its name contains the FILE_SEP_STRING but the last one is not the last character of the name string
FI: I doubt this is true. Maybe if you're sure name is the name of a module?
name | ame |
Definition at line 122 of file entity_names.c.
References compilation_unit_p(), and FILE_SEP_STRING.
Referenced by CleanUpEntity(), local_name_to_top_level_entity(), module_entity_to_compilation_unit_entity(), static_module_p(), and string_to_callees().