GCC Middle and Back End API Reference
gimple-ssa.h File Reference
Include dependency graph for gimple-ssa.h:
This graph shows which files directly or indirectly include this file:

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)
 

Function Documentation

◆ gimple_in_ssa_p()

bool gimple_in_ssa_p ( const struct function * fun)
inline
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_clear_padding(), 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().

◆ gimple_vdef_op()

def_operand_p gimple_vdef_op ( gimple * g)
inline
Return the set of VDEF operand for statement G.   

References g, ggc_alloc(), and NULL_DEF_OPERAND_P.

Referenced by operands_scanner::verify_ssa_operands().

◆ gimple_vop()

◆ gimple_vuse_op()

use_operand_p gimple_vuse_op ( const gimple * g)
inline

◆ gt_ggc_mx()

void gt_ggc_mx ( gimple *& )
extern

◆ gt_pch_nx()

void gt_pch_nx ( gimple *& )
extern

◆ update_stmt()

void update_stmt ( gimple * s)
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(), 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(), 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_guard(), ifcombine_ifandif(), 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_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(), 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(), optimize_memcpy(), 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_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().

◆ update_stmt_fn()

void update_stmt_fn ( struct function * fn,
gimple * s )
inline
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().

◆ update_stmt_if_modified()

void update_stmt_if_modified ( gimple * s)
inline