PIPS
|
type of statement More...
type of statement
With these methods you can directly test the type of the instruction inside a statement
Definition at line 528 of file statement.c.
References expression_syntax, instruction_test, instruction_test_p, io_entity_p(), reference_variable, statement_instruction, syntax_reference, syntax_reference_p, and test_condition.
Referenced by build_trail(), c_unstructured(), decorate_trail(), and text_trail().
Return true if the statement is an empty instruction block or a continue or a recursive combination of above.
Well there is at least one possibly usefull thing...
st | t |
Definition at line 474 of file statement.c.
References continue_statement_p(), empty_statement_or_continue_p(), FOREACH, instruction_block, instruction_block_p, STATEMENT, and statement_instruction.
Referenced by add_omp_guard(), clean_up_exit_node(), empty_statement_or_continue_p(), fuse_sequences_in_unstructured(), gpu_promote_sequential_on_sequence(), look_for_inner_loops(), look_for_nested_loop_statements(), sequence_working_false(), take_out_the_exit_node_if_not_a_continue(), and taskify_statement().
Return true if the statement is an empty instruction block or a continue without comments or without LABEL or without declarations or a recursive combination of above.
The very last condition should be sufficient
Everything in the block are commentless continue or empty statements:
Everything else useful:
st | t |
Definition at line 497 of file statement.c.
References continue_statement_p(), empty_comments_p(), empty_statement_or_continue_without_comment_p(), ENDP, instruction_block, instruction_block_p, MAP, STATEMENT, statement_comments, statement_declarations, statement_instruction, and unlabelled_statement_p().
Referenced by copy_from_statement(), copy_to_statement(), empty_statement_or_continue_without_comment_p(), fuse_sequences_in_unstructured(), and remove_useless_continue_or_empty_code_in_unstructured().
Return true if the statement is an empty instruction block without label or a continue without label or a recursive combination of above.
FI: I add a check on declarations. With their initializations, they have side effects. See C_syntax/block01.c.
FI: same issue with CONTINUE.
If there is an extension on it (such as a pragma) return false since this statement may be useful/
Well there is at least one possibly usefull thing...
st | t |
Definition at line 446 of file statement.c.
References continue_statement_p(), empty_extensions_p(), empty_statement_or_labelless_continue_p(), ENDP, instruction_block, instruction_block_p, MAP, STATEMENT, statement_declarations, statement_extensions, statement_instruction, and unlabelled_statement_p().
Referenced by clean_up_sequences_rewrite(), control_test_p(), down_counter(), empty_statement_or_labelless_continue_p(), and end_omp_construct().
Test if a statement is empty.
st | t |
Definition at line 391 of file statement.c.
References ENDP, instruction_block, instruction_block_p, statement_declarations, statement_instruction, and unlabelled_statement_p().
Referenced by c_test(), clean_up_sequences_rewrite(), compile_body(), gcc_if_block_braces_required_p(), html_print_test(), st_test(), test_to_postcondition(), test_with_no_else_clause_p(), text_block_else(), and text_io_block_if().
NOP statements are useful to fill in empty test branches. The definition of NOP in PIPS has changed over the years. A NOP statement is an empty block. Like blocks, it cannot be labelled nor commented. It has no statement number because it is invisible to users.
Dangling comments, like labels, are attached to CONTINUE statements.
Note 1: blocks are now called "sequences" Note 2: see also empty_statement_p()
Definition at line 407 of file statement.c.
References empty_comments_p(), ENDP, instruction_block, instruction_block_p, pips_assert, statement_comments, statement_instruction, statement_number, STATEMENT_NUMBER_UNDEFINED, and unlabelled_statement_p().
Referenced by take_out_the_exit_node_if_not_a_continue(), test_with_dangling_else_p(), and text_test().
Definition at line 364 of file statement.c.
References instruction_call_p, and statement_instruction.
Referenced by alias_check_array_and_scalar_variable_in_caller_flt(), alias_check_array_and_scalar_variable_in_module_flt(), alias_check_array_variable_in_caller_flt(), alias_check_array_variable_in_module_flt(), alias_check_scalar_variable_in_caller_flt(), alias_check_scalar_variable_in_module_flt(), alias_check_two_variables(), BDSC(), change_basic_if_needed(), compute_SENDRECV_regions(), contexts_mapping_of_nest(), do_reduction_atomization(), do_redundant_load_store_elimination(), dynamic_alias_check_flt(), ensure_comment_consistency(), fcs_count(), find_implicit_goto(), freia_cmp_statement(), freia_is_transpose_call(), freia_shuffle_move_forward(), freia_substitute_by_helper_call(), fsi_seq_flt(), generate_c1_alpha(), generate_c1_beta(), generate_code_seq(), get_assigned_variable(), get_complement_expression(), impact_check_two_variables(), kernel_load_store_generator(), last_statement(), list_of_calls_p(), match_statement(), maybe_unroll_while_rwt(), perform_substitution_in_assign(), prepare_context(), process_static_initializations(), remove_unread_variable(), replace_reductions_in_statement(), seq_rwt(), sequence_call(), simd_load_stat_p(), simd_store_stat_p(), simd_work_stat_p(), simdize_simple_statements(), statement_call(), step_translate_and_map_step_regions(), terapixify_loop_purge(), text_complexity(), text_test(), top_down_abc_not_exact_case(), two_addresses_code_generator(), and variable_is_written_by_statement_flt().
Definition at line 384 of file statement.c.
References instruction_expression_p, and statement_instruction.
Referenced by last_statement(), and statement_expression().
Definition at line 374 of file statement.c.
References instruction_forloop_p, and statement_instruction.
Referenced by begin_omp_construct(), condition_body_contains_loop_p(), delay_communications_anyloop(), find_forloop_in_statement(), is_SCOP_rich(), last_statement(), statement_forloop(), statement_may_have_control_effects_p(), step_directive_basic_workchunk(), and step_directive_basic_workchunk_index().
Definition at line 359 of file statement.c.
References instruction_goto_p, and statement_instruction.
Referenced by last_statement(), and statement_goto().
Definition at line 349 of file statement.c.
References instruction_loop_p, and statement_instruction.
Referenced by add_toggle_inc_statements(), begin_omp_construct(), com_statement_p(), comEngine_opt_loop_interchange(), complete_loop_transformer(), complete_loop_transformer_list(), condition_body_contains_loop_p(), contexts_mapping_of_nest(), delay_communications_anyloop(), depth_of_perfect_loop_nest(), distributable_loop(), do_computation_intensity(), do_kernelize(), do_loop_nest_unswitching(), do_loop_to_for_loop(), do_loop_to_while_loop(), do_terapix_warmup(), end_omp_construct(), find_pragma(), find_statements_with_label_walker(), get_loop_locals_and_remove_walker(), get_variables_to_remove(), guard_expanded_statement_if_needed(), hpf_compile_loop(), inlining_regenerate_labels(), is_SCOP_rich(), keep_loop_indices(), last_statement(), LinkInstToCurrentBlock(), loop_variant_list(), make_seqStat(), mark_loop_to_outline(), module_loops_walker(), move_statements_stat(), old_complete_whileloop_transformer(), outline(), parallel_loop_statement_p(), parallelize_annotated_loop_nest(), perfectly_nested_loop_to_body_at_depth(), phrase_remove_dependences_rwt(), prepare_icm(), process_reductions_in_loop(), process_reductions_in_openmp_loop(), process_true_stat(), quick_privatize_graph(), quick_privatize_statement_pair(), range_flt(), range_rwt(), reduction_rewrite_filter(), region_of_loop(), rice_loop(), rice_statement(), rice_update_dependence_graph(), rw_loop(), selected_loop_p(), sequence_loop(), statement_loop(), statement_to_loop_statement_list(), statement_to_postcondition(), statements_conflict_p(), step_directive_basic_workchunk(), step_directive_basic_workchunk_index(), symbolic_tiling_valid_p(), taskify_statement(), terapix_loop_handler(), terapix_loop_optimizer(), terapixify_loops(), test_dependence_using_regions(), and unroll_loops_in_statement().
Definition at line 379 of file statement.c.
References instruction_multitest_p, and statement_instruction.
Referenced by statement_multitest().
Statement classes induced from instruction type.
Naming conflict between English, block_statement_p(), and NewGen convention isntruction_loop_p() See also macro statement_block_p()
Definition at line 335 of file statement.c.
References instruction_sequence_p, and statement_instruction.
Referenced by clean_up_sequences_rewrite(), condition_body_contains_loop_p(), controlize_sequence(), copy_write_statement_with_cumulated_regions(), ensure_comment_consistency(), freia_allocate_new_images_if_needed(), freia_cleanup_sequence_rec(), freia_memory_management_statement(), gen_omp_parallel(), get_current_step_directive(), gpu_promote_sequential_walker_in(), last_statement(), make_block_with_stmt_if_not_already(), make_declaration_replication(), make_mpi_conversion(), make_send_receive_conversion(), make_task_mapping(), maybe_unroll_while_rwt(), mpi_initialize(), regions_to_loops(), sequence_dg(), statement_block(), statement_sequence(), statement_to_points_to(), and transfert_loop().
Definition at line 343 of file statement.c.
References instruction_test_p, and statement_instruction.
Referenced by abc_instrumentation_insert_before_statement(), add_proper_successor_to_predecessor(), bottom_up_abc_insert_before_statement(), check_control_coherency(), check_control_statement(), check_if_conv(), condition_body_contains_loop_p(), condition_contains_loop_p(), control_test_p(), controlize_repeatloop(), controlize_sequence(), controlize_whileloop(), do_transform_if_statements(), gcc_if_block_braces_required_p(), generate_code_seq(), guard_expanded_statement(), if_conv_init_statement(), interprocedural_abc_insert_before_statement(), is_SCOP_rich(), load_arc_precondition(), statement_test(), test_with_dangling_else_p(), test_with_no_else_clause_p(), text_block_elseif(), text_block_if(), top_down_abc_insert_before_statement(), unstructured_consistency_p(), unstructured_to_flow_insensitive_transformer(), and unstructured_to_postconditions().
Definition at line 369 of file statement.c.
References instruction_unstructured_p, and statement_instruction.
Referenced by ensure_comment_consistency(), get_points_to_graph_from_statement(), internal_statement_to_direct_declarations(), last_statement(), statement_may_have_control_effects_p(), statement_unstructured(), and update_unstructured_declarations().
Definition at line 354 of file statement.c.
References instruction_whileloop_p, and statement_instruction.
Referenced by delay_communications_anyloop(), last_statement(), old_complete_whileloop_transformer(), statement_may_have_control_effects_p(), and statement_whileloop().
st | t |
Definition at line 402 of file statement.c.
References entity_empty_label_p(), and statement_label.
Referenced by add_label_to_statement(), clean_up_sequences_rewrite(), controlize_sequence(), empty_statement_or_continue_without_comment_p(), empty_statement_or_labelless_continue_p(), empty_statement_p(), fix_sequence_statement_attributes(), MakeLabeledStatement(), nop_statement_p(), take_out_the_entry_node_of_the_unstructured(), and update_statement_instruction().