GCC Middle and Back End API Reference
|
#include "tree-ssa-operands.h"
Go to the source code of this file.
Data Structures | |
struct | tm_restart_node |
struct | tm_restart_hasher |
struct | ssa_name_hasher |
struct | gimple_df |
Functions | |
void | gt_ggc_mx (gimple *&) |
void | gt_pch_nx (gimple *&) |
bool | gimple_in_ssa_p (const struct function *fun) |
tree | gimple_vop (const struct function *fun) |
use_operand_p | gimple_vuse_op (const gimple *g) |
def_operand_p | gimple_vdef_op (gimple *g) |
void | update_stmt (gimple *s) |
void | update_stmt_if_modified (gimple *s) |
void | update_stmt_fn (struct function *fn, gimple *s) |
Return true when gimple SSA form was built. gimple_in_ssa_p is queried by gimplifier in various early stages before SSA infrastructure is initialized. Check for presence of the datastructures at first place.
References function::gimple_df, and gimple_df::in_ssa_p.
Referenced by cgraph_node::add_new_function(), can_early_inline_edge_p(), copy_cfg_body(), copy_edges_for_bb(), create_tmp_reg_or_ssa_name(), declare_return_variable(), dump_function_to_file(), execute_expand_omp(), execute_fixup_cfg(), expand_oacc_for(), expand_omp_atomic(), expand_omp_atomic_fetch_op(), expand_omp_atomic_pipeline(), expand_omp_for_generic(), expand_omp_for_init_counts(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_simd(), expand_omp_target(), expand_omp_taskreg(), expand_parallel_call(), ipa_icf::sem_item_optimizer::fixup_points_to_sets(), flatten_function(), force_gimple_operand_1(), gimple_build_vector(), gimple_build_vector_from_val(), gimple_fold_builtin_bcmp(), gimple_fold_builtin_bcopy(), gimple_fold_builtin_bzero(), gimple_fold_builtin_clear_padding(), gimple_fold_builtin_fprintf(), gimple_fold_builtin_fputs(), gimple_fold_builtin_memory_chk(), gimple_fold_builtin_memory_op(), gimple_fold_builtin_memset(), gimple_fold_builtin_printf(), gimple_fold_builtin_realloc(), gimple_fold_builtin_snprintf(), gimple_fold_builtin_snprintf_chk(), gimple_fold_builtin_sprintf(), gimple_fold_builtin_sprintf_chk(), gimple_fold_builtin_stpcpy(), gimple_fold_builtin_strcat(), gimple_fold_builtin_strcat_chk(), gimple_fold_builtin_strchr(), gimple_fold_builtin_strcpy(), gimple_fold_builtin_string_compare(), gimple_fold_builtin_strncat(), gimple_fold_builtin_strncat_chk(), gimple_fold_builtin_strncpy(), gimple_fold_builtin_strstr(), gimple_fold_builtin_stxcpy_chk(), gimple_fold_builtin_stxncpy_chk(), gimple_regimplify_operands(), gimplify_and_update_call_from_tree(), gimplify_expr(), gimplify_modify_expr(), gimplify_save_expr(), group_case_labels_stmt(), indirect_refs_may_alias_p(), initialize_inlined_parameters(), insert_init_debug_bind(), internal_get_tmp_var(), maybe_push_res_to_seq(), ipa_param_adjustments::modify_call(), move_sese_region_to_fn(), move_stmt_op(), optimize_inline_calls(), optimize_successive_divisions_p(), symbol_table::process_new_functions(), reset_debug_bindings(), setup_one_parameter(), tree_function_versioning(), and verify_ssaname_freelists().
|
inline |
Return the set of VDEF operand for statement G.
References dyn_cast(), g, NULL_DEF_OPERAND_P, and gimple_statement_with_memory_ops_base::vdef.
Referenced by operands_scanner::verify_ssa_operands().
Artificial variable used for the virtual operand FUD chain.
References gcc_checking_assert, function::gimple_df, and gimple_df::vop.
Referenced by operands_scanner::add_virtual_operand(), compute_avail(), operands_scanner::finalize_ssa_uses(), gsi_replace_with_seq_vops(), virtual_operand_live::init(), oacc_entry_exit_single_gang(), optimize_mask_stores(), operands_scanner::parse_ssa_operands(), sink_common_stores_to_bb(), verify_gimple_phi(), verify_ssa(), and verify_ssa_name().
|
inline |
Return the set of VUSE operand for statement G.
References dyn_cast(), g, NULL_USE_OPERAND_P, USE_OP_PTR, gimple_statement_with_ops_base::use_ops, and gimple_statement_with_memory_ops_base::vuse.
Referenced by link_use_stmts_after(), move_computations_worker(), sink_clobbers(), vect_finish_stmt_generation(), and operands_scanner::verify_ssa_operands().
|
extern |
|
extern |
|
inline |
Mark statement S as modified, and update it.
References cfun, gimple_has_ops(), gimple_set_modified(), and update_stmt_operands().
Referenced by adjust_before_returns_twice_call(), adjust_debug_stmts_now(), strlen_pass::adjust_last_stmt(), adjust_return_value(), ipcp_modif_dom_walker::before_dom_children(), blend_vec_perm_simplify_seqs(), break_up_subtract(), build_and_add_sum(), tree_switch_conversion::switch_conversion::build_arrays(), tree_switch_conversion::switch_conversion::build_one_array(), bump_vector_ptr(), canonicalize_loop_ivs(), check_loadstore(), clobber_subtree(), convert_mult_to_fma_1(), convert_mult_to_widen(), convert_plusminus_to_widen(), convert_to_divmod(), copy_debug_stmt(), create_canonical_iv(), create_expression_by_pieces(), create_phi_basis_1(), destroy_loop(), do_split_loop_on_cond(), dse_optimize_stmt(), early_object_sizes_execute_one(), eliminate_dom_walker::eliminate_cleanup(), eliminate_local_variables_stmt(), eliminate_dom_walker::eliminate_stmt(), eliminate_unnecessary_stmts(), tree_switch_conversion::bit_test_cluster::emit(), execute_fixup_cfg(), execute_oacc_device_lower(), execute_omp_device_lower(), execute_sm_if_changed(), execute_update_addresses_taken(), tree_switch_conversion::switch_conversion::exp_index_transform(), expand_call_inline(), expand_call_tm(), expand_complex_comparison(), expand_complex_move(), expand_complex_operations_1(), expand_gimple_basic_block(), expand_omp_taskreg(), expand_vector_condition(), expand_vector_operations_1(), expand_vector_scalar_condition(), fixup_noreturn_call(), simplify_using_ranges::fold_cond(), fold_loop_internal_call(), fold_marked_statements(), fold_strstr_to_strncmp(), forward_propagate_addr_expr(), forward_propagate_addr_expr_1(), forward_propagate_into_comparison(), forward_propagate_into_gimple_cond(), tree_switch_conversion::switch_conversion::gen_def_assigns(), tree_switch_conversion::switch_conversion::gen_inbound_check(), gen_parallel_loop(), gen_phi_nest_statement(), generate_loops_for_partition(), generate_reduction_builtin_1(), generate_subtree_copies(), generate_subtree_deferred_init(), get_string_length(), gimple_divmod_fixed_value_transform(), gimple_ic(), gimple_lower_bitint(), gimple_mod_pow2_value_transform(), gimple_mod_subtract_transform(), gimple_regimplify_operands(), gimple_stringop_fixed_value(), strlen_pass::handle_builtin_strcat(), strlen_pass::handle_builtin_strchr(), strlen_pass::handle_builtin_strcpy(), strlen_pass::handle_builtin_strlen(), remove_unreachable::handle_early(), strlen_pass::handle_integral_assign(), strlen_pass::handle_pointer_plus(), hoist_defs_of_uses(), hoist_guard(), ifcombine_replace_cond(), increment_start_addr(), init_subtree_with_zero(), initialize_constant_pool_replacements(), input_function(), insert_debug_temp_for_var_def(), insert_phi_nodes(), insert_trap(), instrument_bool_enum_load(), instrument_builtin_call(), instrument_si_overflow(), ipa_simd_modify_function_body(), ipa_tm_insert_gettmclone_call(), isolate_path(), linearize_expr(), linearize_expr_tree(), load_assign_lhs_subreplacements(), lower_emutls_1(), lower_emutls_stmt(), lower_vec_perm(), make_new_ssa_for_def(), tree_loop_interchange::map_inductions_to_loop(), mark_def_sites(), match_arith_overflow(), match_single_bit_test(), maybe_duplicate_comparison(), maybe_optimize_arith_overflow(), maybe_optimize_guarding_check(), maybe_optimize_range_tests(), maybe_set_vectorized_backedge_value(), ipa_param_body_adjustments::modify_cfun_body(), move_block_to_fn(), tree_loop_interchange::move_code_to_inner_loop(), move_debug_stmts_from_forwarder(), move_early_exit_stmts(), move_sese_region_to_fn(), move_stmt(), narrow_vec_perm_simplify_seq(), oacc_loop_process(), oacc_loop_xform_head_tail(), object_sizes_execute(), rewrite_mem_ref_loc::operator()(), optimize_atomic_bit_test_and(), optimize_atomic_op_fetch_cmp_0(), crc_optimization::optimize_crc_loop(), optimize_memcpy_to_memset(), optimize_range_tests_var_bound(), optimize_recip_sqrt(), optimize_spaceship(), dom_opt_dom_walker::optimize_stmt(), optimize_unreachable(), optimize_vec_cond_expr(), optimize_vector_load(), parloops_is_slp_reduction(), patch_loop_exit(), phiprop_insert_phi(), predicate_scalar_phi(), predicate_statements(), propagate_op_to_single_use(), propagate_with_phi(), purge_all_uses(), reassociate_bb(), pcom_worker::reassociate_to_the_same_stmt(), remove_unreachable::remove(), remove_unreachable::remove_and_update_globals(), remove_conditions_and_labels(), remove_exits_and_undefined_stmts(), remove_name_from_operation(), remove_redundant_iv_tests(), remove_unused_ivs(), replace_mult_candidate(), replace_one_candidate(), replace_reciprocal(), replace_reciprocal_squares(), replace_ref(), replace_ref_with(), replace_rhs_if_not_dup(), replace_uses_by(), repropagate_negates(), ipa_param_body_adjustments::reset_debug_stmts(), reset_debug_uses(), rewrite_debug_stmt_uses(), rewrite_expr_tree(), rewrite_expr_tree_parallel(), rewrite_groups(), rewrite_to_defined_overflow(), rewrite_update_stmt(), scan_omp_simd(), separate_decls_in_region_debug(), sese_add_exit_phis_edge(), sese_reset_debug_liveouts(), simplify_using_ranges::simplify(), simplify_using_ranges::simplify_abs_using_ranges(), simplify_using_ranges::simplify_bit_ops_using_ranges(), simplify_bitfield_ref(), simplify_builtin_call(), simplify_using_ranges::simplify_compare_assign_using_ranges_1(), simplify_using_ranges::simplify_cond_using_ranges_1(), simplify_using_ranges::simplify_div_or_mod_using_ranges(), simplify_gimple_switch(), simplify_loop_version(), simplify_permutation(), simplify_using_ranges::simplify_truth_ops_using_ranges(), simplify_vector_constructor(), spaceship_replacement(), split_at_bb_p(), split_function(), split_loop(), sra_modify_function_body(), transform_stmt_to_copy(), transform_stmt_to_multiply(), transform_to_exit_first_loop(), transform_to_exit_first_loop_alt(), tree_profiling(), tree_transform_and_unroll_loop(), tree_unswitch_outer_loop(), try_unroll_loop_completely(), undistribute_bitref_for_vector(), loop_cand::undo_simple_reduction(), update_complex_assignment(), update_debug_stmt(), update_ops(), update_profile_after_ch(), value_replacement(), vect_create_epilog_for_reduction(), vect_do_peeling(), vect_loop_kill_debug_uses(), vect_loop_versioning(), vect_schedule_scc(), vectorizable_early_exit(), vectorizable_live_operation(), vectorize_slp_instance_root_stmt(), verify_bb_vtables(), warn_return_addr_local(), worker_single_copy(), and worker_single_simple().
Mark statement S as modified, and update it.
References gimple_has_ops(), gimple_set_modified(), and update_stmt_operands().
Referenced by maybe_remove_unused_call_args(), and cgraph_edge::redirect_call_stmt_to_callee().
|
inline |
Update statement S if it has been optimized.
References cfun, gimple_modified_p(), and update_stmt_operands().
Referenced by substitute_and_fold_dom_walker::before_dom_children(), dom_opt_dom_walker::optimize_stmt(), update_modified_stmt(), and update_modified_stmts().