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

Go to the source code of this file.

Data Structures

struct  gimple_stmt_iterator_d
struct  gimple_statement_base
struct  gimple_statement_with_ops_base
struct  gimple_statement_with_ops
struct  gimple_statement_with_memory_ops_base
struct  gimple_statement_with_memory_ops
struct  gimple_statement_call
struct  gimple_statement_omp
struct  gimple_statement_bind
struct  gimple_statement_catch
struct  gimple_statement_eh_filter
struct  gimple_statement_eh_else
struct  gimple_statement_eh_mnt
struct  gimple_statement_phi
struct  gimple_statement_eh_ctrl
struct  gimple_statement_try
struct  gimple_statement_wce
struct  gimple_statement_asm
struct  gimple_statement_omp_critical
struct  gimple_omp_for_iter
struct  gimple_statement_omp_for
struct  gimple_statement_omp_parallel
struct  gimple_statement_omp_task
struct  gimple_statement_omp_sections
struct  gimple_statement_omp_continue
struct  gimple_statement_omp_single
struct  gimple_statement_omp_atomic_load
struct  gimple_statement_omp_atomic_store
struct  gimple_statement_transaction
struct  gimple_temp_hash_elt
struct  gimplify_hasher
struct  gimplify_ctx
struct  walk_stmt_info

Typedefs

typedef gimple gimple_seq_node
typedef vec< gimplegimple_vec
typedef bool(* gimple_predicate )(tree)
typedef int fallback_t
typedef struct gimple_temp_hash_elt elt_t
typedef tree(* walk_stmt_fn )(gimple_stmt_iterator *, bool *, struct walk_stmt_info *)

Enumerations

enum  gimple_code { LAST_AND_UNUSED_GIMPLE_CODE }
enum  gimple_rhs_class {
  GIMPLE_INVALID_RHS, GIMPLE_TERNARY_RHS, GIMPLE_BINARY_RHS, GIMPLE_UNARY_RHS,
  GIMPLE_SINGLE_RHS
}
enum  gf_mask {
  GF_ASM_INPUT = 1 << 0, GF_ASM_VOLATILE = 1 << 1, GF_CALL_FROM_THUNK = 1 << 0, GF_CALL_RETURN_SLOT_OPT = 1 << 1,
  GF_CALL_TAILCALL = 1 << 2, GF_CALL_VA_ARG_PACK = 1 << 3, GF_CALL_NOTHROW = 1 << 4, GF_CALL_ALLOCA_FOR_VAR = 1 << 5,
  GF_CALL_INTERNAL = 1 << 6, GF_OMP_PARALLEL_COMBINED = 1 << 0, GF_OMP_FOR_KIND_MASK = 3 << 0, GF_OMP_FOR_KIND_FOR = 0 << 0,
  GF_OMP_FOR_KIND_SIMD = 1 << 0, GF_OMP_FOR_KIND_DISTRIBUTE = 2 << 0, GF_OMP_FOR_COMBINED = 1 << 2, GF_OMP_FOR_COMBINED_INTO = 1 << 3,
  GF_OMP_TARGET_KIND_MASK = 3 << 0, GF_OMP_TARGET_KIND_REGION = 0 << 0, GF_OMP_TARGET_KIND_DATA = 1 << 0, GF_OMP_TARGET_KIND_UPDATE = 2 << 0,
  GF_OMP_RETURN_NOWAIT = 1 << 0, GF_OMP_SECTION_LAST = 1 << 0, GF_OMP_ATOMIC_NEED_VALUE = 1 << 0, GF_OMP_ATOMIC_SEQ_CST = 1 << 1,
  GF_PREDICT_TAKEN = 1 << 15
}
enum  gimple_debug_subcode { GIMPLE_DEBUG_BIND = 0, GIMPLE_DEBUG_SOURCE_BIND = 1 }
enum  plf_mask { GF_PLF_1 = 1 << 0, GF_PLF_2 = 1 << 1 }
enum  gimple_try_flags { GIMPLE_TRY_CATCH = 1 << 0, GIMPLE_TRY_FINALLY = 1 << 1, GIMPLE_TRY_KIND = GIMPLE_TRY_CATCH | GIMPLE_TRY_FINALLY, GIMPLE_TRY_CATCH_IS_CLEANUP = 1 << 2 }
enum  gimple_statement_structure_enum { LAST_GSS_ENUM }
enum  fallback {
  fb_none = 0, fb_rvalue = 1, fb_lvalue = 2, fb_mayfail = 4,
  fb_either = fb_rvalue | fb_lvalue
}
enum  gimplify_status { GS_ERROR = -2, GS_UNHANDLED = -1, GS_OK = 0, GS_ALL_DONE = 1 }
enum  gsi_iterator_update { GSI_NEW_STMT, GSI_SAME_STMT, GSI_CONTINUE_LINKING }
enum  gimple_alloc_kind {
  gimple_alloc_kind_assign, gimple_alloc_kind_phi, gimple_alloc_kind_cond, gimple_alloc_kind_rest,
  gimple_alloc_kind_all
}

Functions

void gimple_check_failed (const_gimple, const char *, int,\const char *, enum gimple_code,\enum tree_code) ATTRIBUTE_NORETURN
gimple gimple_build_return (tree)
gimple gimple_build_assign_stat (tree, tree MEM_STAT_DECL)
void extract_ops_from_tree_1 (tree, enum tree_code *, tree *, tree *, tree *)
gimple gimple_build_assign_with_ops (enum tree_code, tree, tree, tree CXX_MEM_STAT_INFO)
gimple gimple_build_assign_with_ops (enum tree_code, tree, tree, tree, tree CXX_MEM_STAT_INFO)
gimple gimple_build_debug_bind_stat (tree, tree, gimple MEM_STAT_DECL)
gimple gimple_build_debug_source_bind_stat (tree, tree, gimple MEM_STAT_DECL)
gimple gimple_build_call_vec (tree, vec< tree >)
gimple gimple_build_call (tree, unsigned,...)
gimple gimple_build_call_valist (tree, unsigned, va_list)
gimple gimple_build_call_internal (enum internal_fn, unsigned,...)
gimple gimple_build_call_internal_vec (enum internal_fn, vec< tree >)
gimple gimple_build_call_from_tree (tree)
gimple gimplify_assign (tree, tree, gimple_seq *)
gimple gimple_build_cond (enum tree_code, tree, tree, tree, tree)
gimple gimple_build_label (tree label)
gimple gimple_build_goto (tree dest)
gimple gimple_build_nop (void)
gimple gimple_build_bind (tree, gimple_seq, tree)
gimple gimple_build_asm_vec (const char *, vec< tree, va_gc > *, vec< tree, va_gc > *, vec< tree, va_gc > *, vec< tree, va_gc > *)
gimple gimple_build_catch (tree, gimple_seq)
gimple gimple_build_eh_filter (tree, gimple_seq)
gimple gimple_build_eh_must_not_throw (tree)
gimple gimple_build_eh_else (gimple_seq, gimple_seq)
gimple_statement_trygimple_build_try (gimple_seq, gimple_seq, enum gimple_try_flags)
gimple gimple_build_wce (gimple_seq)
gimple gimple_build_resx (int)
gimple gimple_build_eh_dispatch (int)
gimple gimple_build_switch_nlabels (unsigned, tree, tree)
gimple gimple_build_switch (tree, tree, vec< tree >)
gimple gimple_build_omp_parallel (gimple_seq, tree, tree, tree)
gimple gimple_build_omp_task (gimple_seq, tree, tree, tree, tree, tree, tree)
gimple gimple_build_omp_for (gimple_seq, int, tree, size_t, gimple_seq)
gimple gimple_build_omp_critical (gimple_seq, tree)
gimple gimple_build_omp_section (gimple_seq)
gimple gimple_build_omp_continue (tree, tree)
gimple gimple_build_omp_master (gimple_seq)
gimple gimple_build_omp_taskgroup (gimple_seq)
gimple gimple_build_omp_return (bool)
gimple gimple_build_omp_ordered (gimple_seq)
gimple gimple_build_omp_sections (gimple_seq, tree)
gimple gimple_build_omp_sections_switch (void)
gimple gimple_build_omp_single (gimple_seq, tree)
gimple gimple_build_omp_target (gimple_seq, int, tree)
gimple gimple_build_omp_teams (gimple_seq, tree)
gimple gimple_build_cdt (tree, tree)
gimple gimple_build_omp_atomic_load (tree, tree)
gimple gimple_build_omp_atomic_store (tree)
gimple gimple_build_transaction (gimple_seq, tree)
gimple gimple_build_predict (enum br_predictor, enum prediction)
enum
gimple_statement_structure_enum 
gss_for_assign (enum tree_code)
void sort_case_labels (vec< tree >)
void preprocess_case_label_vec_for_gimple (vec< tree >, tree, tree *)
void gimple_set_body (tree, gimple_seq)
gimple_seq gimple_body (tree)
bool gimple_has_body_p (tree)
gimple_seq gimple_seq_alloc (void)
void gimple_seq_free (gimple_seq)
void gimple_seq_add_seq (gimple_seq *, gimple_seq)
gimple_seq gimple_seq_copy (gimple_seq)
bool gimple_call_same_target_p (const_gimple, const_gimple)
int gimple_call_flags (const_gimple)
int gimple_call_return_flags (const_gimple)
int gimple_call_arg_flags (const_gimple, unsigned)
void gimple_call_reset_alias_info (gimple)
bool gimple_assign_copy_p (gimple)
bool gimple_assign_ssa_name_copy_p (gimple)
bool gimple_assign_unary_nop_p (gimple)
void gimple_set_bb (gimple, basic_block)
void gimple_assign_set_rhs_from_tree (gimple_stmt_iterator *, tree)
void gimple_assign_set_rhs_with_ops_1 (gimple_stmt_iterator *, enum tree_code, tree, tree, tree)
tree gimple_get_lhs (const_gimple)
void gimple_set_lhs (gimple, tree)
void gimple_replace_lhs (gimple, tree)
gimple gimple_copy (gimple)
void gimple_cond_get_ops_from_tree (tree, enum tree_code *, tree *, tree *)
gimple gimple_build_cond_from_tree (tree, tree, tree)
void gimple_cond_set_condition_from_tree (gimple, tree)
bool gimple_has_side_effects (const_gimple)
bool gimple_could_trap_p (gimple)
bool gimple_could_trap_p_1 (gimple, bool, bool)
bool gimple_assign_rhs_could_trap_p (gimple)
void gimple_regimplify_operands (gimple, gimple_stmt_iterator *)
bool empty_body_p (gimple_seq)
unsigned get_gimple_rhs_num_ops (enum tree_code)
gimple gimple_alloc_stat (enum gimple_code, unsigned MEM_STAT_DECL)
const char * gimple_decl_printable_name (tree, int)
bool virtual_operand_p (tree)
bool is_gimple_reg (tree)
bool is_gimple_variable (tree)
bool is_gimple_id (tree)
bool is_gimple_min_lval (tree)
bool is_gimple_addressable (tree)
bool is_gimple_lvalue (tree)
bool is_gimple_address (const_tree)
bool is_gimple_invariant_address (const_tree)
bool is_gimple_ip_invariant_address (const_tree)
bool is_gimple_constant (const_tree)
bool is_gimple_min_invariant (const_tree)
bool is_gimple_ip_invariant (const_tree)
bool is_gimple_val (tree)
bool is_gimple_asm_val (tree)
bool is_gimple_mem_ref_addr (tree)
bool is_gimple_condexpr (tree)
bool is_gimple_call_addr (tree)
bool is_gimple_builtin_call (gimple stmt)
void recalculate_side_effects (tree)
bool gimple_compare_field_offset (tree, tree)
tree gimple_unsigned_type (tree)
tree gimple_signed_type (tree)
alias_set_type gimple_get_alias_set (tree)
bool walk_stmt_load_store_addr_ops (gimple, void *, bool(*)(gimple, tree, void *), bool(*)(gimple, tree, void *), bool(*)(gimple, tree, void *))
bool walk_stmt_load_store_ops (gimple, void *, bool(*)(gimple, tree, void *), bool(*)(gimple, tree, void *))
bool gimple_ior_addresses_taken (bitmap, gimple)
bool gimple_call_builtin_p (gimple, enum built_in_class)
bool gimple_asm_clobbers_memory_p (const_gimple)
bool useless_type_conversion_p (tree, tree)
bool types_compatible_p (tree, tree)
tree create_tmp_var_raw (tree, const char *)
tree create_tmp_var_name (const char *)
tree create_tmp_var (tree, const char *)
tree create_tmp_reg (tree, const char *)
tree get_initialized_tmp_var (tree, gimple_seq *, gimple_seq *)
tree get_formal_tmp_var (tree, gimple_seq *)
void declare_vars (tree, gimple, bool)
void annotate_all_with_location (gimple_seq, location_t)
unsigned gimple_call_get_nobnd_arg_index (const_gimple, unsigned)
static bool is_gimple_sizepos ()
static unsigned int gimple_stmt_max_uid ()
static void set_gimple_stmt_max_uid ()
static unsigned int inc_gimple_stmt_max_uid ()
enum gimplify_status gimplify_expr (tree *, gimple_seq *, gimple_seq *, bool(*)(tree), fallback_t)
void gimplify_type_sizes (tree, gimple_seq *)
void gimplify_one_sizepos (tree *, gimple_seq *)
enum gimplify_status gimplify_self_mod_expr (tree *, gimple_seq *, gimple_seq *, bool, tree)
bool gimplify_stmt (tree *, gimple_seq *)
gimple gimplify_body (tree, bool)
void push_gimplify_context (struct gimplify_ctx *)
void pop_gimplify_context (gimple)
void gimplify_and_add (tree, gimple_seq *)
void gimple_add_tmp_var (tree)
gimple gimple_current_bind_expr (void)
vec< gimplegimple_bind_expr_stack (void)
tree voidify_wrapper_expr (tree, tree)
tree build_and_jump (tree *)
tree force_labels_r (tree *, int *, void *)
enum gimplify_status gimplify_va_arg_expr (tree *, gimple_seq *, gimple_seq *)
void omp_firstprivatize_variable (struct gimplify_omp_ctx *, tree)
tree gimple_boolify (tree)
gimple_predicate rhs_predicate_for (tree)
tree canonicalize_cond_expr_cond (tree)
void dump_decl_set (FILE *, bitmap)
bool gimple_can_coalesce_p (tree, tree)
bool nonfreeing_call_p (gimple)
tree copy_var_decl (tree, tree, tree)
void diagnose_tm_safe_errors (tree)
void compute_transaction_bits (void)
void lower_nested_functions (tree)
void insert_field_into_struct (tree, tree)
void gimplify_function_tree (tree)
tree gimple_assign_rhs_to_tree (gimple)
bool validate_gimple_arglist (const_gimple,...)
static gimple_seq_node gimple_seq_first ()
static gimple gimple_seq_first_stmt ()
static gimple_seq_node gimple_seq_last ()
static gimple gimple_seq_last_stmt ()
static void gimple_seq_set_last ()
static void gimple_seq_set_first ()
static bool gimple_seq_empty_p ()
void gimple_seq_add_stmt (gimple_seq *, gimple)
void gimple_seq_add_stmt_without_update (gimple_seq *, gimple)
static gimple_seq gimple_seq_alloc_with_stmt ()
static gimple_seq bb_seq ()
static gimple_seqbb_seq_addr ()
static void set_bb_seq ()
static enum gimple_code gimple_code ()
static enum
gimple_statement_structure_enum 
gss_for_code ()
static enum
gimple_statement_structure_enum 
gimple_statement_structure ()
static bool gimple_has_substatements ()
static basic_block gimple_bb ()
static tree gimple_block ()
static void gimple_set_block ()
static location_t gimple_location ()
static const location_tgimple_location_ptr ()
static void gimple_set_location ()
static bool gimple_has_location ()
static const char * gimple_filename ()
static int gimple_lineno ()
static bool gimple_seq_singleton_p ()
static bool gimple_no_warning_p ()
static void gimple_set_no_warning ()
static void gimple_set_visited ()
static bool gimple_visited_p ()
static void gimple_set_plf ()
static unsigned int gimple_plf ()
static void gimple_set_uid ()
static unsigned gimple_uid ()
static void gimple_init_singleton ()
static bool gimple_has_ops ()
static bool gimple_has_mem_ops ()
static struct use_optype_dgimple_use_ops ()
static void gimple_set_use_ops ()
static tree gimple_vuse ()
static tree gimple_vdef ()
static treegimple_vuse_ptr ()
static treegimple_vdef_ptr ()
static void gimple_set_vuse ()
static void gimple_set_vdef ()
static bool gimple_modified_p ()
static void gimple_set_modified ()
static enum tree_code gimple_expr_code ()
static bool gimple_has_volatile_ops ()
static void gimple_set_has_volatile_ops ()
static bool block_in_transaction ()
static bool gimple_in_transaction ()
static bool gimple_references_memory_p ()
static unsigned gimple_omp_subcode ()
static void gimple_omp_set_subcode ()
static void gimple_omp_return_set_nowait ()
static bool gimple_omp_return_nowait_p ()
static void gimple_omp_return_set_lhs ()
static tree gimple_omp_return_lhs ()
static treegimple_omp_return_lhs_ptr ()
static bool gimple_omp_section_last_p ()
static void gimple_omp_section_set_last ()
static bool gimple_omp_parallel_combined_p ()
static void gimple_omp_parallel_set_combined_p ()
static bool gimple_omp_atomic_need_value_p ()
static void gimple_omp_atomic_set_need_value ()
static bool gimple_omp_atomic_seq_cst_p ()
static void gimple_omp_atomic_set_seq_cst ()
static unsigned gimple_num_ops ()
static void gimple_set_num_ops ()
static treegimple_ops ()
static tree gimple_op ()
static treegimple_op_ptr ()
static void gimple_set_op ()
static bool is_gimple_assign ()
static enum gimple_rhs_class get_gimple_rhs_class ()
static tree gimple_assign_lhs ()
static treegimple_assign_lhs_ptr ()
static void gimple_assign_set_lhs ()
static tree gimple_assign_rhs1 ()
static treegimple_assign_rhs1_ptr ()
static void gimple_assign_set_rhs1 ()
static tree gimple_assign_rhs2 ()
static treegimple_assign_rhs2_ptr ()
static void gimple_assign_set_rhs2 ()
static tree gimple_assign_rhs3 ()
static treegimple_assign_rhs3_ptr ()
static void gimple_assign_set_rhs3 ()
static void gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code, tree op1, tree op2)
static void extract_ops_from_tree (tree expr, enum tree_code *code, tree *op0, tree *op1)
static bool gimple_assign_nontemporal_move_p ()
static void gimple_assign_set_nontemporal_move ()
static enum tree_code gimple_assign_rhs_code ()
static void gimple_assign_set_rhs_code ()
static enum gimple_rhs_class gimple_assign_rhs_class ()
static bool gimple_assign_single_p ()
static bool gimple_store_p ()
static bool gimple_assign_load_p ()
static bool gimple_assign_cast_p ()
static bool gimple_clobber_p ()
static bool is_gimple_call ()
static tree gimple_call_lhs ()
static treegimple_call_lhs_ptr ()
static void gimple_call_set_lhs ()
static bool gimple_call_internal_p ()
static enum internal_fn gimple_call_internal_fn ()
static tree gimple_call_fntype ()
static void gimple_call_set_fntype ()
static tree gimple_call_fn ()
static treegimple_call_fn_ptr ()
static void gimple_call_set_fn ()
static void gimple_call_set_fndecl ()
static void gimple_call_set_internal_fn ()
static tree gimple_call_addr_fndecl ()
static tree gimple_call_fndecl ()
static tree gimple_call_return_type ()
static tree gimple_call_chain ()
static treegimple_call_chain_ptr ()
static void gimple_call_set_chain ()
static unsigned gimple_call_num_args ()
static tree gimple_call_arg ()
static unsigned gimple_call_num_nobnd_args ()
static tree gimple_call_nobnd_arg ()
static treegimple_call_arg_ptr ()
static void gimple_call_set_arg ()
static void gimple_call_set_tail ()
static bool gimple_call_tail_p ()
static void gimple_call_set_return_slot_opt ()
static bool gimple_call_return_slot_opt_p ()
static void gimple_call_set_from_thunk ()
static bool gimple_call_from_thunk_p ()
static void gimple_call_set_va_arg_pack ()
static bool gimple_call_va_arg_pack_p ()
static bool gimple_call_noreturn_p ()
static void gimple_call_set_nothrow ()
static bool gimple_call_nothrow_p ()
static void gimple_call_set_alloca_for_var ()
static bool gimple_call_alloca_for_var_p ()
static void gimple_call_copy_flags ()
static struct pt_solutiongimple_call_use_set ()
static struct pt_solutiongimple_call_clobber_set ()
static bool gimple_has_lhs ()
static enum tree_code gimple_cond_code ()
static void gimple_cond_set_code ()
static tree gimple_cond_lhs ()
static treegimple_cond_lhs_ptr ()
static void gimple_cond_set_lhs ()
static tree gimple_cond_rhs ()
static treegimple_cond_rhs_ptr ()
static void gimple_cond_set_rhs ()
static tree gimple_cond_true_label ()
static void gimple_cond_set_true_label ()
static void gimple_cond_set_false_label ()
static tree gimple_cond_false_label ()
static void gimple_cond_make_false ()
static void gimple_cond_make_true ()
static bool gimple_cond_true_p ()
static bool gimple_cond_false_p ()
static void gimple_cond_set_condition ()
static tree gimple_label_label ()
static void gimple_label_set_label ()
static tree gimple_goto_dest ()
static void gimple_goto_set_dest ()
static tree gimple_bind_vars ()
static void gimple_bind_set_vars ()
static void gimple_bind_append_vars ()
static gimple_seqgimple_bind_body_ptr ()
static gimple_seq gimple_bind_body ()
static void gimple_bind_set_body ()
static void gimple_bind_add_stmt ()
static void gimple_bind_add_seq ()
static tree gimple_bind_block ()
static void gimple_bind_set_block ()
static unsigned gimple_asm_ninputs ()
static unsigned gimple_asm_noutputs ()
static unsigned gimple_asm_nclobbers ()
static unsigned gimple_asm_nlabels ()
static tree gimple_asm_input_op ()
static treegimple_asm_input_op_ptr ()
static void gimple_asm_set_input_op ()
static tree gimple_asm_output_op ()
static treegimple_asm_output_op_ptr ()
static void gimple_asm_set_output_op ()
static tree gimple_asm_clobber_op ()
static void gimple_asm_set_clobber_op ()
static tree gimple_asm_label_op ()
static void gimple_asm_set_label_op ()
static const char * gimple_asm_string ()
static bool gimple_asm_volatile_p ()
static void gimple_asm_set_volatile ()
static void gimple_asm_set_input ()
static bool gimple_asm_input_p ()
static tree gimple_catch_types ()
static treegimple_catch_types_ptr ()
static gimple_seqgimple_catch_handler_ptr ()
static gimple_seq gimple_catch_handler ()
static void gimple_catch_set_types ()
static void gimple_catch_set_handler ()
static tree gimple_eh_filter_types ()
static treegimple_eh_filter_types_ptr ()
static gimple_seqgimple_eh_filter_failure_ptr ()
static gimple_seq gimple_eh_filter_failure ()
static void gimple_eh_filter_set_types ()
static void gimple_eh_filter_set_failure ()
static tree gimple_eh_must_not_throw_fndecl ()
static void gimple_eh_must_not_throw_set_fndecl ()
static gimple_seqgimple_eh_else_n_body_ptr ()
static gimple_seq gimple_eh_else_n_body ()
static gimple_seqgimple_eh_else_e_body_ptr ()
static gimple_seq gimple_eh_else_e_body ()
static void gimple_eh_else_set_n_body ()
static void gimple_eh_else_set_e_body ()
static enum gimple_try_flags gimple_try_kind ()
static void gimple_try_set_kind ()
static bool gimple_try_catch_is_cleanup ()
static gimple_seqgimple_try_eval_ptr ()
static gimple_seq gimple_try_eval ()
static gimple_seqgimple_try_cleanup_ptr ()
static gimple_seq gimple_try_cleanup ()
static void gimple_try_set_catch_is_cleanup ()
static void gimple_try_set_eval ()
static void gimple_try_set_cleanup ()
static gimple_seqgimple_wce_cleanup_ptr ()
static gimple_seq gimple_wce_cleanup ()
static void gimple_wce_set_cleanup ()
static bool gimple_wce_cleanup_eh_only ()
static void gimple_wce_set_cleanup_eh_only ()
static unsigned gimple_phi_capacity ()
static unsigned gimple_phi_num_args ()
static tree gimple_phi_result ()
static treegimple_phi_result_ptr ()
static void gimple_phi_set_result ()
static struct phi_arg_d * gimple_phi_arg ()
static void gimple_phi_set_arg ()
static bool phi_ssa_name_p ()
static gimple_seq phi_nodes ()
static gimple_seqphi_nodes_ptr ()
static tree gimple_phi_arg_def ()
static treegimple_phi_arg_def_ptr ()
static edge gimple_phi_arg_edge ()
static source_location gimple_phi_arg_location ()
static source_location gimple_phi_arg_location_from_edge ()
static void gimple_phi_arg_set_location ()
static bool gimple_phi_arg_has_location ()
static int gimple_resx_region ()
static void gimple_resx_set_region ()
static int gimple_eh_dispatch_region ()
static void gimple_eh_dispatch_set_region ()
static unsigned gimple_switch_num_labels ()
static void gimple_switch_set_num_labels ()
static tree gimple_switch_index ()
static treegimple_switch_index_ptr ()
static void gimple_switch_set_index ()
static tree gimple_switch_label ()
static void gimple_switch_set_label ()
static tree gimple_switch_default_label ()
static void gimple_switch_set_default_label ()
static bool is_gimple_debug ()
static bool gimple_debug_bind_p ()
static tree gimple_debug_bind_get_var ()
static tree gimple_debug_bind_get_value ()
static treegimple_debug_bind_get_value_ptr ()
static void gimple_debug_bind_set_var ()
static void gimple_debug_bind_set_value ()
static void gimple_debug_bind_reset_value ()
static bool gimple_debug_bind_has_value_p ()
static bool gimple_debug_source_bind_p ()
static tree gimple_debug_source_bind_get_var ()
static tree gimple_debug_source_bind_get_value ()
static treegimple_debug_source_bind_get_value_ptr ()
static void gimple_debug_source_bind_set_var ()
static void gimple_debug_source_bind_set_value ()
static int get_lineno ()
static gimple_seqgimple_omp_body_ptr ()
static gimple_seq gimple_omp_body ()
static void gimple_omp_set_body ()
static tree gimple_omp_critical_name ()
static treegimple_omp_critical_name_ptr ()
static void gimple_omp_critical_set_name ()
static int gimple_omp_for_kind ()
static void gimple_omp_for_set_kind ()
static bool gimple_omp_for_combined_p ()
static void gimple_omp_for_set_combined_p ()
static bool gimple_omp_for_combined_into_p ()
static void gimple_omp_for_set_combined_into_p ()
static tree gimple_omp_for_clauses ()
static treegimple_omp_for_clauses_ptr ()
static void gimple_omp_for_set_clauses ()
static size_t gimple_omp_for_collapse ()
static tree gimple_omp_for_index ()
static treegimple_omp_for_index_ptr ()
static void gimple_omp_for_set_index ()
static tree gimple_omp_for_initial ()
static treegimple_omp_for_initial_ptr ()
static void gimple_omp_for_set_initial ()
static tree gimple_omp_for_final ()
static treegimple_omp_for_final_ptr ()
static void gimple_omp_for_set_final ()
static tree gimple_omp_for_incr ()
static treegimple_omp_for_incr_ptr ()
static void gimple_omp_for_set_incr ()
static gimple_seqgimple_omp_for_pre_body_ptr ()
static gimple_seq gimple_omp_for_pre_body ()
static void gimple_omp_for_set_pre_body ()
static tree gimple_omp_parallel_clauses ()
static treegimple_omp_parallel_clauses_ptr ()
static void gimple_omp_parallel_set_clauses ()
static tree gimple_omp_parallel_child_fn ()
static treegimple_omp_parallel_child_fn_ptr ()
static void gimple_omp_parallel_set_child_fn ()
static tree gimple_omp_parallel_data_arg ()
static treegimple_omp_parallel_data_arg_ptr ()
static void gimple_omp_parallel_set_data_arg ()
static tree gimple_omp_task_clauses ()
static treegimple_omp_task_clauses_ptr ()
static void gimple_omp_task_set_clauses ()
static tree gimple_omp_task_child_fn ()
static treegimple_omp_task_child_fn_ptr ()
static void gimple_omp_task_set_child_fn ()
static tree gimple_omp_task_data_arg ()
static treegimple_omp_task_data_arg_ptr ()
static void gimple_omp_task_set_data_arg ()
static tree gimple_omp_taskreg_clauses ()
static treegimple_omp_taskreg_clauses_ptr ()
static void gimple_omp_taskreg_set_clauses ()
static tree gimple_omp_taskreg_child_fn ()
static treegimple_omp_taskreg_child_fn_ptr ()
static void gimple_omp_taskreg_set_child_fn ()
static tree gimple_omp_taskreg_data_arg ()
static treegimple_omp_taskreg_data_arg_ptr ()
static void gimple_omp_taskreg_set_data_arg ()
static tree gimple_omp_task_copy_fn ()
static treegimple_omp_task_copy_fn_ptr ()
static void gimple_omp_task_set_copy_fn ()
static tree gimple_omp_task_arg_size ()
static treegimple_omp_task_arg_size_ptr ()
static void gimple_omp_task_set_arg_size ()
static tree gimple_omp_task_arg_align ()
static treegimple_omp_task_arg_align_ptr ()
static void gimple_omp_task_set_arg_align ()
static tree gimple_omp_single_clauses ()
static treegimple_omp_single_clauses_ptr ()
static void gimple_omp_single_set_clauses ()
static tree gimple_omp_target_clauses ()
static treegimple_omp_target_clauses_ptr ()
static void gimple_omp_target_set_clauses ()
static int gimple_omp_target_kind ()
static void gimple_omp_target_set_kind ()
static tree gimple_omp_target_child_fn ()
static treegimple_omp_target_child_fn_ptr ()
static void gimple_omp_target_set_child_fn ()
static tree gimple_omp_target_data_arg ()
static treegimple_omp_target_data_arg_ptr ()
static void gimple_omp_target_set_data_arg ()
static tree gimple_omp_teams_clauses ()
static treegimple_omp_teams_clauses_ptr ()
static void gimple_omp_teams_set_clauses ()
static tree gimple_omp_sections_clauses ()
static treegimple_omp_sections_clauses_ptr ()
static void gimple_omp_sections_set_clauses ()
static tree gimple_omp_sections_control ()
static treegimple_omp_sections_control_ptr ()
static void gimple_omp_sections_set_control ()
static void gimple_omp_for_set_cond ()
static enum tree_code gimple_omp_for_cond ()
static void gimple_omp_atomic_store_set_val ()
static tree gimple_omp_atomic_store_val ()
static treegimple_omp_atomic_store_val_ptr ()
static void gimple_omp_atomic_load_set_lhs ()
static tree gimple_omp_atomic_load_lhs ()
static treegimple_omp_atomic_load_lhs_ptr ()
static void gimple_omp_atomic_load_set_rhs ()
static tree gimple_omp_atomic_load_rhs ()
static treegimple_omp_atomic_load_rhs_ptr ()
static tree gimple_omp_continue_control_def ()
static treegimple_omp_continue_control_def_ptr ()
static void gimple_omp_continue_set_control_def ()
static tree gimple_omp_continue_control_use ()
static treegimple_omp_continue_control_use_ptr ()
static void gimple_omp_continue_set_control_use ()
static gimple_seqgimple_transaction_body_ptr ()
static gimple_seq gimple_transaction_body ()
static tree gimple_transaction_label ()
static treegimple_transaction_label_ptr ()
static unsigned int gimple_transaction_subcode ()
static void gimple_transaction_set_body ()
static void gimple_transaction_set_label ()
static void gimple_transaction_set_subcode ()
static treegimple_return_retval_ptr ()
static tree gimple_return_retval ()
static void gimple_return_set_retval ()
static tree gimple_return_retbnd ()
static void gimple_return_set_retbnd ()
static bool is_gimple_omp ()
static bool gimple_nop_p ()
static bool is_gimple_resx ()
static enum br_predictor gimple_predict_predictor ()
static void gimple_predict_set_predictor ()
static enum prediction gimple_predict_outcome ()
static void gimple_predict_set_outcome ()
static tree gimple_expr_type ()
static bool is_gimple_reg_type ()
static gimple_stmt_iterator gsi_start_1 ()
static gimple_stmt_iterator gsi_none ()
static gimple_stmt_iterator gsi_start_bb ()
static gimple_stmt_iterator gsi_last_1 ()
static gimple_stmt_iterator gsi_last_bb ()
static bool gsi_end_p ()
static bool gsi_one_before_end_p ()
static void gsi_next ()
static void gsi_prev ()
static gimple gsi_stmt ()
static gimple_stmt_iterator gsi_after_labels ()
static void gsi_next_nondebug ()
static void gsi_prev_nondebug ()
static gimple_stmt_iterator gsi_start_nondebug_bb ()
static gimple_stmt_iterator gsi_start_nondebug_after_labels_bb ()
static gimple_stmt_iterator gsi_last_nondebug_bb ()
static basic_block gsi_bb ()
static gimple_seq gsi_seq ()
gimple_stmt_iterator gsi_start_phis (basic_block)
gimple_seq gsi_split_seq_after (gimple_stmt_iterator)
void gsi_split_seq_before (gimple_stmt_iterator *, gimple_seq *)
void gsi_set_stmt (gimple_stmt_iterator *, gimple)
void gsi_replace (gimple_stmt_iterator *, gimple, bool)
void gsi_replace_with_seq (gimple_stmt_iterator *, gimple_seq, bool)
void gsi_insert_before (gimple_stmt_iterator *, gimple, enum gsi_iterator_update)
void gsi_insert_before_without_update (gimple_stmt_iterator *, gimple, enum gsi_iterator_update)
void gsi_insert_seq_before (gimple_stmt_iterator *, gimple_seq, enum gsi_iterator_update)
void gsi_insert_seq_before_without_update (gimple_stmt_iterator *, gimple_seq, enum gsi_iterator_update)
void gsi_insert_after (gimple_stmt_iterator *, gimple, enum gsi_iterator_update)
void gsi_insert_after_without_update (gimple_stmt_iterator *, gimple, enum gsi_iterator_update)
void gsi_insert_seq_after (gimple_stmt_iterator *, gimple_seq, enum gsi_iterator_update)
void gsi_insert_seq_after_without_update (gimple_stmt_iterator *, gimple_seq, enum gsi_iterator_update)
bool gsi_remove (gimple_stmt_iterator *, bool)
gimple_stmt_iterator gsi_for_stmt (gimple)
void gsi_move_after (gimple_stmt_iterator *, gimple_stmt_iterator *)
void gsi_move_before (gimple_stmt_iterator *, gimple_stmt_iterator *)
void gsi_move_to_bb_end (gimple_stmt_iterator *, basic_block)
void gsi_insert_on_edge (edge, gimple)
void gsi_insert_seq_on_edge (edge, gimple_seq)
basic_block gsi_insert_on_edge_immediate (edge, gimple)
basic_block gsi_insert_seq_on_edge_immediate (edge, gimple_seq)
void gsi_commit_one_edge_insert (edge, basic_block *)
void gsi_commit_edge_inserts (void)
gimple gimple_call_copy_skip_args (gimple, bitmap)
tree force_gimple_operand_1 (tree, gimple_seq *, gimple_predicate, tree)
tree force_gimple_operand (tree, gimple_seq *, bool, tree)
tree force_gimple_operand_gsi_1 (gimple_stmt_iterator *, tree, gimple_predicate, tree, bool, enum gsi_iterator_update)
tree force_gimple_operand_gsi (gimple_stmt_iterator *, tree, bool, tree, bool, enum gsi_iterator_update)
gimple walk_gimple_seq (gimple_seq, walk_stmt_fn, walk_tree_fn, struct walk_stmt_info *)
gimple walk_gimple_seq_mod (gimple_seq *, walk_stmt_fn, walk_tree_fn, struct walk_stmt_info *)
tree walk_gimple_stmt (gimple_stmt_iterator *, walk_stmt_fn, walk_tree_fn, struct walk_stmt_info *)
tree walk_gimple_op (gimple, walk_tree_fn, struct walk_stmt_info *)
static enum gimple_alloc_kind gimple_alloc_kind ()
void dump_gimple_statistics (void)
static void gimple_seq_set_location ()

Variables

const char *const gimple_code_name []
const unsigned char gimple_rhs_class_table []
size_t const gimple_ops_offset_ []
enum
gimple_statement_structure_enum
const 
gss_for_code_ []
gimple currently_expanding_gimple_stmt
int gimple_alloc_counts []
int gimple_alloc_sizes []

Typedef Documentation

typedef struct gimple_temp_hash_elt elt_t
   Formal (expression) temporary table handling: multiple occurrences of
   the same scalar expression are evaluated into the same temporary.  
typedef int fallback_t
typedef bool(* gimple_predicate)(tree)
   Validation of GIMPLE expressions.  Note that these predicates only check
   the basic form of the expression, they don't recurse to make sure that
   underlying nodes are also of the right form.  
typedef vec<gimple> gimple_vec
   For each block, the PHI nodes that need to be rewritten are stored into
   these vectors.  
typedef tree(* walk_stmt_fn)(gimple_stmt_iterator *, bool *, struct walk_stmt_info *)
   Callback for walk_gimple_stmt.  Called for every statement found
   during traversal.  The first argument points to the statement to
   walk.  The second argument is a flag that the callback sets to
   'true' if it the callback handled all the operands and
   sub-statements of the statement (the default value of this flag is
   'false').  The third argument is an anonymous pointer to data
   to be used by the callback.  

Enumeration Type Documentation

enum fallback
   FIXME we should deduce this from the predicate.  
Enumerator:
fb_none 
fb_rvalue 
fb_lvalue 
fb_mayfail 
fb_either 
enum gf_mask
   Specific flags for individual GIMPLE statements.  These flags are
   always stored in gimple_statement_base.subcode and they may only be
   defined for statement codes that do not use subcodes.

   Values for the masks can overlap as long as the overlapping values
   are never used in the same statement class.

   The maximum mask value that can be defined is 1 << 15 (i.e., each
   statement code can hold up to 16 bitflags).

   Keep this list sorted.  
Enumerator:
GF_ASM_INPUT 
GF_ASM_VOLATILE 
GF_CALL_FROM_THUNK 
GF_CALL_RETURN_SLOT_OPT 
GF_CALL_TAILCALL 
GF_CALL_VA_ARG_PACK 
GF_CALL_NOTHROW 
GF_CALL_ALLOCA_FOR_VAR 
GF_CALL_INTERNAL 
GF_OMP_PARALLEL_COMBINED 
GF_OMP_FOR_KIND_MASK 
GF_OMP_FOR_KIND_FOR 
GF_OMP_FOR_KIND_SIMD 
GF_OMP_FOR_KIND_DISTRIBUTE 
GF_OMP_FOR_COMBINED 
GF_OMP_FOR_COMBINED_INTO 
GF_OMP_TARGET_KIND_MASK 
GF_OMP_TARGET_KIND_REGION 
GF_OMP_TARGET_KIND_DATA 
GF_OMP_TARGET_KIND_UPDATE 
GF_OMP_RETURN_NOWAIT 
       True on an GIMPLE_OMP_RETURN statement if the return does not require
       a thread synchronization via some sort of barrier.  The exact barrier
       that would otherwise be emitted is dependent on the OMP statement with
       which this return is associated.  
GF_OMP_SECTION_LAST 
GF_OMP_ATOMIC_NEED_VALUE 
GF_OMP_ATOMIC_SEQ_CST 
GF_PREDICT_TAKEN 
   Enum and arrays used for allocation stats.  Keep in sync with
   gimple.c:gimple_alloc_kind_names.  
Enumerator:
gimple_alloc_kind_assign 
gimple_alloc_kind_phi 
gimple_alloc_kind_cond 
gimple_alloc_kind_rest 
gimple_alloc_kind_all 
Enumerator:
LAST_AND_UNUSED_GIMPLE_CODE 
   Currently, there are only two types of gimple debug stmt.  Others are
   envisioned, for example, to enable the generation of is_stmt notes
   in line number information, to mark sequence points, etc.  This
   subcode is to be used to tell them apart.  
Enumerator:
GIMPLE_DEBUG_BIND 
GIMPLE_DEBUG_SOURCE_BIND 
   Class of GIMPLE expressions suitable for the RHS of assignments.  See
   get_gimple_rhs_class.  
Enumerator:
GIMPLE_INVALID_RHS 
GIMPLE_TERNARY_RHS 
GIMPLE_BINARY_RHS 
GIMPLE_UNARY_RHS 
GIMPLE_SINGLE_RHS 
Enumerator:
LAST_GSS_ENUM 
   Kind of GIMPLE_TRY statements.  
Enumerator:
GIMPLE_TRY_CATCH 
     A try/catch.  
GIMPLE_TRY_FINALLY 
     A try/finally.  
GIMPLE_TRY_KIND 
GIMPLE_TRY_CATCH_IS_CLEANUP 
     Analogous to TRY_CATCH_IS_CLEANUP.  
Enumerator:
GS_ERROR 
GS_UNHANDLED 
GS_OK 
GS_ALL_DONE 
Enumerator:
GSI_NEW_STMT 
GSI_SAME_STMT 
GSI_CONTINUE_LINKING 
enum plf_mask
   Masks for selecting a pass local flag (PLF) to work on.  These
   masks are used by gimple_set_plf and gimple_plf.  
Enumerator:
GF_PLF_1 
GF_PLF_2 

Function Documentation

void annotate_all_with_location ( gimple_seq  ,
location_t   
)

Referenced by finalize_nesting_tree_1().

static gimple_seq bb_seq ( )
inlinestatic
   Returns the sequence of statements in BB.  
static gimple_seq* bb_seq_addr ( )
inlinestatic
static bool block_in_transaction ( )
inlinestatic
   Return true if BB is in a transaction.  
tree build_and_jump ( tree )
tree canonicalize_cond_expr_cond ( tree  )
void compute_transaction_bits ( void  )
   Set the IN_TRANSACTION for all gimple statements that appear in a
   transaction.  
     ?? Perhaps we need to abstract gate_tm_init further, because we
     certainly don't need it to calculate CDI_DOMINATOR info.  
tree copy_var_decl ( tree  ,
tree  ,
tree   
)
tree create_tmp_reg ( tree  ,
const char *   
)
tree create_tmp_var_name ( const char *  )

Referenced by create_tmp_var_name().

tree create_tmp_var_raw ( tree  ,
const char *   
)
   In gimplify.c  

Referenced by create_tmp_var_raw().

void declare_vars ( tree  ,
gimple  ,
bool   
)

Referenced by remap_vla_decls().

void diagnose_tm_safe_errors ( tree  )
   In trans-mem.c.  
void dump_decl_set ( FILE *  ,
bitmap   
)
void dump_gimple_statistics ( void  )
   Print debugging information for gimple stmts generated.  

References handled_component_p(), and is_gimple_val().

bool empty_body_p ( gimple_seq  )
static void extract_ops_from_tree ( tree  expr,
enum tree_code code,
tree op0,
tree op1 
)
inlinestatic
   A wrapper around extract_ops_from_tree_1, for callers which expect
   to see only a maximum of two operands.  

Referenced by gimplify_assign().

void extract_ops_from_tree_1 ( tree  expr,
enum tree_code subcode_p,
tree op1_p,
tree op2_p,
tree op3_p 
)
   Extract the operands and code for expression EXPR into *SUBCODE_P,
   *OP1_P, *OP2_P and *OP3_P respectively.  

Referenced by gimple_call_return_flags().

tree force_gimple_operand ( tree  ,
gimple_seq ,
bool  ,
tree   
)
tree force_gimple_operand_1 ( tree  expr,
gimple_seq stmts,
gimple_predicate  gimple_test_f,
tree  var 
)
   In gimplify.c.  
   Expand EXPR to list of gimple statements STMTS.  GIMPLE_TEST_F specifies
   the predicate that will hold for the result.  If VAR is not NULL, make the
   base variable of the final destination be VAR if suitable.  
     gimple_test_f might be more strict than is_gimple_val, make
     sure we pass both.  Just checking gimple_test_f doesn't work
     because most gimple predicates do not work recursively.  

Referenced by add_to_predicate_list(), and vect_create_cond_for_alias_checks().

tree force_gimple_operand_gsi ( gimple_stmt_iterator gsi,
tree  expr,
bool  simple_p,
tree  var,
bool  before,
enum gsi_iterator_update  m 
)
   Invoke force_gimple_operand_1 for EXPR with parameter VAR.
   If SIMPLE is true, force the result to be either ssa_name or an invariant,
   otherwise just force it to be a rhs expression.  If some statements are
   produced, emits them at GSI.  If BEFORE is true, the statements are
   appended before GSI, otherwise they are appended after it.  M specifies
   the way GSI moves after insertion (GSI_SAME_STMT or GSI_CONTINUE_LINKING
   are the usual values).  

Referenced by build_one_array(), contains_vce_or_bfcref_p(), expand_omp_atomic_load(), expand_omp_sections(), generate_subtree_copies(), gimple_gen_one_value_profiler(), gimple_gen_pow2_profiler(), gimplify_mem_ref_parts(), ifcombine_ifandif(), nothing_to_prefetch_p(), sra_modify_expr(), update_dominators_in_loop(), and vect_can_advance_ivs_p().

tree force_gimple_operand_gsi_1 ( gimple_stmt_iterator gsi,
tree  expr,
gimple_predicate  gimple_test_f,
tree  var,
bool  before,
enum gsi_iterator_update  m 
)
   Invoke force_gimple_operand_1 for EXPR with parameters GIMPLE_TEST_F
   and VAR.  If some statements are produced, emits them at GSI.
   If BEFORE is true.  the statements are appended before GSI, otherwise
   they are appended after it.  M specifies the way GSI moves after
   insertion (GSI_SAME_STMT or GSI_CONTINUE_LINKING are the usual values).  

Referenced by create_mem_ref(), if_convertible_loop_p(), and insert_gimplified_predicates().

tree force_labels_r ( tree ,
int *  ,
void *   
)

Referenced by gimplify_init_ctor_eval().

tree get_formal_tmp_var ( tree  ,
gimple_seq  
)
static enum gimple_rhs_class get_gimple_rhs_class ( )
inlinestatic
   Determine if expression CODE is one of the valid expressions that can
   be used on the RHS of GIMPLE assignments.  

Referenced by extract_range_from_cond_expr(), get_initial_def_for_reduction(), gimple_has_side_effects(), is_negative_overflow_infinity(), and range_is_null().

unsigned get_gimple_rhs_num_ops ( enum  tree_code)
tree get_initialized_tmp_var ( tree  ,
gimple_seq ,
gimple_seq  
)
static int get_lineno ( )
inlinestatic
   Return the line number for EXPR, or return -1 if we have no line
   number information for it.  
void gimple_add_tmp_var ( tree  )
   Miscellaneous helpers.  

Referenced by create_tmp_var_raw().

static enum gimple_alloc_kind gimple_alloc_kind ( )
inlinestatic
   Return the allocation kind for a given stmt CODE.  
gimple gimple_alloc_stat ( enum  gimple_code,
unsigned  MEM_STAT_DECL 
)
static tree gimple_asm_clobber_op ( )
inlinestatic
   Return clobber operand INDEX of GIMPLE_ASM GS.  
bool gimple_asm_clobbers_memory_p ( const_gimple  )
static tree gimple_asm_input_op ( )
inlinestatic
   Return input operand INDEX of GIMPLE_ASM GS.  

Referenced by create_outofssa_var_map().

static tree* gimple_asm_input_op_ptr ( )
inlinestatic
   Return a pointer to input operand INDEX of GIMPLE_ASM GS.  
static bool gimple_asm_input_p ( )
inlinestatic
   Return true if asm GS is an ASM_INPUT.  

Referenced by dump_function_to_file().

static tree gimple_asm_label_op ( )
inlinestatic
   Return label operand INDEX of GIMPLE_ASM GS.  

Referenced by cleanup_dead_labels().

static unsigned gimple_asm_nclobbers ( )
inlinestatic
   Return the number of clobber operands for GIMPLE_ASM GS.  
static unsigned gimple_asm_ninputs ( )
inlinestatic
   Return the number of input operands for GIMPLE_ASM GS.  

Referenced by create_outofssa_var_map().

static unsigned gimple_asm_nlabels ( )
inlinestatic
   Return the number of label operands for GIMPLE_ASM GS.  
static unsigned gimple_asm_noutputs ( )
inlinestatic
   Return the number of output operands for GIMPLE_ASM GS.  

Referenced by create_outofssa_var_map(), and op_iter_next_tree().

static tree gimple_asm_output_op ( )
inlinestatic
   Return output operand INDEX of GIMPLE_ASM GS.  

Referenced by create_outofssa_var_map(), and fold_stmt_1().

static tree* gimple_asm_output_op_ptr ( )
inlinestatic
   Return a pointer to output operand INDEX of GIMPLE_ASM GS.  
static void gimple_asm_set_clobber_op ( )
inlinestatic
   Set CLOBBER_OP to be clobber operand INDEX in GIMPLE_ASM GS.  

Referenced by gimple_build_asm_1().

static void gimple_asm_set_input ( )
inlinestatic
   If INPUT_P is true, mark asm GS as an ASM_INPUT.  
static void gimple_asm_set_input_op ( )
inlinestatic
   Set IN_OP to be input operand INDEX in GIMPLE_ASM GS.  

Referenced by gimple_build_asm_1().

static void gimple_asm_set_label_op ( )
inlinestatic
   Set LABEL_OP to be label operand INDEX in GIMPLE_ASM GS.  

Referenced by gimple_build_asm_1().

static void gimple_asm_set_output_op ( )
inlinestatic
   Set OUT_OP to be output operand INDEX in GIMPLE_ASM GS.  

Referenced by gimple_build_asm_1().

static void gimple_asm_set_volatile ( )
inlinestatic
   If VOLATLE_P is true, mark asm statement GS as volatile.  
static const char* gimple_asm_string ( )
inlinestatic
   Return the string representing the assembly instruction in
   GIMPLE_ASM GS.  
static bool gimple_asm_volatile_p ( )
inlinestatic
   Return true if GS is an asm statement marked volatile.  

Referenced by check_stmt(), dump_function_to_file(), and tree_could_trap_p().

static bool gimple_assign_cast_p ( )
inlinestatic
   Return true if S is a type-cast assignment.  

Referenced by infer_value_range().

bool gimple_assign_copy_p ( gimple  )
static tree* gimple_assign_lhs_ptr ( )
inlinestatic
   Return a pointer to the LHS of assignment statement GS.  
static bool gimple_assign_load_p ( )
inlinestatic
   Return true if GS is an assignment that loads from its rhs1.  

Referenced by instrument_gimple(), and ipa_prop_write_all_agg_replacement().

static bool gimple_assign_nontemporal_move_p ( )
inlinestatic
   Returns true if GS is a nontemporal move.  
static tree gimple_assign_rhs1 ( )
inlinestatic
   Return the first operand on the RHS of assignment statement GS.  

Referenced by add_repeat_to_ops_vec(), adjust_related_strinfos(), ao_ref_base_alias_set(), build_access_from_expr_1(), can_propagate_from(), check_bool_pattern(), check_for_plus_in_loops_1(), constant_pointer_difference(), contains_vce_or_bfcref_p(), convert_plusminus_to_widen(), convert_tree_comp_to_rtx(), create_outofssa_var_map(), decrement_power(), expr_has_constants(), extract_range_from_cond_expr(), find_loop_niter(), find_use_stmt(), forward_propagate_addr_expr(), forward_propagate_into_cond(), gen_conditions_for_pow_cst_base(), get_initial_def_for_reduction(), get_name_for_bit_test(), get_prop_dest_stmt(), get_rank(), gimple_call_fnspec(), gimple_stmt_nonnegative_warnv_p(), handle_pointer_plus(), infer_value_range(), insert_gimplified_predicates(), instrument_gimple(), ipa_load_from_parm_agg(), ipa_prop_write_all_agg_replacement(), is_negative_overflow_infinity(), is_true_predicate(), is_vptr_store(), jump_function_from_stmt(), linearize_expr(), live_track_init(), mark_modified(), mark_stmt_if_obviously_necessary(), may_propagate_copy_into_asm(), may_reassociate_p(), maybe_dump_rtl_for_gimple_stmt(), optimize_omp_library_calls(), phi_result_unknown_predicate(), process_assert_insertions_for(), propagate_with_phi(), range_is_null(), recognize_single_bit_test(), register_edge_assert_for_1(), remove_dead_stmt(), rewrite_reciprocal(), same_bool_result_p(), simplify_binary_expression(), simplify_bitwise_binary_1(), simplify_conversion_from_bitmask(), simplify_gimple_switch_label_vec(), tm_log_emit_restores(), tree_nrv(), type_for_widest_vector_mode(), unmodified_parm(), vect_build_slp_tree_1(), vect_create_vectorized_demotion_stmts(), vn_reference_lookup_3(), vrp_intersect_ranges_1(), walk_gimple_asm(), and warn_uninitialized_vars().

static tree* gimple_assign_rhs1_ptr ( )
inlinestatic
   Return a pointer to the first operand on the RHS of assignment
   statement GS.  

Referenced by record_use().

static tree* gimple_assign_rhs2_ptr ( )
inlinestatic
   Return a pointer to the second operand on the RHS of assignment
   statement GS.  

Referenced by record_use().

static tree gimple_assign_rhs3 ( )
inlinestatic
   Return the third operand on the RHS of assignment statement GS.
   If GS does not have two operands, NULL is returned instead.  

Referenced by tm_log_emit_restores().

static tree* gimple_assign_rhs3_ptr ( )
inlinestatic
   Return a pointer to the third operand on the RHS of assignment
   statement GS.  
static enum gimple_rhs_class gimple_assign_rhs_class ( )
inlinestatic
   Return the gimple rhs class of the code of the expression computed on
   the rhs of assignment statement GS.
   This will never return GIMPLE_INVALID_RHS.  

Referenced by walk_gimple_asm().

static enum tree_code gimple_assign_rhs_code ( )
inlinestatic
bool gimple_assign_rhs_could_trap_p ( gimple  )
tree gimple_assign_rhs_to_tree ( gimple  )
   In cfgexpand.c.  
static void gimple_assign_set_lhs ( )
inlinestatic
   Set LHS to be the LHS operand of assignment statement GS.  

Referenced by gimple_set_bb(), sra_modify_constructor_assign(), and vect_permute_store_chain().

static void gimple_assign_set_nontemporal_move ( )
inlinestatic
   Sets nontemporal move flag of GS to NONTEMPORAL.  
static void gimple_assign_set_rhs1 ( )
inlinestatic
static void gimple_assign_set_rhs2 ( )
inlinestatic
   Set RHS to be the second operand on the RHS of assignment statement GS.  

Referenced by remove_visited_stmt_chain(), simplify_bitwise_binary_1(), and simplify_bitwise_binary_boolean().

static void gimple_assign_set_rhs3 ( )
inlinestatic
   Set RHS to be the third operand on the RHS of assignment statement GS.  
static void gimple_assign_set_rhs_code ( )
inlinestatic
   Set CODE to be the code for the expression computed on the RHS of
   assignment S.  

Referenced by combine_conversions(), simplify_bitwise_binary_1(), and simplify_bitwise_binary_boolean().

void gimple_assign_set_rhs_from_tree ( gimple_stmt_iterator ,
tree   
)
static void gimple_assign_set_rhs_with_ops ( gimple_stmt_iterator gsi,
enum tree_code  code,
tree  op1,
tree  op2 
)
inlinestatic
   A wrapper around gimple_assign_set_rhs_with_ops_1, for callers which expect
   to see only a maximum of two operands.  

Referenced by linearize_expr(), and replace_phi_args_in().

void gimple_assign_set_rhs_with_ops_1 ( gimple_stmt_iterator gsi,
enum tree_code  code,
tree  op1,
tree  op2,
tree  op3 
)
   Set the RHS of assignment statement pointed-to by GSI to CODE with
   operands OP1, OP2 and OP3.

   NOTE: The statement pointed-to by GSI may be reallocated if it
   did not have enough operand slots.  
     If the new CODE needs more operands, allocate a new statement.  
         The LHS needs to be reset as this also changes the SSA name
         on the LHS.  

Referenced by gimple_call_return_flags().

static bool gimple_assign_single_p ( )
inlinestatic
   Return true if GS is an assignment with a singleton RHS, i.e.,
   there is no operator associated with the assignment itself.
   Unlike gimple_assign_copy_p, this predicate returns true for
   any RHS operand, including those that perform an operation
   and do not have the semantics of a copy, such as COND_EXPR.  

Referenced by ao_ref_base_alias_set(), build_access_from_expr_1(), build_rdg_partition_for_vertex(), check_for_plus_in_loops_1(), constant_pointer_difference(), examine_call_tm(), get_rank(), gimple_call_flags(), initialize_inline_failed(), insert_gimplified_predicates(), ipa_load_from_parm_agg(), mark_modified(), may_propagate_copy_into_asm(), propagate_with_phi(), replace_phi_args_in(), and warn_uninitialized_vars().

bool gimple_assign_ssa_name_copy_p ( gimple  )
bool gimple_assign_unary_nop_p ( gimple  )
static void gimple_bind_add_seq ( )
inlinestatic
   Append a sequence of statements to the end of a GIMPLE_BIND's body.  

Referenced by lower_omp_sections(), and maybe_add_implicit_barrier_cancel().

static void gimple_bind_add_stmt ( )
inlinestatic
   Append a statement to the end of a GIMPLE_BIND's body.  

Referenced by lower_omp_sections(), and maybe_add_implicit_barrier_cancel().

static void gimple_bind_append_vars ( )
inlinestatic
   Append VARS to the set of variables declared in the GIMPLE_BIND
   statement GS.  

Referenced by lower_omp_sections(), and maybe_add_implicit_barrier_cancel().

static tree gimple_bind_block ( )
inlinestatic
   Return the TREE_BLOCK node associated with GIMPLE_BIND statement
   GS.  This is analogous to the BIND_EXPR_BLOCK field in trees.  
static gimple_seq gimple_bind_body ( )
inlinestatic
   Return the GIMPLE sequence contained in the GIMPLE_BIND statement GS.  

Referenced by finalize_nesting_tree_1(), gimple_build_transaction(), and gimple_purge_all_dead_abnormal_call_edges().

static gimple_seq* gimple_bind_body_ptr ( )
inlinestatic
vec<gimple> gimple_bind_expr_stack ( void  )
   Return the stack of bindings created during gimplification.  

References gimplify_ctx::conditional_cleanups, gimplify_ctx::conditions, and gimple_seq_empty_p().

static void gimple_bind_set_block ( )
inlinestatic
   Set BLOCK to be the TREE_BLOCK node associated with GIMPLE_BIND
   statement GS.  
static void gimple_bind_set_body ( )
inlinestatic
   Set SEQ to be the GIMPLE sequence contained in the GIMPLE_BIND
   statement GS.  

Referenced by finalize_nesting_tree_1().

static void gimple_bind_set_vars ( )
inlinestatic
   Set VARS to be the set of variables declared in the GIMPLE_BIND
   statement GS.  

Referenced by get_formal_tmp_var().

static tree gimple_bind_vars ( )
inlinestatic
   Return the variables declared in the GIMPLE_BIND statement GS.  

Referenced by get_formal_tmp_var(), and lower_omp_sections().

static tree gimple_block ( )
inlinestatic
   Return the lexical scope block holding statement G.  

Referenced by expand_task_call(), lower_gimple_return(), make_blocks(), and valid_gimple_call_p().

gimple_seq gimple_body ( tree  )
tree gimple_boolify ( tree  )
gimple gimple_build_asm_vec ( const char *  string,
vec< tree, va_gc > *  inputs,
vec< tree, va_gc > *  outputs,
vec< tree, va_gc > *  clobbers,
vec< tree, va_gc > *  labels 
)
   Build a GIMPLE_ASM statement.

   STRING is the assembly code.
   NINPUT is the number of register inputs.
   NOUTPUT is the number of register outputs.
   NCLOBBERS is the number of clobbered registers.
   INPUTS is a vector of the input register parameters.
   OUTPUTS is a vector of the output register parameters.
   CLOBBERS is a vector of the clobbered register parameters.
   LABELS is a vector of destination labels.  

References gimple_eh_filter_set_failure(), and gimple_eh_filter_set_types().

gimple gimple_build_assign_stat ( tree  ,
tree  MEM_STAT_DECL 
)
gimple gimple_build_assign_with_ops ( enum  tree_code,
tree  ,
tree  ,
tree  CXX_MEM_STAT_INFO 
)
gimple gimple_build_assign_with_ops ( enum  tree_code,
tree  ,
tree  ,
tree  ,
tree  CXX_MEM_STAT_INFO 
)
gimple gimple_build_bind ( tree  ,
gimple_seq  ,
tree   
)
gimple gimple_build_call ( tree  ,
unsigned  ,
  ... 
)
gimple gimple_build_call_from_tree ( tree  )
gimple gimple_build_call_internal ( enum  internal_fn,
unsigned  ,
  ... 
)
gimple gimple_build_call_internal_vec ( enum  internal_fn,
vec< tree  
)
gimple gimple_build_call_valist ( tree  ,
unsigned  ,
va_list   
)
gimple gimple_build_call_vec ( tree  ,
vec< tree  
)
gimple gimple_build_catch ( tree  ,
gimple_seq   
)
gimple gimple_build_cdt ( tree  ,
tree   
)
gimple gimple_build_cond ( enum tree_code  pred_code,
tree  lhs,
tree  rhs,
tree  t_label,
tree  f_label 
)
   Build a GIMPLE_COND statement.

   PRED is the condition used to compare LHS and the RHS.
   T_LABEL is the label to jump to if the condition is true.
   F_LABEL is the label to jump to otherwise.  

Referenced by expand_transaction(), gimple_cond_get_ops_from_tree(), instrument_derefs(), and restore_vars_to_original_value().

gimple gimple_build_cond_from_tree ( tree  ,
tree  ,
tree   
)
gimple gimple_build_debug_bind_stat ( tree  ,
tree  ,
gimple  MEM_STAT_DECL 
)
gimple gimple_build_debug_source_bind_stat ( tree  ,
tree  ,
gimple  MEM_STAT_DECL 
)
gimple gimple_build_eh_dispatch ( int  )
gimple gimple_build_eh_else ( gimple_seq  ,
gimple_seq   
)
gimple gimple_build_eh_filter ( tree  ,
gimple_seq   
)
gimple gimple_build_eh_must_not_throw ( tree  )
gimple gimple_build_goto ( tree  dest)
gimple gimple_build_label ( tree  label)
gimple gimple_build_nop ( void  )
   Build a GIMPLE_NOP statement.  

Referenced by fold_gimple_cond().

gimple gimple_build_omp_atomic_load ( tree  ,
tree   
)
gimple gimple_build_omp_atomic_store ( tree  )
gimple gimple_build_omp_continue ( tree  ,
tree   
)
gimple gimple_build_omp_critical ( gimple_seq  ,
tree   
)
gimple gimple_build_omp_for ( gimple_seq  body,
int  kind,
tree  clauses,
size_t  collapse,
gimple_seq  pre_body 
)
   Build a GIMPLE_OMP_FOR statement.

   BODY is sequence of statements inside the for loop.
   KIND is the `for' variant.
   CLAUSES, are any of the OMP loop construct's clauses: private, firstprivate,
   lastprivate, reductions, ordered, schedule, and nowait.
   COLLAPSE is the collapse count.
   PRE_BODY is the sequence of statements that are loop invariant.  
gimple gimple_build_omp_master ( gimple_seq  )
gimple gimple_build_omp_ordered ( gimple_seq  )
gimple gimple_build_omp_parallel ( gimple_seq  body,
tree  clauses,
tree  child_fn,
tree  data_arg 
)
   Build a GIMPLE_OMP_PARALLEL statement.

   BODY is sequence of statements which are executed in parallel.
   CLAUSES, are the OMP parallel construct's clauses.
   CHILD_FN is the function created for the parallel threads to execute.
   DATA_ARG are the shared data argument(s).  

References gimple_omp_set_body().

gimple gimple_build_omp_return ( bool  )
gimple gimple_build_omp_section ( gimple_seq  )
gimple gimple_build_omp_sections ( gimple_seq  ,
tree   
)
gimple gimple_build_omp_sections_switch ( void  )
   Build a GIMPLE_OMP_SECTIONS_SWITCH.  

References gimple_omp_atomic_store_set_val().

gimple gimple_build_omp_single ( gimple_seq  ,
tree   
)
gimple gimple_build_omp_target ( gimple_seq  ,
int  ,
tree   
)
gimple gimple_build_omp_task ( gimple_seq  body,
tree  clauses,
tree  child_fn,
tree  data_arg,
tree  copy_fn,
tree  arg_size,
tree  arg_align 
)
   Build a GIMPLE_OMP_TASK statement.

   BODY is sequence of statements which are executed by the explicit task.
   CLAUSES, are the OMP parallel construct's clauses.
   CHILD_FN is the function created for the parallel threads to execute.
   DATA_ARG are the shared data argument(s).
   COPY_FN is the optional function for firstprivate initialization.
   ARG_SIZE and ARG_ALIGN are size and alignment of the data block.  
gimple gimple_build_omp_taskgroup ( gimple_seq  )
gimple gimple_build_omp_teams ( gimple_seq  ,
tree   
)
gimple gimple_build_predict ( enum  br_predictor,
enum  prediction 
)
gimple gimple_build_resx ( int  )
gimple gimple_build_return ( tree  )
gimple gimple_build_switch ( tree  ,
tree  ,
vec< tree  
)
gimple gimple_build_switch_nlabels ( unsigned  ,
tree  ,
tree   
)
gimple gimple_build_transaction ( gimple_seq  ,
tree   
)
gimple_statement_try* gimple_build_try ( gimple_seq  eval,
gimple_seq  cleanup,
enum gimple_try_flags  kind 
)
   Build a GIMPLE_TRY statement.

   EVAL is the expression to evaluate.
   CLEANUP is the cleanup expression.
   KIND is either GIMPLE_TRY_CATCH or GIMPLE_TRY_FINALLY depending on
   whether this is a try/catch or a try/finally respectively.  

References gimple_switch_set_default_label(), and gimple_switch_set_index().

Referenced by gimplify_expr().

gimple gimple_build_wce ( gimple_seq  )
static tree gimple_call_addr_fndecl ( )
inlinestatic
   Given a valid GIMPLE_CALL function address return the FUNCTION_DECL
   associated with the callee if known.  Otherwise return NULL_TREE.  
static bool gimple_call_alloca_for_var_p ( )
inlinestatic
   Return true of S is a call to builtin_alloca emitted for VLA objects.  
int gimple_call_arg_flags ( const_gimple  ,
unsigned   
)
static tree* gimple_call_arg_ptr ( )
inlinestatic
   Return a pointer to the argument at position INDEX for call
   statement GS.  

Referenced by walk_gimple_asm().

bool gimple_call_builtin_p ( gimple  ,
enum  built_in_class 
)
static tree gimple_call_chain ( )
inlinestatic
   Return the static chain for call statement GS.  

Referenced by vect_build_slp_tree_1().

static tree* gimple_call_chain_ptr ( )
inlinestatic
   Return a pointer to the static chain for call statement GS.  

Referenced by walk_gimple_asm().

static struct pt_solution* gimple_call_clobber_set ( )
staticread
   Return a pointer to the points-to solution for the set of call-used
   variables of the call CALL.  
static void gimple_call_copy_flags ( )
inlinestatic
   Copy all the GF_CALL_* flags from ORIG_CALL to DEST_CALL.  
gimple gimple_call_copy_skip_args ( gimple  ,
bitmap   
)
int gimple_call_flags ( const_gimple  )
static tree gimple_call_fn ( )
inlinestatic
   Return the tree node representing the function called by call
   statement GS.  

Referenced by diagnose_tm_1_op(), print_expr_hash_elt(), and vect_build_slp_tree_1().

static tree* gimple_call_fn_ptr ( )
inlinestatic
   Return a pointer to the tree node representing the function called by call
   statement GS.  

Referenced by walk_gimple_asm().

static tree gimple_call_fntype ( )
inlinestatic
   Return the function type of the function called by GS.  

Referenced by vect_build_slp_tree_1().

static bool gimple_call_from_thunk_p ( )
inlinestatic
   Return true if GIMPLE_CALL S is a jump from a thunk.  
unsigned gimple_call_get_nobnd_arg_index ( const_gimple  ,
unsigned   
)
static enum internal_fn gimple_call_internal_fn ( )
inlinestatic
   Return the target of internal call GS.  

Referenced by adjust_simduid_builtins(), note_simd_array_uses(), print_expr_hash_elt(), and vect_finish_stmt_generation().

static bool gimple_call_internal_p ( )
inlinestatic
   Return true if call GS calls an internal-only function, as enumerated
   by internal_fn.  

Referenced by adjust_simduid_builtins(), insert_aux(), note_simd_array_uses(), print_expr_hash_elt(), vect_build_slp_tree_1(), and vect_finish_stmt_generation().

static tree* gimple_call_lhs_ptr ( )
inlinestatic
   Return a pointer to the LHS of call statement GS.  

Referenced by walk_gimple_asm().

static tree gimple_call_nobnd_arg ( )
inlinestatic
   Return INDEX's call argument ignoring bound ones.  
     No bound args may exist if pointers checker is off.  
static bool gimple_call_noreturn_p ( )
inlinestatic
   Return true if S is a noreturn call.  

Referenced by fixup_noreturn_call(), and vect_build_slp_tree_1().

static bool gimple_call_nothrow_p ( )
inlinestatic
   Return true if S is a nothrow call.  

Referenced by tree_could_trap_p(), and vect_build_slp_tree_1().

static unsigned gimple_call_num_args ( )
inlinestatic
static unsigned gimple_call_num_nobnd_args ( )
inlinestatic
   Return the number of arguments used by call statement GS
   ignoring bound ones.  
void gimple_call_reset_alias_info ( gimple  )
int gimple_call_return_flags ( const_gimple  )
static bool gimple_call_return_slot_opt_p ( )
inlinestatic
   Return true if S is marked for return slot optimization.  

Referenced by dest_safe_for_nrv_p().

static tree gimple_call_return_type ( )
inlinestatic
   Return the type returned by call statement GS.  
     The type returned by a function is the type of its
     function type.  
bool gimple_call_same_target_p ( const_gimple  ,
const_gimple   
)
static void gimple_call_set_alloca_for_var ( )
inlinestatic
   If FOR_VAR is true, GIMPLE_CALL S is a call to builtin_alloca that
   is known to be emitted for VLA objects.  Those are wrapped by
   stack_save/stack_restore calls and hence can't lead to unbounded
   stack growth even when they occur in loops.  
static void gimple_call_set_arg ( )
inlinestatic
   Set ARG to be the argument at position INDEX for call statement GS.  

Referenced by gimple_build_call(), gimple_build_call_1(), gimple_build_call_internal(), and gimple_build_call_vec().

static void gimple_call_set_chain ( )
inlinestatic
   Set CHAIN to be the static chain for call statement GS.  
static void gimple_call_set_fn ( )
inlinestatic
   Set FN to be the function called by call statement GS.  
static void gimple_call_set_fndecl ( )
inlinestatic
   Set FNDECL to be the function called by call statement GS.  

Referenced by expand_assign_tm(), and instrument_builtin_call().

static void gimple_call_set_fntype ( )
inlinestatic
   Set the type of the function called by GS to FNTYPE.  

Referenced by gimple_call_reset_alias_info().

static void gimple_call_set_from_thunk ( )
inlinestatic
   If FROM_THUNK_P is true, mark GIMPLE_CALL S as being the jump from a
   thunk to the thunked-to function.  
static void gimple_call_set_internal_fn ( )
inlinestatic
   Set internal function FN to be the function called by call statement GS.  

Referenced by gimple_build_call_valist().

static void gimple_call_set_lhs ( )
inlinestatic
static void gimple_call_set_nothrow ( )
inlinestatic
   If NOTHROW_P is true, GIMPLE_CALL S is a call that is known to not throw
   even if the called function can throw in other cases.  
static void gimple_call_set_return_slot_opt ( )
inlinestatic
   If RETURN_SLOT_OPT_P is true mark GIMPLE_CALL S as valid for return
   slot optimization.  This transformation uses the target of the call
   expansion as the return slot for calls that return in memory.  

Referenced by dest_safe_for_nrv_p().

static void gimple_call_set_tail ( )
inlinestatic
   If TAIL_P is true, mark call statement S as being a tail call
   (i.e., a call just before the exit of a function).  These calls are
   candidate for tail call optimization.  
static void gimple_call_set_va_arg_pack ( )
inlinestatic
   If PASS_ARG_PACK_P is true, GIMPLE_CALL S is a stdarg call that needs the
   argument pack in its argument list.  
static bool gimple_call_tail_p ( )
inlinestatic
   Return true if GIMPLE_CALL S is marked as a tail call.  

Referenced by vect_build_slp_tree_1().

static struct pt_solution* gimple_call_use_set ( )
staticread
   Return a pointer to the points-to solution for the set of call-used
   variables of the call CALL.  
static bool gimple_call_va_arg_pack_p ( )
inlinestatic
   Return true if GIMPLE_CALL S is a stdarg call that needs the
   argument pack in its argument list.  
bool gimple_can_coalesce_p ( tree  ,
tree   
)
static gimple_seq gimple_catch_handler ( )
inlinestatic
   Return the GIMPLE sequence representing the body of the handler of
   GIMPLE_CATCH statement GS.  

Referenced by gimple_purge_all_dead_abnormal_call_edges().

static gimple_seq* gimple_catch_handler_ptr ( )
inlinestatic
   Return a pointer to the GIMPLE sequence representing the body of
   the handler of GIMPLE_CATCH statement GS.  

Referenced by replace_goto_queue_cond_clause().

static void gimple_catch_set_handler ( )
inlinestatic
   Set HANDLER to be the body of GIMPLE_CATCH GS.  
static void gimple_catch_set_types ( )
inlinestatic
   Set T to be the set of types handled by GIMPLE_CATCH GS.  
static tree gimple_catch_types ( )
inlinestatic
   Return the types handled by GIMPLE_CATCH statement GS.  
static tree* gimple_catch_types_ptr ( )
inlinestatic
   Return a pointer to the types handled by GIMPLE_CATCH statement GS.  
void gimple_check_failed ( const_gimple  ,
const char *  ,
int  ,
\const char *  ,
enum  gimple_code,
\enum  tree_code 
)
static bool gimple_clobber_p ( )
inlinestatic
   Return true if S is a clobber statement.  

Referenced by build_access_from_expr_1(), and dse_optimize_stmt().

static enum gimple_code gimple_code ( )
inlinestatic
   Return the code for GIMPLE statement G.  
bool gimple_compare_field_offset ( tree  ,
tree   
)
static tree gimple_cond_false_label ( )
inlinestatic
   Return the label used by conditional statement GS when its
   predicate evaluates to false.  

Referenced by record_in_goto_queue_label().

static bool gimple_cond_false_p ( )
inlinestatic
   Check if conditional statement GS is of the form 'if (1 != 1)',
   'if (0 != 0)', 'if (1 == 0)' or 'if (0 == 1)' 
void gimple_cond_get_ops_from_tree ( tree  cond,
enum tree_code code_p,
tree lhs_p,
tree rhs_p 
)
   Extract operands for a GIMPLE_COND statement out of COND_EXPR tree COND.  
     Canonicalize conditionals of the form 'if (!VAL)'.  
     Canonicalize conditionals of the form 'if (VAL)'  

References gimple_build_cond(), and gimple_cond_get_ops_from_tree().

Referenced by gimple_cond_get_ops_from_tree().

static tree gimple_cond_lhs ( )
inlinestatic
static tree* gimple_cond_lhs_ptr ( )
inlinestatic
   Return the pointer to the LHS of the predicate computed by conditional
   statement GS.  

Referenced by record_use().

static void gimple_cond_make_false ( )
inlinestatic
   Set the conditional COND_STMT to be of the form 'if (1 == 0)'.  

Referenced by create_bb(), and test_for_singularity().

static void gimple_cond_make_true ( )
inlinestatic
   Set the conditional COND_STMT to be of the form 'if (1 == 1)'.  

Referenced by create_bb(), and test_for_singularity().

static tree gimple_cond_rhs ( )
inlinestatic
static tree* gimple_cond_rhs_ptr ( )
inlinestatic
   Return the pointer to the RHS operand of the predicate computed by
   conditional GS.  

Referenced by record_use().

static void gimple_cond_set_code ( )
inlinestatic
   Set CODE to be the predicate code for the conditional statement GS.  
static void gimple_cond_set_condition ( )
inlinestatic
   Set the code, LHS and RHS of GIMPLE_COND STMT from CODE, LHS and RHS.  
void gimple_cond_set_condition_from_tree ( gimple  ,
tree   
)
static void gimple_cond_set_false_label ( )
inlinestatic
   Set LABEL to be the label used by conditional statement GS when its
   predicate evaluates to false.  

Referenced by gimple_build_assign_with_ops().

static void gimple_cond_set_lhs ( )
inlinestatic
   Set LHS to be the LHS operand of the predicate computed by
   conditional statement GS.  

Referenced by create_loop_fn(), and gimple_build_assign_with_ops().

static void gimple_cond_set_rhs ( )
inlinestatic
   Set RHS to be the RHS operand of the predicate computed by
   conditional statement GS.  

Referenced by gimple_build_assign_with_ops().

static void gimple_cond_set_true_label ( )
inlinestatic
   Set LABEL to be the label used by conditional statement GS when its
   predicate evaluates to true.  

Referenced by gimple_build_assign_with_ops().

static tree gimple_cond_true_label ( )
inlinestatic
   Return the label used by conditional statement GS when its
   predicate evaluates to true.  

Referenced by record_in_goto_queue_label().

static bool gimple_cond_true_p ( )
inlinestatic
   Check if conditional statemente GS is of the form 'if (1 == 1)',
  'if (0 == 0)', 'if (1 != 0)' or 'if (0 != 1)' 
gimple gimple_copy ( gimple  )
bool gimple_could_trap_p ( gimple  )
bool gimple_could_trap_p_1 ( gimple  ,
bool  ,
bool   
)
gimple gimple_current_bind_expr ( void  )
   Return the first element of the stack of bindings.  

References gimplify_ctx::conditions.

static tree gimple_debug_bind_get_value ( )
inlinestatic
   Return the value bound to the variable in a GIMPLE_DEBUG bind
   statement.  

Referenced by rewrite_use_nonlinear_expr().

static tree* gimple_debug_bind_get_value_ptr ( )
inlinestatic
   Return a pointer to the value bound to the variable in a
   GIMPLE_DEBUG bind statement.  
static tree gimple_debug_bind_get_var ( )
inlinestatic
   Return the variable bound in a GIMPLE_DEBUG bind statement.  

Referenced by gimple_redirect_edge_and_branch(), mark_stmt_if_obviously_necessary(), and separate_decls_in_region_stmt().

static bool gimple_debug_bind_has_value_p ( )
inlinestatic
   Return true if the GIMPLE_DEBUG bind statement is bound to a
   value.  

Referenced by mark_stmt_if_obviously_necessary().

static void gimple_debug_bind_reset_value ( )
inlinestatic
   Remove the value bound to the variable in a GIMPLE_DEBUG bind
   statement.  

Referenced by insert_debug_temps_for_defs(), separate_decls_in_region_stmt(), set_rename(), and vect_min_worthwhile_factor().

static void gimple_debug_bind_set_value ( )
inlinestatic
   Set the value bound to the variable in a GIMPLE_DEBUG bind
   statement.  
static void gimple_debug_bind_set_var ( )
inlinestatic
   Set the variable bound in a GIMPLE_DEBUG bind statement.  

Referenced by separate_decls_in_region_stmt().

static tree gimple_debug_source_bind_get_value ( )
inlinestatic
   Return the value bound to the variable in a GIMPLE_DEBUG source bind
   statement.  

Referenced by register_new_def().

static tree* gimple_debug_source_bind_get_value_ptr ( )
inlinestatic
   Return a pointer to the value bound to the variable in a
   GIMPLE_DEBUG source bind statement.  
static tree gimple_debug_source_bind_get_var ( )
inlinestatic
   Return the variable bound in a GIMPLE_DEBUG source bind statement.  

Referenced by register_new_def(), and separate_decls_in_region_stmt().

static bool gimple_debug_source_bind_p ( )
inlinestatic
   Return true if S is a GIMPLE_DEBUG SOURCE BIND statement.  

Referenced by register_new_def(), separate_decls_in_region_stmt(), and set_rename().

static void gimple_debug_source_bind_set_value ( )
inlinestatic
   Set the value bound to the variable in a GIMPLE_DEBUG source bind
   statement.  
static void gimple_debug_source_bind_set_var ( )
inlinestatic
   Set the variable bound in a GIMPLE_DEBUG source bind statement.  

Referenced by separate_decls_in_region_stmt().

const char* gimple_decl_printable_name ( tree  ,
int   
)
static int gimple_eh_dispatch_region ( )
inlinestatic
   Return the region number for GIMPLE_EH_DISPATCH GS.  

Referenced by dump_gimple_eh_else().

static void gimple_eh_dispatch_set_region ( )
inlinestatic
   Set REGION to be the region number for GIMPLE_EH_DISPATCH GS.  
static gimple_seq gimple_eh_else_e_body ( )
inlinestatic
static gimple_seq* gimple_eh_else_e_body_ptr ( )
inlinestatic
static gimple_seq gimple_eh_else_n_body ( )
inlinestatic
static gimple_seq* gimple_eh_else_n_body_ptr ( )
inlinestatic
   GIMPLE_EH_ELSE accessors.  

Referenced by replace_goto_queue_cond_clause().

static void gimple_eh_else_set_e_body ( )
inlinestatic

Referenced by gimple_build_catch().

static void gimple_eh_else_set_n_body ( )
inlinestatic

Referenced by gimple_build_catch().

static gimple_seq gimple_eh_filter_failure ( )
inlinestatic
   Return the sequence of statement to execute when GIMPLE_EH_FILTER
   statement fails.  

Referenced by gimple_purge_all_dead_abnormal_call_edges().

static gimple_seq* gimple_eh_filter_failure_ptr ( )
inlinestatic
   Return a pointer to the sequence of statement to execute when
   GIMPLE_EH_FILTER statement fails.  

Referenced by replace_goto_queue_cond_clause().

static void gimple_eh_filter_set_failure ( )
inlinestatic
   Set FAILURE to be the sequence of statements to execute on failure
   for GIMPLE_EH_FILTER GS.  

Referenced by gimple_build_asm_vec().

static void gimple_eh_filter_set_types ( )
inlinestatic
   Set TYPES to be the set of types handled by GIMPLE_EH_FILTER GS.  

Referenced by gimple_build_asm_vec().

static tree gimple_eh_filter_types ( )
inlinestatic
   Return the types handled by GIMPLE_EH_FILTER statement GS.  
static tree* gimple_eh_filter_types_ptr ( )
inlinestatic
   Return a pointer to the types handled by GIMPLE_EH_FILTER statement
   GS.  
static tree gimple_eh_must_not_throw_fndecl ( )
inlinestatic
   Get the function decl to be called by the MUST_NOT_THROW region.  

Referenced by dump_gimple_catch().

static void gimple_eh_must_not_throw_set_fndecl ( )
inlinestatic
   Set the function decl to be called by GS to DECL.  
static enum tree_code gimple_expr_code ( )
inlinestatic
   Return the tree code for the expression computed by STMT.  This is
   only valid for GIMPLE_COND, GIMPLE_CALL and GIMPLE_ASSIGN.  For
   GIMPLE_CALL, return CALL_EXPR as the expression code for
   consistency.  This is useful when the caller needs to deal with the
   three kinds of computation that GIMPLE supports.  

Referenced by ipa_load_from_parm_agg().

static tree gimple_expr_type ( )
inlinestatic
   Return the type of the main expression computed by STMT.  Return
   void_type_node if the statement computes nothing.  
         In general we want to pass out a type that can be substituted
         for both the RHS and the LHS types if there is a possibly
         useless conversion involved.  That means returning the
         original RHS type as far as we can reconstruct it.  
               As fallback use the type of the LHS.  

Referenced by extract_range_from_cond_expr(), gate_cse_sincos(), infer_value_range(), insert_aux(), range_is_null(), symbolic_range_p(), and test_for_singularity().

static const char* gimple_filename ( )
inlinestatic
   Return the file name of the location of STMT.  
alias_set_type gimple_get_alias_set ( tree  )
tree gimple_get_lhs ( const_gimple  )
static tree gimple_goto_dest ( )
inlinestatic
   Return the destination of the unconditional jump GS.  

Referenced by find_goto_replacement(), note_nonlocal_vla_type(), and record_in_goto_queue_label().

static void gimple_goto_set_dest ( )
inlinestatic
   Set DEST to be the destination of the unconditonal jump GS.  

Referenced by gimple_build_cond_from_tree().

bool gimple_has_body_p ( tree  )
static bool gimple_has_lhs ( )
inlinestatic
   Returns true if this is a GIMPLE_ASSIGN or a GIMPLE_CALL with a
   non-NULL lhs.  

Referenced by dse_optimize_stmt(), gsi_split_seq_before(), ref_may_be_aliased(), and tree_nrv().

static bool gimple_has_location ( )
inlinestatic
   Return true if G contains location information.  

Referenced by branch_prob(), and vrp_initialize().

static bool gimple_has_mem_ops ( )
inlinestatic
   Return true if GIMPLE statement G has memory operands.  
static bool gimple_has_ops ( )
inlinestatic
   Return true if GIMPLE statement G has register or memory operands.  
bool gimple_has_side_effects ( const_gimple  )
static bool gimple_has_substatements ( )
inlinestatic
   Return true if statement G has sub-statements.  This is only true for
   High GIMPLE statements.  
static bool gimple_has_volatile_ops ( )
inlinestatic
   Return true if statement STMT contains volatile operands.  

Referenced by build_access_from_expr_1(), generate_code_for_partition(), and get_value_for_expr().

static bool gimple_in_transaction ( )
inlinestatic
   Return true if STMT is in a transaction.  
static void gimple_init_singleton ( )
inlinestatic
   Make statement G a singleton sequence.  
bool gimple_ior_addresses_taken ( bitmap  ,
gimple   
)
static tree gimple_label_label ( )
inlinestatic
static void gimple_label_set_label ( )
inlinestatic
   Set LABEL to be the LABEL_DECL node used by GIMPLE_LABEL statement
   GS.  
static int gimple_lineno ( )
inlinestatic
   Return the line number of the location of STMT.  
static const location_t* gimple_location_ptr ( )
inlinestatic
   Return pointer to location information for statement G.  
static bool gimple_modified_p ( )
inlinestatic
   Return true if statement G has operands and the modified field has
   been set.  
static bool gimple_no_warning_p ( )
inlinestatic
   Return true if no warnings should be emitted for statement STMT.  

Referenced by gimple_purge_dead_eh_edges().

static bool gimple_nop_p ( )
inlinestatic
static unsigned gimple_num_ops ( )
inlinestatic
   Return the number of operands for statement GS.  

Referenced by get_rank(), special_builtin_state(), unmodified_parm_1(), and walk_gimple_asm().

static tree gimple_omp_atomic_load_lhs ( )
inlinestatic
   Get the LHS of an atomic load.  
static tree* gimple_omp_atomic_load_lhs_ptr ( )
inlinestatic
   Return a pointer to the LHS of an atomic load.  
static tree gimple_omp_atomic_load_rhs ( )
inlinestatic
   Get the RHS of an atomic load.  
static tree* gimple_omp_atomic_load_rhs_ptr ( )
inlinestatic
   Return a pointer to the RHS of an atomic load.  
static void gimple_omp_atomic_load_set_lhs ( )
inlinestatic
   Set the LHS of an atomic load.  
static void gimple_omp_atomic_load_set_rhs ( )
inlinestatic
   Set the RHS of an atomic load.  
static bool gimple_omp_atomic_need_value_p ( )
inlinestatic
   Return true if OMP atomic load/store statement G has the
   GF_OMP_ATOMIC_NEED_VALUE flag set.  
static bool gimple_omp_atomic_seq_cst_p ( )
inlinestatic
   Return true if OMP atomic load/store statement G has the
   GF_OMP_ATOMIC_SEQ_CST flag set.  

Referenced by expand_omp_sections().

static void gimple_omp_atomic_set_need_value ( )
inlinestatic
   Set the GF_OMP_ATOMIC_NEED_VALUE flag on G.  
static void gimple_omp_atomic_set_seq_cst ( )
inlinestatic
   Set the GF_OMP_ATOMIC_SEQ_CST flag on G.  
static void gimple_omp_atomic_store_set_val ( )
inlinestatic
   Set the value being stored in an atomic store.  

Referenced by gimple_build_omp_sections_switch().

static tree gimple_omp_atomic_store_val ( )
inlinestatic
   Return the value being stored in an atomic store.  
static tree* gimple_omp_atomic_store_val_ptr ( )
inlinestatic
   Return a pointer to the value being stored in an atomic store.  
static gimple_seq* gimple_omp_body_ptr ( )
inlinestatic
   Return a pointer to the body for the OMP statement GS.  

Referenced by lower_omp_sections(), maybe_add_implicit_barrier_cancel(), and scan_omp_for().

static tree gimple_omp_continue_control_def ( )
inlinestatic
   Get the definition of the control variable in a GIMPLE_OMP_CONTINUE.  
static tree* gimple_omp_continue_control_def_ptr ( )
inlinestatic
   The same as above, but return the address.  
static tree gimple_omp_continue_control_use ( )
inlinestatic
   Get the use of the control variable in a GIMPLE_OMP_CONTINUE.  
static tree* gimple_omp_continue_control_use_ptr ( )
inlinestatic
   The same as above, but return the address.  
static void gimple_omp_continue_set_control_def ( )
inlinestatic
   Set the definition of the control variable in a GIMPLE_OMP_CONTINUE.  
static void gimple_omp_continue_set_control_use ( )
inlinestatic
   Set the use of the control variable in a GIMPLE_OMP_CONTINUE.  
static tree gimple_omp_critical_name ( )
inlinestatic
   Return the name associated with OMP_CRITICAL statement GS.  

Referenced by dump_gimple_omp_block().

static tree* gimple_omp_critical_name_ptr ( )
inlinestatic
   Return a pointer to the name associated with OMP critical statement GS.  
static void gimple_omp_critical_set_name ( )
inlinestatic
   Set NAME to be the name associated with OMP critical statement GS.  

Referenced by gimple_build_eh_dispatch().

static tree gimple_omp_for_clauses ( )
inlinestatic
   Return the clauses associated with OMP_FOR GS.  

Referenced by dump_gimple_debug().

static tree* gimple_omp_for_clauses_ptr ( )
inlinestatic
   Return a pointer to the OMP_FOR GS.  
static size_t gimple_omp_for_collapse ( )
inlinestatic
   Get the collapse count of OMP_FOR GS.  

Referenced by dump_gimple_debug().

static bool gimple_omp_for_combined_into_p ( )
inlinestatic
   Return true if OMP for statement G has the
   GF_OMP_FOR_COMBINED_INTO flag set.  

Referenced by create_omp_child_function(), and workshare_safe_to_combine_p().

static bool gimple_omp_for_combined_p ( )
inlinestatic
   Return true if OMP for statement G has the
   GF_OMP_FOR_COMBINED flag set.  
static enum tree_code gimple_omp_for_cond ( )
inlinestatic
   Return the condition code associated with OMP_FOR GS.  

Referenced by dump_gimple_debug().

static tree gimple_omp_for_final ( )
inlinestatic
   Return the final value for OMP_FOR GS.  

Referenced by dump_gimple_debug().

static tree* gimple_omp_for_final_ptr ( )
inlinestatic
   Return a pointer to the final value for OMP_FOR GS.  
static tree gimple_omp_for_incr ( )
inlinestatic
   Return the increment value for OMP_FOR GS.  

Referenced by dump_gimple_debug().

static tree* gimple_omp_for_incr_ptr ( )
inlinestatic
   Return a pointer to the increment value for OMP_FOR GS.  
static tree gimple_omp_for_index ( )
inlinestatic
   Return the index variable for OMP_FOR GS.  

Referenced by dump_gimple_debug().

static tree* gimple_omp_for_index_ptr ( )
inlinestatic
   Return a pointer to the index variable for OMP_FOR GS.  
static tree gimple_omp_for_initial ( )
inlinestatic
   Return the initial value for OMP_FOR GS.  

Referenced by dump_gimple_debug().

static tree* gimple_omp_for_initial_ptr ( )
inlinestatic
   Return a pointer to the initial value for OMP_FOR GS.  
static int gimple_omp_for_kind ( )
inlinestatic
   Return the kind of OMP for statemement.  

Referenced by create_omp_child_function(), dump_gimple_debug(), is_task_ctx(), scan_omp_sections(), and scan_omp_single().

static gimple_seq gimple_omp_for_pre_body ( )
inlinestatic
   Return the sequence of statements to execute before the OMP_FOR
   statement GS starts.  
static gimple_seq* gimple_omp_for_pre_body_ptr ( )
inlinestatic
   Return a pointer to the sequence of statements to execute before the OMP_FOR
   statement GS starts.  
static void gimple_omp_for_set_clauses ( )
inlinestatic
   Set CLAUSES to be the list of clauses associated with OMP_FOR GS.  

Referenced by gimple_build_debug_bind_stat().

static void gimple_omp_for_set_combined_into_p ( )
inlinestatic
   Set the GF_OMP_FOR_COMBINED_INTO field in G depending on the boolean
   value of COMBINED_P.  
static void gimple_omp_for_set_combined_p ( )
inlinestatic
   Set the GF_OMP_FOR_COMBINED field in G depending on the boolean
   value of COMBINED_P.  
static void gimple_omp_for_set_cond ( )
inlinestatic
   Set COND to be the condition code for OMP_FOR GS.  
static void gimple_omp_for_set_final ( )
inlinestatic
   Set FINAL to be the final value for OMP_FOR GS.  
static void gimple_omp_for_set_incr ( )
inlinestatic
   Set INCR to be the increment value for OMP_FOR GS.  
static void gimple_omp_for_set_index ( )
inlinestatic
   Set INDEX to be the index variable for OMP_FOR GS.  
static void gimple_omp_for_set_initial ( )
inlinestatic
   Set INITIAL to be the initial value for OMP_FOR GS.  
static void gimple_omp_for_set_kind ( )
inlinestatic
   Set the OMP for kind.  

Referenced by gimple_build_debug_bind_stat().

static void gimple_omp_for_set_pre_body ( )
inlinestatic
   Set PRE_BODY to be the sequence of statements to execute before the
   OMP_FOR statement GS starts.  
static tree gimple_omp_parallel_child_fn ( )
inlinestatic
   Return the child function used to hold the body of OMP_PARALLEL GS.  
static tree* gimple_omp_parallel_child_fn_ptr ( )
inlinestatic
   Return a pointer to the child function used to hold the body of
   OMP_PARALLEL GS.  
static tree gimple_omp_parallel_clauses ( )
inlinestatic
   Return the clauses associated with OMP_PARALLEL GS.  

Referenced by lower_send_clauses(), and workshare_safe_to_combine_p().

static tree* gimple_omp_parallel_clauses_ptr ( )
inlinestatic
   Return a pointer to the clauses associated with OMP_PARALLEL GS.  
static bool gimple_omp_parallel_combined_p ( )
inlinestatic
   Return true if OMP parallel statement G has the
   GF_OMP_PARALLEL_COMBINED flag set.  
static tree gimple_omp_parallel_data_arg ( )
inlinestatic
   Return the artificial argument used to send variables and values
   from the parent to the children threads in OMP_PARALLEL GS.  
static tree* gimple_omp_parallel_data_arg_ptr ( )
inlinestatic
   Return a pointer to the data argument for OMP_PARALLEL GS.  
static void gimple_omp_parallel_set_child_fn ( )
inlinestatic
   Set CHILD_FN to be the child function for OMP_PARALLEL GS.  
static void gimple_omp_parallel_set_clauses ( )
inlinestatic
   Set CLAUSES to be the list of clauses associated with OMP_PARALLEL
   GS.  
static void gimple_omp_parallel_set_combined_p ( )
inlinestatic
   Set the GF_OMP_PARALLEL_COMBINED field in G depending on the boolean
   value of COMBINED_P.  
static void gimple_omp_parallel_set_data_arg ( )
inlinestatic
   Set DATA_ARG to be the data argument for OMP_PARALLEL GS.  
static tree gimple_omp_return_lhs ( )
inlinestatic
   Get the LHS of OMP return.  
static tree* gimple_omp_return_lhs_ptr ( )
inlinestatic
   Return a pointer to the LHS of OMP return.  
static bool gimple_omp_return_nowait_p ( )
inlinestatic
   Return true if OMP return statement G has the GF_OMP_RETURN_NOWAIT
   flag set.  
static void gimple_omp_return_set_lhs ( )
inlinestatic
   Set the LHS of OMP return.  
static void gimple_omp_return_set_nowait ( )
inlinestatic
   Set the nowait flag on OMP_RETURN statement S.  
static bool gimple_omp_section_last_p ( )
inlinestatic
   Return true if OMP section statement G has the GF_OMP_SECTION_LAST
   flag set.  
static void gimple_omp_section_set_last ( )
inlinestatic
   Set the GF_OMP_SECTION_LAST flag on G.  
static tree gimple_omp_sections_clauses ( )
inlinestatic
   Return the clauses associated with OMP_SECTIONS GS.  

Referenced by dump_gimple_omp_teams(), and scan_omp_teams().

static tree* gimple_omp_sections_clauses_ptr ( )
inlinestatic
   Return a pointer to the clauses associated with OMP_SECTIONS GS.  
static tree gimple_omp_sections_control ( )
inlinestatic
   Return the control variable associated with the GIMPLE_OMP_SECTIONS
   in GS.  

Referenced by dump_gimple_omp_teams().

static tree* gimple_omp_sections_control_ptr ( )
inlinestatic
   Return a pointer to the clauses associated with the GIMPLE_OMP_SECTIONS
   GS.  
static void gimple_omp_sections_set_clauses ( )
inlinestatic
   Set CLAUSES to be the set of clauses associated with OMP_SECTIONS
   GS.  
static void gimple_omp_sections_set_control ( )
inlinestatic
   Set CONTROL to be the set of clauses associated with the
   GIMPLE_OMP_SECTIONS in GS.  
static void gimple_omp_set_body ( )
inlinestatic
static void gimple_omp_set_subcode ( )
inlinestatic
   Set the subcode for OMP statement S to SUBCODE.  
     We only have 16 bits for the subcode.  Assert that we are not
     overflowing it.  
static tree gimple_omp_single_clauses ( )
inlinestatic
   Return the clauses associated with OMP_SINGLE GS.  
static tree* gimple_omp_single_clauses_ptr ( )
inlinestatic
   Return a pointer to the clauses associated with OMP_SINGLE GS.  
static void gimple_omp_single_set_clauses ( )
inlinestatic
   Set CLAUSES to be the clauses associated with OMP_SINGLE GS.  

Referenced by gimple_build_omp_continue().

static unsigned gimple_omp_subcode ( )
inlinestatic
   Return the subcode for OMP statement S.  
static tree gimple_omp_target_child_fn ( )
inlinestatic
   Return the child function used to hold the body of OMP_TARGET GS.  
static tree* gimple_omp_target_child_fn_ptr ( )
inlinestatic
   Return a pointer to the child function used to hold the body of
   OMP_TARGET GS.  
static tree gimple_omp_target_clauses ( )
inlinestatic
   Return the clauses associated with OMP_TARGET GS.  
static tree* gimple_omp_target_clauses_ptr ( )
inlinestatic
   Return a pointer to the clauses associated with OMP_TARGET GS.  
static tree gimple_omp_target_data_arg ( )
inlinestatic
   Return the artificial argument used to send variables and values
   from the parent to the children threads in OMP_TARGET GS.  
static tree* gimple_omp_target_data_arg_ptr ( )
inlinestatic
   Return a pointer to the data argument for OMP_TARGET GS.  
static int gimple_omp_target_kind ( )
inlinestatic
   Return the kind of OMP target statemement.  
static void gimple_omp_target_set_child_fn ( )
inlinestatic
   Set CHILD_FN to be the child function for OMP_TARGET GS.  
static void gimple_omp_target_set_clauses ( )
inlinestatic
   Set CLAUSES to be the clauses associated with OMP_TARGET GS.  
static void gimple_omp_target_set_data_arg ( )
inlinestatic
   Set DATA_ARG to be the data argument for OMP_TARGET GS.  
static void gimple_omp_target_set_kind ( )
inlinestatic
   Set the OMP target kind.  
static tree gimple_omp_task_arg_align ( )
inlinestatic
   Return align of the data block in bytes in OMP_TASK GS.  
static tree* gimple_omp_task_arg_align_ptr ( )
inlinestatic
   Return a pointer to the data block align for OMP_TASK GS.  
static tree gimple_omp_task_arg_size ( )
inlinestatic
   Return size of the data block in bytes in OMP_TASK GS.  

Referenced by dump_gimple_omp_parallel().

static tree* gimple_omp_task_arg_size_ptr ( )
inlinestatic
   Return a pointer to the data block size for OMP_TASK GS.  
static tree gimple_omp_task_child_fn ( )
inlinestatic
   Return the child function used to hold the body of OMP_TASK GS.  

Referenced by dump_gimple_omp_parallel().

static tree* gimple_omp_task_child_fn_ptr ( )
inlinestatic
   Return a pointer to the child function used to hold the body of
   OMP_TASK GS.  
static tree gimple_omp_task_clauses ( )
inlinestatic
   Return the clauses associated with OMP_TASK GS.  

Referenced by dump_gimple_omp_parallel().

static tree* gimple_omp_task_clauses_ptr ( )
inlinestatic
   Return a pointer to the clauses associated with OMP_TASK GS.  
static tree gimple_omp_task_copy_fn ( )
inlinestatic
   Return the copy function used to hold the body of OMP_TASK GS.  

Referenced by dump_gimple_omp_parallel().

static tree* gimple_omp_task_copy_fn_ptr ( )
inlinestatic
   Return a pointer to the copy function used to hold the body of
   OMP_TASK GS.  
static tree gimple_omp_task_data_arg ( )
inlinestatic
   Return the artificial argument used to send variables and values
   from the parent to the children threads in OMP_TASK GS.  

Referenced by dump_gimple_omp_parallel().

static tree* gimple_omp_task_data_arg_ptr ( )
inlinestatic
   Return a pointer to the data argument for OMP_TASK GS.  
static void gimple_omp_task_set_arg_align ( )
inlinestatic
   Set ARG_SIZE to be the data block align for OMP_TASK GS.  
static void gimple_omp_task_set_arg_size ( )
inlinestatic
   Set ARG_SIZE to be the data block size for OMP_TASK GS.  
static void gimple_omp_task_set_child_fn ( )
inlinestatic
   Set CHILD_FN to be the child function for OMP_TASK GS.  
static void gimple_omp_task_set_clauses ( )
inlinestatic
   Set CLAUSES to be the list of clauses associated with OMP_TASK
   GS.  
static void gimple_omp_task_set_copy_fn ( )
inlinestatic
   Set CHILD_FN to be the copy function for OMP_TASK GS.  
static void gimple_omp_task_set_data_arg ( )
inlinestatic
   Set DATA_ARG to be the data argument for OMP_TASK GS.  
static tree gimple_omp_taskreg_child_fn ( )
inlinestatic
   Return the child function used to hold the body of OMP_TASK GS.  
static tree* gimple_omp_taskreg_child_fn_ptr ( )
inlinestatic
   Return a pointer to the child function used to hold the body of
   OMP_TASK GS.  
static tree gimple_omp_taskreg_clauses ( )
inlinestatic
   Return the clauses associated with OMP_TASK GS.  

Referenced by convert_tramp_reference_stmt(), note_nonlocal_vla_type(), and use_pointer_for_field().

static tree* gimple_omp_taskreg_clauses_ptr ( )
inlinestatic
   Return a pointer to the clauses associated with OMP_TASK GS.  

Referenced by note_nonlocal_vla_type().

static tree gimple_omp_taskreg_data_arg ( )
inlinestatic
   Return the artificial argument used to send variables and values
   from the parent to the children threads in OMP_TASK GS.  

Referenced by optimize_omp_library_calls().

static tree* gimple_omp_taskreg_data_arg_ptr ( )
inlinestatic
   Return a pointer to the data argument for OMP_TASK GS.  
static void gimple_omp_taskreg_set_child_fn ( )
inlinestatic
   Set CHILD_FN to be the child function for OMP_TASK GS.  
static void gimple_omp_taskreg_set_clauses ( )
inlinestatic
   Set CLAUSES to be the list of clauses associated with OMP_TASK
   GS.  

Referenced by convert_tramp_reference_stmt(), and note_nonlocal_vla_type().

static void gimple_omp_taskreg_set_data_arg ( )
inlinestatic
   Set DATA_ARG to be the data argument for OMP_TASK GS.  
static tree gimple_omp_teams_clauses ( )
inlinestatic
   Return the clauses associated with OMP_TEAMS GS.  

Referenced by scan_omp_for().

static tree* gimple_omp_teams_clauses_ptr ( )
inlinestatic
   Return a pointer to the clauses associated with OMP_TEAMS GS.  
static void gimple_omp_teams_set_clauses ( )
inlinestatic
   Set CLAUSES to be the clauses associated with OMP_TEAMS GS.  
static tree gimple_op ( )
inlinestatic
static tree* gimple_op_ptr ( )
inlinestatic
   Return a pointer to operand I for statement GS.  

Referenced by num_imm_uses(), record_in_goto_queue_label(), replace_goto_queue_cond_clause(), and walk_gimple_asm().

static tree* gimple_ops ( )
inlinestatic
   Return the array of operands for statement GS.  
     All the tuples have their operand vector at the very bottom
     of the structure.  Note that those structures that do not
     have an operand vector have a zero offset.  
static struct phi_arg_d* gimple_phi_arg ( )
staticread
   Return the PHI argument corresponding to incoming edge INDEX for
   GIMPLE_PHI GS.  

Referenced by check_for_plus_in_loops_1().

static tree* gimple_phi_arg_def_ptr ( )
inlinestatic
   Return a pointer to the tree operand for argument I of PHI node GS.  

Referenced by add_tree_to_fld_list().

static edge gimple_phi_arg_edge ( )
inlinestatic
static bool gimple_phi_arg_has_location ( )
inlinestatic
   Return TRUE if argument I of phi node GS has a location record.  

Referenced by dump_ssaname_info(), and trivially_conflicts_p().

static source_location gimple_phi_arg_location ( )
inlinestatic
   Return the source location of gimple argument I of phi node GS.  

Referenced by dump_ssaname_info(), maybe_register_def(), and trivially_conflicts_p().

static source_location gimple_phi_arg_location_from_edge ( )
inlinestatic
   Return the source location of the argument on edge E of phi node GS.  

Referenced by create_parallel_loop(), vect_create_cond_for_alias_checks(), and verify_loop_closed_ssa().

static void gimple_phi_arg_set_location ( )
inlinestatic
   Set the source location of gimple argument I of phi node GS to LOC.  

Referenced by maybe_register_def().

static unsigned gimple_phi_capacity ( )
inlinestatic
   Return the maximum number of arguments supported by GIMPLE_PHI GS.  
static tree* gimple_phi_result_ptr ( )
inlinestatic
   Return a pointer to the SSA name created by GIMPLE_PHI GS.  

Referenced by gimple_redirect_edge_and_branch().

static void gimple_phi_set_arg ( )
inlinestatic
   Set PHIARG to be the argument corresponding to incoming edge INDEX
   for GIMPLE_PHI GS.  
static void gimple_phi_set_result ( )
inlinestatic
   Set RESULT to be the SSA name created by GIMPLE_PHI GS.  
static unsigned int gimple_plf ( )
inlinestatic
   Return the value of pass local flag PLF on statement STMT.  

Referenced by mark_for_renaming().

static enum prediction gimple_predict_outcome ( )
inlinestatic
   Return the outcome of GIMPLE_PREDICT statement GS.  
static enum br_predictor gimple_predict_predictor ( )
inlinestatic
   Return the predictor of GIMPLE_PREDICT statement GS.  
static void gimple_predict_set_outcome ( )
inlinestatic
   Set the outcome of GIMPLE_PREDICT statement GS to OUTCOME.  
static void gimple_predict_set_predictor ( )
inlinestatic
   Set the predictor of GIMPLE_PREDICT statement GS to PREDICT.  
static bool gimple_references_memory_p ( )
inlinestatic
   Return true if statement STMT may access memory.  

Referenced by add_dependency(), and find_loop_niter().

void gimple_regimplify_operands ( gimple  ,
gimple_stmt_iterator  
)
void gimple_replace_lhs ( gimple  ,
tree   
)
static int gimple_resx_region ( )
inlinestatic
   Return the region number for GIMPLE_RESX GS.  

Referenced by dump_gimple_eh_must_not_throw().

static void gimple_resx_set_region ( )
inlinestatic
   Set REGION to be the region number for GIMPLE_RESX GS.  
static tree gimple_return_retbnd ( )
inlinestatic
   Return the return bounds for GIMPLE_RETURN GS.  
static tree gimple_return_retval ( )
inlinestatic
   Return the return value for GIMPLE_RETURN GS.  

Referenced by disqualify_ops_if_throwing_stmt(), gimple_purge_dead_eh_edges(), and tree_nrv().

static tree* gimple_return_retval_ptr ( )
inlinestatic
   Return a pointer to the return value for GIMPLE_RETURN GS.  
static void gimple_return_set_retbnd ( )
inlinestatic
   Set RETVAL to be the return bounds for GIMPLE_RETURN GS.  
static void gimple_return_set_retval ( )
inlinestatic
   Set RETVAL to be the return value for GIMPLE_RETURN GS.  

Referenced by gimple_build_with_ops_stat().

void gimple_seq_add_seq ( gimple_seq ,
gimple_seq   
)
void gimple_seq_add_stmt ( gimple_seq ,
gimple   
)
void gimple_seq_add_stmt_without_update ( gimple_seq ,
gimple   
)
   Link gimple statement GS to the end of the sequence *SEQ_P.  If
   *SEQ_P is NULL, a new sequence is allocated.  This function is
   similar to gimple_seq_add_stmt, but does not scan the operands.
   During gimplification, we need to manipulate statement sequences
   before the def/use vectors have been constructed.  
gimple_seq gimple_seq_alloc ( void  )
static gimple_seq gimple_seq_alloc_with_stmt ( )
inlinestatic
   Allocate a new sequence and initialize its first element with STMT.  
gimple_seq gimple_seq_copy ( gimple_seq  )
static bool gimple_seq_empty_p ( )
inlinestatic
static gimple_seq_node gimple_seq_first ( )
inlinestatic
   Return the first node in GIMPLE sequence S.  

Referenced by gsi_insert_on_edge_immediate().

static gimple gimple_seq_first_stmt ( )
inlinestatic
   Return the first statement in GIMPLE sequence S.  

Referenced by dump_gimple_omp_parallel(), finalize_nesting_tree_1(), find_goto_replacement(), move_sese_region_to_fn(), and remap_vla_decls().

void gimple_seq_free ( gimple_seq  )
static gimple_seq_node gimple_seq_last ( )
inlinestatic
   Return the last node in GIMPLE sequence S.  

Referenced by gsi_set_stmt().

static gimple gimple_seq_last_stmt ( )
inlinestatic
   Return the last statement in GIMPLE sequence S.  

Referenced by move_sese_region_to_fn().

static void gimple_seq_set_first ( )
inlinestatic
   Set the first node in GIMPLE sequence *PS to FIRST.  

Referenced by gsi_set_stmt(), and gsi_split_seq_after().

static void gimple_seq_set_last ( )
inlinestatic
   Set the last node in GIMPLE sequence *PS to LAST.  

Referenced by gsi_insert_seq_nodes_after(), gsi_set_stmt(), and gsi_split_seq_after().

static void gimple_seq_set_location ( )
inlinestatic
   Set the location of all statements in SEQ to LOC.  
static bool gimple_seq_singleton_p ( )
inlinestatic
   Determine whether SEQ is a singleton. 

Referenced by find_goto_replacement().

void gimple_set_bb ( gimple  ,
basic_block   
)
static void gimple_set_block ( )
inlinestatic
   Set BLOCK to be the lexical scope block holding statement G.  

Referenced by lower_gimple_return(), lower_omp_directive(), make_blocks(), and valid_gimple_call_p().

void gimple_set_body ( tree  ,
gimple_seq   
)
static void gimple_set_has_volatile_ops ( )
inlinestatic
   Set the HAS_VOLATILE_OPS flag to VOLATILEP.  

Referenced by get_expr_operands(), and mark_address_taken().

void gimple_set_lhs ( gimple  ,
tree   
)
static void gimple_set_modified ( )
inlinestatic
   Set the MODIFIED flag to MODIFIEDP, iff the gimple statement G has
   a MODIFIED field.  

Referenced by gsi_split_seq_before().

static void gimple_set_no_warning ( )
inlinestatic
   Set the no_warning flag of STMT to NO_WARNING.  
static void gimple_set_num_ops ( )
inlinestatic
   Set the number of operands for statement GS.  
static void gimple_set_op ( )
inlinestatic
   Set operand I of statement GS to OP.  
     Note.  It may be tempting to assert that OP matches
     is_gimple_operand, but that would be wrong.  Different tuples
     accept slightly different sets of tree operands.  Each caller
     should perform its own validation.  

Referenced by gimple_call_reset_alias_info().

static void gimple_set_plf ( )
inlinestatic
   Set pass local flag PLF on statement STMT to VAL_P.  

Referenced by inhibit_phi_insertion(), and marked_for_renaming().

static void gimple_set_use_ops ( )
inlinestatic
   Set USE to be the set of USE operands for statement G.  
static void gimple_set_vdef ( )
inlinestatic
   Set the single VDEF operand of the statement G.  

Referenced by valid_gimple_call_p(), and vect_get_vec_defs_for_stmt_copy().

static void gimple_set_visited ( )
inlinestatic
   Set the visited status on statement STMT to VISITED_P.  

Referenced by acceptable_pow_call(), attempt_builtin_powi(), is_phi_for_stmt(), and swap_ops_for_binary_stmt().

static void gimple_set_vuse ( )
inlinestatic
   Set the single VUSE operand of the statement G.  

Referenced by valid_gimple_call_p(), vect_create_cond_for_alias_checks(), and vect_get_vec_defs_for_stmt_copy().

tree gimple_signed_type ( tree  )
static enum gimple_statement_structure_enum gimple_statement_structure ( )
inlinestatic
   Return which GSS code is used by GS.  
static unsigned int gimple_stmt_max_uid ( )
inlinestatic
   Get the number of the next statement uid to be allocated.  

Referenced by input_ssa_names().

static bool gimple_store_p ( )
inlinestatic
   Return true if GS performs a store to its lhs.  

Referenced by instrument_gimple().

static tree gimple_switch_default_label ( )
inlinestatic
   Return the default label for a switch statement.  
static tree gimple_switch_index ( )
inlinestatic
   Return the index variable used by the switch statement GS.  

Referenced by associate_equivalences_with_edges(), and optimize_stmt().

static tree* gimple_switch_index_ptr ( )
inlinestatic
   Return a pointer to the index variable for the switch statement GS.  
static tree gimple_switch_label ( )
inlinestatic
   Return the label numbered INDEX.  The default label is 0, followed by any
   labels in a switch statement.  

Referenced by associate_equivalences_with_edges(), compare_names(), create_temp_arrays(), get_vr_for_comparison(), and maybe_record_in_goto_queue().

static unsigned gimple_switch_num_labels ( )
inlinestatic
   Return the number of labels associated with the switch statement GS.  

Referenced by associate_equivalences_with_edges(), compare_names(), create_temp_arrays(), and get_vr_for_comparison().

static void gimple_switch_set_default_label ( )
inlinestatic
   Set the default label for a switch statement.  

Referenced by gimple_build_try().

static void gimple_switch_set_index ( )
inlinestatic
   Set INDEX to be the index variable for switch statement GS.  

Referenced by gimple_build_try(), and simplify_gimple_switch_label_vec().

static void gimple_switch_set_label ( )
inlinestatic
   Set the label number INDEX to LABEL.  0 is always the default label.  
static void gimple_switch_set_num_labels ( )
inlinestatic
   Set NLABELS to be the number of labels for the switch statement GS.  
static gimple_seq gimple_transaction_body ( )
inlinestatic
   Return the body for the GIMPLE_TRANSACTION statement GS.  
static gimple_seq* gimple_transaction_body_ptr ( )
inlinestatic
   Return a pointer to the body for the GIMPLE_TRANSACTION statement GS.  
static tree gimple_transaction_label ( )
inlinestatic
   Return the label associated with a GIMPLE_TRANSACTION.  

Referenced by dump_gimple_omp_return().

static tree* gimple_transaction_label_ptr ( )
inlinestatic
static void gimple_transaction_set_body ( )
inlinestatic
   Set BODY to be the body for the GIMPLE_TRANSACTION statement GS.  

Referenced by gimple_build_omp_single().

static void gimple_transaction_set_label ( )
inlinestatic
   Set the label associated with a GIMPLE_TRANSACTION.  

Referenced by examine_assign_tm(), and gimple_build_omp_single().

static void gimple_transaction_set_subcode ( )
inlinestatic
   Set the subcode associated with a GIMPLE_TRANSACTION.  
static unsigned int gimple_transaction_subcode ( )
inlinestatic
   Return the subcode associated with a GIMPLE_TRANSACTION.  

Referenced by get_tm_region_blocks().

static bool gimple_try_catch_is_cleanup ( )
inlinestatic
   Return the GIMPLE_TRY_CATCH_IS_CLEANUP flag.  
static gimple_seq gimple_try_cleanup ( )
inlinestatic
   Return the sequence of statements used as the cleanup body for
   GIMPLE_TRY GS.  

Referenced by gimple_purge_all_dead_abnormal_call_edges(), and honor_protect_cleanup_actions().

static gimple_seq* gimple_try_cleanup_ptr ( )
inlinestatic
   Return a pointer to the sequence of statements used as the cleanup body for
   GIMPLE_TRY GS.  

Referenced by replace_goto_queue_cond_clause().

static gimple_seq gimple_try_eval ( )
inlinestatic
   Return the sequence of statements used as the body for GIMPLE_TRY GS.  

Referenced by gimple_purge_all_dead_abnormal_call_edges(), and honor_protect_cleanup_actions().

static gimple_seq* gimple_try_eval_ptr ( )
inlinestatic
   Return a pointer to the sequence of statements used as the
   body for GIMPLE_TRY GS.  

Referenced by replace_goto_queue_cond_clause().

static enum gimple_try_flags gimple_try_kind ( )
inlinestatic
   GIMPLE_TRY accessors. 
   Return the kind of try block represented by GIMPLE_TRY GS.  This is
   either GIMPLE_TRY_CATCH or GIMPLE_TRY_FINALLY.  
static void gimple_try_set_catch_is_cleanup ( )
inlinestatic
   Set the GIMPLE_TRY_CATCH_IS_CLEANUP flag.  

Referenced by gimplify_expr().

static void gimple_try_set_cleanup ( )
inlinestatic
   Set CLEANUP to be the sequence of statements to use as the cleanup
   body for GIMPLE_TRY GS.  

Referenced by gimple_build_eh_filter().

static void gimple_try_set_eval ( )
inlinestatic
   Set EVAL to be the sequence of statements to use as the body for
   GIMPLE_TRY GS.  

Referenced by gimple_build_eh_filter().

static void gimple_try_set_kind ( )
inlinestatic
   Set the kind of try block represented by GIMPLE_TRY GS.  
static unsigned gimple_uid ( )
inlinestatic
tree gimple_unsigned_type ( tree  )
static struct use_optype_d* gimple_use_ops ( )
staticread
   Return the set of USE operands for statement G.  

Referenced by op_iter_next_tree().

static tree* gimple_vdef_ptr ( )
inlinestatic
   Return the single VDEF operand of the statement G.  

Referenced by num_imm_uses().

static bool gimple_visited_p ( )
inlinestatic
   Return the visited status for statement STMT.  
static tree* gimple_vuse_ptr ( )
inlinestatic
   Return the single VUSE operand of the statement G.  
static gimple_seq gimple_wce_cleanup ( )
inlinestatic
   Return the cleanup sequence for cleanup statement GS.  
static bool gimple_wce_cleanup_eh_only ( )
inlinestatic
   Return the CLEANUP_EH_ONLY flag for a WCE tuple.  
static gimple_seq* gimple_wce_cleanup_ptr ( )
inlinestatic
   Return a pointer to the cleanup sequence for cleanup statement GS.  
static void gimple_wce_set_cleanup ( )
inlinestatic
   Set CLEANUP to be the cleanup sequence for GS.  

Referenced by gimple_build_eh_must_not_throw().

static void gimple_wce_set_cleanup_eh_only ( )
inlinestatic
   Set the CLEANUP_EH_ONLY flag for a WCE tuple.  
gimple gimplify_assign ( tree  ,
tree  ,
gimple_seq  
)
gimple gimplify_body ( tree  ,
bool   
)
enum gimplify_status gimplify_expr ( tree expr_p,
gimple_seq pre_p,
gimple_seq post_p,
bool(*)(tree gimple_test_f,
fallback_t  fallback 
)
   Convert the GENERIC expression tree *EXPR_P to GIMPLE.  If the
   expression produces a value to be used as an operand inside a GIMPLE
   statement, the value will be stored back in *EXPR_P.  This value will
   be a tree of class tcc_declaration, tcc_constant, tcc_reference or
   an SSA_NAME.  The corresponding sequence of GIMPLE statements is
   emitted in PRE_P and POST_P.

   Additionally, this process may overwrite parts of the input
   expression during gimplification.  Ideally, it should be
   possible to do non-destructive gimplification.

   EXPR_P points to the GENERIC expression to convert to GIMPLE.  If
      the expression needs to evaluate to a value to be used as
      an operand in a GIMPLE statement, this value will be stored in
      *EXPR_P on exit.  This happens when the caller specifies one
      of fb_lvalue or fb_rvalue fallback flags.

   PRE_P will contain the sequence of GIMPLE statements corresponding
       to the evaluation of EXPR and all the side-effects that must
       be executed before the main expression.  On exit, the last
       statement of PRE_P is the core statement being gimplified.  For
       instance, when gimplifying 'if (++a)' the last statement in
       PRE_P will be 'if (t.1)' where t.1 is the result of
       pre-incrementing 'a'.

   POST_P will contain the sequence of GIMPLE statements corresponding
       to the evaluation of all the side-effects that must be executed
       after the main expression.  If this is NULL, the post
       side-effects are stored at the end of PRE_P.

       The reason why the output is split in two is to handle post
       side-effects explicitly.  In some cases, an expression may have
       inner and outer post side-effects which need to be emitted in
       an order different from the one given by the recursive
       traversal.  For instance, for the expression (*p--)++ the post
       side-effects of '--' must actually occur *after* the post
       side-effects of '++'.  However, gimplification will first visit
       the inner expression, so if a separate POST sequence was not
       used, the resulting sequence would be:

            1   t.1 = *p
            2   p = p - 1
            3   t.2 = t.1 + 1
            4   *p = t.2

       However, the post-decrement operation in line #2 must not be
       evaluated until after the store to *p at line #4, so the
       correct sequence should be:

            1   t.1 = *p
            2   t.2 = t.1 + 1
            3   *p = t.2
            4   p = p - 1

       So, by specifying a separate post queue, it is possible
       to emit the post side-effects in the correct order.
       If POST_P is NULL, an internal queue will be used.  Before
       returning to the caller, the sequence POST_P is appended to
       the main output sequence PRE_P.

   GIMPLE_TEST_F points to a function that takes a tree T and
       returns nonzero if T is in the GIMPLE form requested by the
       caller.  The GIMPLE predicates are in gimple.c.

   FALLBACK tells the function what sort of a temporary we want if
       gimplification cannot produce an expression that complies with
       GIMPLE_TEST_F.

       fb_none means that no temporary should be generated
       fb_rvalue means that an rvalue is OK to generate
       fb_lvalue means that an lvalue is OK to generate
       fb_either means that either is OK, but an lvalue is preferable.
       fb_mayfail means that gimplification may fail (in which case
       GS_ERROR will be returned)

   The return value is either GS_ERROR or GS_ALL_DONE, since this
   function iterates until EXPR is completely gimplified or an error
   occurs.  
     If we are gimplifying a top-level statement, PRE_P must be valid.  
     Consistency checks.  
         We should have recognized the GIMPLE_TEST_F predicate to
         know what kind of fallback to use in case a temporary is
         needed to hold the value or address of *EXPR_P.  
     We used to check the predicate here and return immediately if it
     succeeds.  This is wrong; the design is for gimplification to be
     idempotent, and for the predicates to only test for valid forms, not
     whether they are fully simplified.  
     Remember the last statements added to PRE_P and POST_P.  Every
     new statement added by the gimplification helpers needs to be
     annotated with location information.  To centralize the
     responsibility, we remember the last statement that had been
     added to both queues before gimplifying *EXPR_P.  If
     gimplification produces new statements in PRE_P and POST_P, those
     statements will be annotated with the same location information
     as *EXPR_P.  
     Loop over the specific gimplifiers until the toplevel node
     remains the same.  
         Strip away as many useless type conversions as possible
         at the toplevel.  
         Remember the expr.  
         Die, die, die, my darling.  
         Do any language-specific gimplification.  
         Make sure that all the cases set 'ret' appropriately.  
             First deal with the special cases.  
             C99 code may assign to an array in a structure value of a
             conditional expression, and this has undefined behavior
             only on execution, so create a temporary if an lvalue is
             required.  
             If errors are seen, then just process it as a CALL_EXPR.  
             C99 code may assign to an array in a structure returned
             from a function, and this has undefined behavior only on
             execution, so create a temporary if an lvalue is
             required.  
               Preserve the original type of the expression and the
               source location of the outer expression.  
               The parsers are careful to generate TRUTH_NOT_EXPR
               only with operands that are always zero or one.
               We do not fold here but handle the only interesting case
               manually, as fold may re-introduce the TRUTH_NOT_EXPR.  
                 Just strip a conversion to void (or in void context) and
                 try again.  
             FALLTHRU 
             unary_expr: ... | '(' cast ')' val | ...  
           We arrive here through the various re-gimplifcation paths.  
             First try re-folding the whole thing.  
             Avoid re-gimplifying the address operand if it is already
             in suitable form.  Re-gimplifying would mark the address
             operand addressable.  Always gimplify when not in SSA form
             as we still may have to gimplify decls with value-exprs.  
           Constants need not be gimplified.  
             If we require an lvalue, such as for ADDR_EXPR, retain the
             CONST_DECL node.  Otherwise the decl is replaceable by its
             value.  
             ??? Should be == fb_lvalue, but ADDR_EXPR passes fb_either.  
             If the target is not LABEL, then it is a computed jump
             and the target needs to be gimplified.  
             Don't reduce this in place; let gimplify_init_constructor work its
             magic.  Buf if we're just elaborating this for side effects, just
             gimplify any element that has side-effects.  
             C99 code may assign to an array in a constructed
             structure or union, and this has undefined behavior only
             on execution, so create a temporary if an lvalue is
             required.  
             The following are special cases that are not handled by the
             original GIMPLE grammar.  
             SAVE_EXPR nodes are converted into a GIMPLE identifier and
             eliminated.  
               TMR_STEP and TMR_OFFSET are always integer constants.  
             This should have been stripped above.  
               Calls to destructors are generated automatically in FINALLY/CATCH
               block. They should have location as UNKNOWN_LOCATION. However,
               gimplify_call_expr will reset these call stmts to input_location
               if it finds stmt's location is unknown. To prevent resetting for
               destructors, we set the input_location to unknown.
               Note that this only affects the destructor calls in FINALLY/CATCH
               block, and will automatically reset to its original value by the
               end of gimplify_expr.  
               Don't create bogus GIMPLE_TRY with empty cleanup.  
             We get here when taking the address of a label.  We mark
             the label as "forced"; meaning it can never be removed and
             it is a potential target for any computed goto.  
             When within an OpenMP context, notice uses of variables.  
             Allow callbacks into the gimplifier during optimization.  
             Boolified binary truth expressions are semantically equivalent
             to bitwise binary expressions.  Canonicalize them to the
             bitwise variant.  
               Now make sure that operands have compatible type to
               expression's new_type.  
               Continue classified as tcc_binary.  
             Classified as tcc_expression.  
               Convert &X + CST to invariant &MEM[&X, CST].  Do this
               after gimplifying operands - this is similar to how
               it would be folding all gimplified stmts on creation
               to have them canonicalized, which is what we eventually
               should do anyway.  
                 Handle comparison of objects of non scalar mode aggregates
                 with a call to memcmp.  It would be nice to only have to do
                 this for variable-sized objects, but then we'd have to allow
                 the same nest of reference nodes we allow for MODIFY_EXPR and
                 that's too complex.

                 Compare scalar mode aggregates as scalar mode values.  Using
                 memcmp for them would be very inefficient at best, and is
                 plain wrong if bitfields are involved.  
                     Vector comparisons need no boolification.  
               If *EXPR_P does not need to be special-cased, handle it
               according to its class.  
     If we encountered an error_mark somewhere nested inside, either
     stub out the statement or propagate the error back out.  
     This was only valid as a return value from the langhook, which
     we handled.  Make sure it doesn't escape from any other context.  
         We aren't looking for a value, and we don't have a valid
         statement.  If it doesn't have side-effects, throw it away.  
             This is probably a _REF that contains something nested that
             has side effects.  Recurse through the operands to find it.  
                  Anything else with side-effects must be converted to
                  a valid statement before we get here.  
             Historically, the compiler has treated a bare reference
             to a non-BLKmode volatile lvalue as forcing a load.  
             Normally, we do not want to create a temporary for a
             TREE_ADDRESSABLE type because such a type should not be
             copied by bitwise-assignment.  However, we make an
             exception here, as all we are doing here is ensuring that
             we read the bytes that make up the type.  We use
             create_tmp_var_raw because create_tmp_var will abort when
             given a TREE_ADDRESSABLE type.  
           We can't do anything useful with a volatile reference to
           an incomplete type, so just throw it away.  Likewise for
           a BLKmode type, since any implicit inner load should
           already have been turned into an explicit one by the
           gimplification process.  
     If we are gimplifying at the statement level, we're done.  Tack
     everything together and return.  
         Since *EXPR_P has been converted into a GIMPLE tuple, clear
         it out for GC to reclaim it.  
         The result of gimplifying *EXPR_P is going to be the last few
         statements in *PRE_P and *POST_P.  Add location information
         to all the statements that were added by the gimplification
         helpers.  
         These expressions should already be in gimple IR form.  
     Otherwise we're gimplifying a subexpression, so the resulting
     value is interesting.  If it's a valid operand that matches
     GIMPLE_TEST_F, we're done. Unless we are handling some
     post-effects internally; if that's the case, we need to copy into
     a temporary before adding the post-effects to POST_P.  
     Otherwise, we need to create a new temporary for the gimplified
     expression.  
     We can't return an lvalue if we have an internal postqueue.  The
     object the lvalue refers to would (probably) be modified by the
     postqueue; we need to copy the value out first, which means an
     rvalue.  
         An lvalue will do.  Take the address of the expression, store it
         in a temporary, and replace the expression with an INDIRECT_REF of
         that temporary.  
         An rvalue will do.  Assign the gimplified expression into a
         new temporary TMP and replace the original expression with
         TMP.  First, make sure that the expression has a type so that
         it can be assigned into a temporary.  
         If this is an asm statement, and the user asked for the
         impossible, don't die.  Fail and let gimplify_asm_expr
         issue an error.  
     Make sure the temporary matches our predicate.  

References eval(), gimple_build_try(), gimple_seq_add_seq(), gimple_seq_empty_p(), gimple_set_location(), GIMPLE_TRY_CATCH, GIMPLE_TRY_FINALLY, gimple_try_set_catch_is_cleanup(), gimplify_and_add(), gimplify_seq_add_stmt(), GS_ALL_DONE, and input_location.

Referenced by lookup_tmp_var().

void gimplify_function_tree ( tree  )
   In gimplify.c.  
void gimplify_one_sizepos ( tree ,
gimple_seq  
)
enum gimplify_status gimplify_self_mod_expr ( tree expr_p,
gimple_seq pre_p,
gimple_seq post_p,
bool  want_value,
tree  arith_type 
)
    Gimplify the self modifying expression pointed to by EXPR_P
    (++, --, +=, -=).

    PRE_P points to the list where side effects that must happen before
        *EXPR_P should be stored.

    POST_P points to the list where side effects that must happen after
        *EXPR_P should be stored.

    WANT_VALUE is nonzero iff we want to use the value of this expression
        in another expression.

    ARITH_TYPE is the type the computation should be performed in.  
     Prefix or postfix?  
       Faster to treat as prefix if result is not used.  
     For postfix, make sure the inner expression's post side effects
     are executed after side effects from this expression.  
     Add or subtract?  
     Gimplify the LHS into a GIMPLE lvalue.  
     Extract the operands to the arithmetic operation.  
     For postfix operator, we evaluate the LHS to an rvalue and then use
     that as the result value and in the postqueue operation.  
     For POINTERs increment, use POINTER_PLUS_EXPR.  

Referenced by gimplify_omp_workshare().

bool gimplify_stmt ( tree ,
gimple_seq  
)
void gimplify_type_sizes ( tree  ,
gimple_seq  
)
enum gimplify_status gimplify_va_arg_expr ( tree ,
gimple_seq ,
gimple_seq  
)
static basic_block gsi_bb ( )
inlinestatic
   Return the basic block associated with this iterator.  

Referenced by debug_var_infos_r(), gsi_for_stmt(), gsi_insert_seq_before(), and gsi_split_seq_before().

void gsi_commit_edge_inserts ( void  )
   This routine will commit all pending edge insertions, creating any new
   basic blocks which are necessary.  

Referenced by close_phi_written_to_memory(), find_switch_asserts(), and translate_clast_for_loop().

void gsi_commit_one_edge_insert ( edge  ,
basic_block  
)
static bool gsi_end_p ( )
inlinestatic
   Return true if I is at the end of its sequence.  

Referenced by add_tree_to_fld_list(), associate_equivalences_with_edges(), attempt_coalesce(), build_new_reduction(), build_one_array(), create_loads_and_stores_for_name(), create_loop_fn(), create_sese_edges(), delete_omp_context(), delete_worklist(), deps_ok_for_redirect(), dest_safe_for_nrv_p(), disqualify_ops_if_throwing_stmt(), do_partial_partial_insertion(), eliminate_useless_phis(), simd_array_to_simduid::equal(), find_refs_for_sm(), find_subloop_latch_edge_by_profile(), function_attribute_inlinable_p(), get_iv(), gimple_build_predict(), gimple_check_failed(), gimple_make_forwarder_block(), gimple_purge_all_dead_abnormal_call_edges(), gimple_redirect_edge_and_branch(), gimple_seq_add_stmt(), gsi_for_stmt(), gsi_insert_on_edge(), gsi_move_to_bb_end(), independent_of_stmt_p(), inhibit_phi_insertion(), init_object_sizes(), init_parameter_lattice_values(), insert_gimplified_predicates(), ipa_record_stmt_references(), is_ctrl_stmt(), limit_scops(), move_stmt_op(), new_loop_vec_info(), operand_equal_for_value_replacement(), output_location(), phi_result_unknown_predicate(), phi_translate(), print_global_statistics(), print_graphite_scop_statistics(), process_assert_insertions_for(), pt_solution_includes_1(), record_in_finally_tree(), record_temporary_equivalences(), redirect_edge_var_map_destroy(), register_edge_assert_for_1(), remove_exit_barriers(), remove_phi_args(), renumber_gimple_stmt_uids(), renumber_gimple_stmt_uids_in_blocks(), replace_locals_op(), rewrite_cross_bb_scalar_deps(), scev_reset(), set_var_live_on_entry(), stmt_can_make_abnormal_goto(), surely_varying_stmt_p(), tree_bb_level_predictions(), tree_nrv(), trivially_conflicts_p(), try_improve_iv_set(), unsplit_all_eh(), update_complex_assignment(), update_dep_bb(), vect_can_advance_ivs_p(), vect_create_cond_for_alias_checks(), vect_loop_kill_debug_uses(), vect_make_slp_decision(), vect_pattern_recog_1(), vect_transform_loop(), verify_expr_location_1(), verify_loop_closed_ssa(), visit_hist(), and zero_one_operation().

gimple_stmt_iterator gsi_for_stmt ( gimple  )
void gsi_insert_after ( gimple_stmt_iterator i,
gimple  stmt,
enum gsi_iterator_update  m 
)
void gsi_insert_after_without_update ( gimple_stmt_iterator i,
gimple  stmt,
enum gsi_iterator_update  m 
)
   Insert statement STMT after the statement pointed-to by iterator I.
   M specifies how to update iterator I after insertion (see enum
   gsi_iterator_update).

   This function does not scan for new operands.  It is provided for
   the use of the gimplifier, which manipulates statements for which
   def/use information has not yet been constructed.  Most callers
   should use gsi_insert_after.  

Referenced by gsi_insert_before_without_update().

void gsi_insert_before_without_update ( gimple_stmt_iterator i,
gimple  stmt,
enum gsi_iterator_update  m 
)
   Insert statement STMT before the statement pointed-to by iterator I.
   M specifies how to update iterator I after insertion (see enum
   gsi_iterator_update).

   This function does not scan for new operands.  It is provided for
   the use of the gimplifier, which manipulates statements for which
   def/use information has not yet been constructed.  Most callers
   should use gsi_insert_before.  

References gsi_insert_after_without_update(), and update_modified_stmt().

Referenced by gsi_replace_with_seq().

void gsi_insert_on_edge ( edge  ,
gimple   
)
basic_block gsi_insert_on_edge_immediate ( edge  ,
gimple   
)
void gsi_insert_seq_after ( gimple_stmt_iterator i,
gimple_seq  seq,
enum gsi_iterator_update  mode 
)
   Links sequence SEQ after the statement pointed-to by iterator I.
   MODE is as in gsi_insert_after.  Scan the statements in SEQ
   for new operands.  

Referenced by expand_complex_conjugate(), extract_component(), find_goto_replacement(), and gsi_insert_on_edge_immediate().

void gsi_insert_seq_after_without_update ( gimple_stmt_iterator i,
gimple_seq  seq,
enum gsi_iterator_update  mode 
)
   Links sequence SEQ after the statement pointed-to by iterator I.
   MODE is as in gsi_insert_after.

   This function does not scan for new operands.  It is provided for
   the use of the gimplifier, which manipulates statements for which
   def/use information has not yet been constructed.  Most callers
   should use gsi_insert_seq_after.  
     Don't allow inserting a sequence into itself.  
     Empty sequences need no work.  
void gsi_insert_seq_before ( gimple_stmt_iterator i,
gimple_seq  seq,
enum gsi_iterator_update  mode 
)
   Inserts the sequence of statements SEQ before the statement pointed
   by iterator I.  MODE indicates what to do with the iterator after
   insertion (see enum gsi_iterator_update). Scan the statements in SEQ
   for new operands.  

References gsi_bb(), gimple_statement_base::prev, gimple_stmt_iterator_d::ptr, and update_bb_for_stmts().

Referenced by gsi_insert_on_edge_immediate(), gsi_replace(), and replace_goto_queue_cond_clause().

void gsi_insert_seq_before_without_update ( gimple_stmt_iterator i,
gimple_seq  seq,
enum gsi_iterator_update  mode 
)
   Inserts the sequence of statements SEQ before the statement pointed
   by iterator I.  MODE indicates what to do with the iterator after
   insertion (see enum gsi_iterator_update).

   This function does not scan for new operands.  It is provided for
   the use of the gimplifier, which manipulates statements for which
   def/use information has not yet been constructed.  Most callers
   should use gsi_insert_seq_before.  
     Don't allow inserting a sequence into itself.  
     Empty sequences need no work.  
void gsi_insert_seq_on_edge ( edge  ,
gimple_seq   
)
basic_block gsi_insert_seq_on_edge_immediate ( edge  ,
gimple_seq   
)
static gimple_stmt_iterator gsi_last_1 ( )
inlinestatic
   Return a new iterator initially pointing to GIMPLE_SEQ's last statement.  
static gimple_stmt_iterator gsi_last_nondebug_bb ( )
inlinestatic
   Return a new iterator pointing to the last non-debug statement in
   basic block BB.  

Referenced by output_location(), and try_improve_iv_set().

void gsi_move_after ( gimple_stmt_iterator ,
gimple_stmt_iterator  
)
void gsi_move_before ( gimple_stmt_iterator ,
gimple_stmt_iterator  
)
void gsi_move_to_bb_end ( gimple_stmt_iterator ,
basic_block   
)
static void gsi_next ( )
inlinestatic
   Advance the iterator to the next gimple statement.  

Referenced by add_tree_to_fld_list(), arith_code_with_undefined_signed_overflow(), attempt_coalesce(), build_new_reduction(), build_one_array(), create_loads_and_stores_for_name(), create_loop_fn(), create_sese_edges(), delete_omp_context(), deps_ok_for_redirect(), dest_safe_for_nrv_p(), disqualify_ops_if_throwing_stmt(), do_partial_partial_insertion(), eliminate_useless_phis(), simd_array_to_simduid::equal(), expression_expensive_p(), find_refs_for_sm(), find_subloop_latch_edge_by_profile(), follow_inital_value_to_phi(), function_attribute_inlinable_p(), get_iv(), gimple_build_predict(), gimple_check_failed(), gimple_make_forwarder_block(), gimple_purge_all_dead_abnormal_call_edges(), gimple_redirect_edge_and_branch(), gimple_seq_add_seq(), gsi_insert_on_edge(), handle_char_store(), handle_pointer_plus(), independent_of_stmt_p(), inhibit_phi_insertion(), init_object_sizes(), init_parameter_lattice_values(), insert_gimplified_predicates(), insert_out_of_ssa_copy_on_edge(), ipa_record_stmt_references(), is_ctrl_stmt(), limit_scops(), lower_omp_directive(), move_stmt_op(), new_loop_vec_info(), phi_result_unknown_predicate(), phi_translate(), print_global_statistics(), print_graphite_scop_statistics(), process_assert_insertions_for(), pt_solution_includes_1(), record_in_finally_tree(), record_temporary_equivalences(), redirect_edge_var_map_destroy(), remove_exit_barriers(), renumber_gimple_stmt_uids(), renumber_gimple_stmt_uids_in_blocks(), replace_locals_op(), rewrite_cross_bb_scalar_deps(), scev_finalize(), scev_reset(), set_var_live_on_entry(), stmt_can_make_abnormal_goto(), surely_varying_stmt_p(), transform_to_exit_first_loop(), tree_bb_level_predictions(), tree_nrv(), update_complex_assignment(), vect_can_advance_ivs_p(), vect_create_cond_for_alias_checks(), vect_loop_kill_debug_uses(), vect_make_slp_decision(), vect_pattern_recog_1(), vect_transform_loop(), verify_expr_location_1(), verify_loop_closed_ssa(), visit_hist(), and zero_one_operation().

static void gsi_next_nondebug ( )
inlinestatic
   Advance the iterator to the next non-debug gimple statement.  

Referenced by same_succ_def::equal(), operand_equal_for_value_replacement(), unsplit_all_eh(), and update_dep_bb().

static gimple_stmt_iterator gsi_none ( )
inlinestatic
static bool gsi_one_before_end_p ( )
inlinestatic
   Return true if I is one statement before the end of its sequence.  
static void gsi_prev ( )
inlinestatic
   Advance the iterator to the previous gimple statement.  

Referenced by register_edge_assert_for_1().

static void gsi_prev_nondebug ( )
inlinestatic
   Advance the iterator to the next non-debug gimple statement.  

Referenced by delete_worklist(), output_location(), and try_improve_iv_set().

bool gsi_remove ( gimple_stmt_iterator ,
bool   
)
void gsi_replace ( gimple_stmt_iterator ,
gimple  ,
bool   
)
void gsi_replace_with_seq ( gimple_stmt_iterator gsi,
gimple_seq  seq,
bool  update_eh_info 
)
   Replace the statement pointed-to by GSI with the sequence SEQ.
   If UPDATE_EH_INFO is true, the exception handling information of
   the original statement is moved to the last statement of the new
   sequence.  If the old statement is an assignment, then so must
   be the last statement of the new sequence, and they must have the
   same LHS.  

References gsi_insert_before_without_update(), and update_modified_stmt().

static gimple_seq gsi_seq ( )
inlinestatic
   Return the sequence associated with this iterator.  
void gsi_set_stmt ( gimple_stmt_iterator ,
gimple   
)
gimple_seq gsi_split_seq_after ( gimple_stmt_iterator  )
void gsi_split_seq_before ( gimple_stmt_iterator ,
gimple_seq  
)
static gimple_stmt_iterator gsi_start_1 ( )
inlinestatic
   Return a new iterator pointing to GIMPLE_SEQ's first statement.  
static gimple_stmt_iterator gsi_start_nondebug_after_labels_bb ( )
inlinestatic
   Return a new iterator pointing to the first non-debug non-label statement in
   basic block BB.  
static gimple_stmt_iterator gsi_start_nondebug_bb ( )
inlinestatic
   Return a new iterator pointing to the first non-debug statement in
   basic block BB.  

Referenced by update_dep_bb().

gimple_stmt_iterator gsi_start_phis ( basic_block  )
   In gimple-iterator.c  
static gimple gsi_stmt ( )
inlinestatic
   Return the current stmt.  

Referenced by add_tree_to_fld_list(), adjust_simduid_builtins(), alloc_iv(), apply_return_prediction(), associate_equivalences_with_edges(), attempt_coalesce(), branch_prob(), build_new_reduction(), build_one_array(), combine_cond_exprs(), constant_pointer_difference(), count_insns(), create_loads_and_stores_for_name(), create_loop_fn(), create_omp_child_function(), create_parallel_loop(), create_sese_edges(), delete_omp_context(), delete_worklist(), deps_ok_for_redirect(), dest_safe_for_nrv_p(), disqualify_ops_if_throwing_stmt(), do_partial_partial_insertion(), dse_optimize_stmt(), eliminate_useless_phis(), same_succ_def::equal(), examine_call_tm(), expand_omp_atomic_load(), expand_omp_for(), expand_omp_sections(), expand_omp_target(), final_range_test_p(), find_goto_replacement(), find_refs_for_sm(), find_subloop_latch_edge_by_profile(), find_uses_to_rename_stmt(), flush_pending_stmts(), fold_gimple_cond(), forward_propagate_addr_expr(), function_attribute_inlinable_p(), generate_subtree_copies(), get_iv(), gimple_assign_copy_p(), gimple_build_predict(), gimple_check_failed(), gimple_make_forwarder_block(), gimple_purge_all_dead_abnormal_call_edges(), gimple_redirect_edge_and_branch(), gimple_seq_add_seq(), gimple_value_profile_transformations(), gsi_for_stmt(), gsi_insert_on_edge(), gsi_move_to_bb_end(), gsi_replace(), gsi_split_seq_after(), gsi_split_seq_before(), independent_of_stmt_p(), inhibit_phi_insertion(), init_object_sizes(), init_parameter_lattice_values(), insert_gimplified_predicates(), insert_out_of_ssa_copy_on_edge(), instrument_builtin_call(), ipa_prop_write_all_agg_replacement(), ipa_record_stmt_references(), is_ctrl_stmt(), is_phi_for_stmt(), limit_scops(), live_track_clear_base_vars(), lower_gimple_return(), lower_omp_directive(), lower_omp_sections(), make_pass_lower_cf(), mark_reachable_handlers(), maybe_add_implicit_barrier_cancel(), maybe_catch_exception(), move_stmt_op(), new_loop_vec_info(), note_nonlocal_vla_type(), note_simd_array_uses(), operand_equal_for_value_replacement(), phi_result_unknown_predicate(), phi_translate(), process_assert_insertions_for(), propagate_rhs_into_lhs(), pt_solution_includes_1(), record_in_finally_tree(), record_temporary_equivalences(), register_edge_assert_for(), register_edge_assert_for_1(), register_new_def(), register_ssa_partition_check(), remove_exit_barriers(), renumber_gimple_stmt_uids(), renumber_gimple_stmt_uids_in_blocks(), replace_locals_op(), replace_phi_args_in(), rewrite_cross_bb_scalar_deps(), rewrite_reductions_out_of_ssa(), same_phi_args_p(), scev_finalize(), scev_reset(), set_var_live_on_entry(), simplify_bitwise_binary_1(), simplify_cond_using_ranges(), simplify_conversion_from_bitmask(), stmt_can_make_abnormal_goto(), surely_varying_stmt_p(), swap_ops_for_binary_stmt(), tree_bb_level_predictions(), tree_nrv(), trivially_conflicts_p(), try_improve_iv_set(), unsplit_all_eh(), update_complex_assignment(), update_dep_bb(), vect_analyze_stmt(), vect_can_advance_ivs_p(), vect_create_cond_for_alias_checks(), vect_get_vec_defs_for_stmt_copy(), vect_loop_kill_debug_uses(), vect_make_slp_decision(), vect_pattern_recog_1(), verify_expr_location_1(), verify_loop_closed_ssa(), visit_hist(), volatile_var_p(), warn_uninitialized_vars(), and zero_one_operation().

enum gimple_statement_structure_enum gss_for_assign ( enum  tree_code)
static enum gimple_statement_structure_enum gss_for_code ( )
inlinestatic
   Return the GSS code used by a GIMPLE code.  

Referenced by gimple_set_code().

static unsigned int inc_gimple_stmt_max_uid ( )
inlinestatic
   Set the number of the next statement uid to be allocated.  

Referenced by renumber_gimple_stmt_uids(), and renumber_gimple_stmt_uids_in_blocks().

void insert_field_into_struct ( tree  ,
tree   
)
bool is_gimple_address ( const_tree  )
   Returns true iff T is a GIMPLE address.  
bool is_gimple_addressable ( tree  )
   Returns true iff T is something whose address can be taken.  
bool is_gimple_asm_val ( tree  )
   Returns true iff T is a GIMPLE asm statement input.  
bool is_gimple_builtin_call ( gimple  stmt)
   Return TRUE iff stmt is a call to a built-in function.  
bool is_gimple_call_addr ( tree  )
   Returns true iff T is a valid call address expression.  
bool is_gimple_condexpr ( tree  )
   Returns true iff T is a valid if-statement condition.  
bool is_gimple_constant ( const_tree  )
   Returns true iff T is a valid GIMPLE constant.  
bool is_gimple_id ( tree  )
   Returns true iff T is any sort of symbol.  
bool is_gimple_invariant_address ( const_tree  )
   Returns true iff T is a GIMPLE invariant address.  
bool is_gimple_ip_invariant ( const_tree  )
   Returns true iff T is a GIMPLE restricted interprecodural invariant.  
bool is_gimple_ip_invariant_address ( const_tree  )
   Returns true iff T is a GIMPLE invariant address at interprocedural
   level.  
bool is_gimple_lvalue ( tree  )
   Returns true iff T is any valid GIMPLE lvalue.  
bool is_gimple_mem_ref_addr ( tree  )
   Returns true iff T is a valid address operand of a MEM_REF.  
bool is_gimple_min_invariant ( const_tree  )
   Returns true iff T is a GIMPLE restricted function invariant.  
bool is_gimple_min_lval ( tree  )
   Returns true iff T is a variable or an INDIRECT_REF (of a variable).  
static bool is_gimple_omp ( )
inlinestatic
bool is_gimple_reg ( tree  )
   Returns true iff T is a scalar register variable.  
static bool is_gimple_reg_type ( )
inlinestatic
static bool is_gimple_resx ( )
inlinestatic
   Return true if GS is a GIMPLE_RESX.  
static bool is_gimple_sizepos ( )
inlinestatic
   Return true if gimplify_one_sizepos doesn't need to gimplify
   expr (when in TYPE_SIZE{,_UNIT} and similar type/decl size/bitsize
   fields).  
     gimplify_one_sizepos doesn't need to do anything if the value isn't there,
     is constant, or contains A PLACEHOLDER_EXPR.  We also don't want to do
     anything if it's already a VAR_DECL.  If it's a VAR_DECL from another
     function, the gimplifier will want to replace it with a new variable,
     but that will cause problems if this type is from outside the function.
     It's OK to have that here.  
bool is_gimple_val ( tree  )
   Returns true iff T is a GIMPLE rvalue.  
bool is_gimple_variable ( tree  )
   Returns true iff T is any sort of variable.  
void lower_nested_functions ( tree  )
   In tree-nested.c.  
bool nonfreeing_call_p ( gimple  )
void omp_firstprivatize_variable ( struct gimplify_omp_ctx ,
tree   
)
static gimple_seq phi_nodes ( )
inlinestatic
   Return the PHI nodes for basic block BB, or NULL if there are no
   PHI nodes.  

Referenced by gimple_redirect_edge_and_branch(), lower_emutls_phi_arg(), and value_replacement().

static gimple_seq* phi_nodes_ptr ( )
inlinestatic
   Return a pointer to the PHI nodes for basic block BB.  
static bool phi_ssa_name_p ( )
inlinestatic
   PHI nodes should contain only ssa_names and invariants.  A test
   for ssa_name is definitely simpler; don't let invalid contents
   slip in in the meantime.  
void pop_gimplify_context ( gimple  )
void preprocess_case_label_vec_for_gimple ( vec< tree labels,
tree  index_type,
tree default_casep 
)
   Prepare a vector of case labels to be used in a GIMPLE_SWITCH statement.

   LABELS is a vector that contains all case labels to look at.

   INDEX_TYPE is the type of the switch index expression.  Case labels
   in LABELS are discarded if their values are not in the value range
   covered by INDEX_TYPE.  The remaining case label values are folded
   to INDEX_TYPE.

   If a default case exists in LABELS, it is removed from LABELS and
   returned in DEFAULT_CASEP.  If no default case exists, but the
   case labels already cover the whole range of INDEX_TYPE, a default
   case is returned pointing to one of the existing case labels.
   Otherwise DEFAULT_CASEP is set to NULL_TREE.

   DEFAULT_CASEP may be NULL, in which case the above comment doesn't
   apply and no action is taken regardless of whether a default case is
   found or not.  
             This is a non-default case label, i.e. it has a value.

             See if the case label is reachable within the range of
             the index type.  Remove out-of-range case values.  Turn
             case ranges into a canonical form (high > low strictly)
             and convert the case label values to the index type.

             NB: The type of gimple_switch_index() may be the promoted
             type, but the case labels retain the original type.  
                 This is a case range.  Discard empty ranges.
                 If the bounds or the range are equal, turn this
                 into a simple (one-value) case.  
                 If the simple case value is unreachable, ignore it.  
                 If the entire case range is unreachable, ignore it.  
                     If the lower bound is less than the index type's
                     minimum value, truncate the range bounds.  
                     If the upper bound is greater than the index type's
                     maximum value, truncate the range bounds.  
                     We may have folded a case range to a one-value case.  
             The default case must be passed separately to the
             gimple_build_switch routine.  But if DEFAULT_CASEP
             is NULL, we do not remove the default case (it would
             be completely lost).  
         If the switch has no default label, add one, so that we jump
         around the switch body.  If the labels already cover the whole
         range of the switch index_type, add the default label pointing
         to one of the existing labels.  

References build_case_label(), len, and tree_int_cst_equal().

void push_gimplify_context ( struct gimplify_ctx )
void recalculate_side_effects ( tree  )
gimple_predicate rhs_predicate_for ( tree  )
static void set_bb_seq ( )
inlinestatic
   Sets the sequence of statements in BB to SEQ.  
static void set_gimple_stmt_max_uid ( )
inlinestatic
   Set the number of the next statement uid to be allocated.  
void sort_case_labels ( vec< tree )
bool types_compatible_p ( tree  ,
tree   
)
bool useless_type_conversion_p ( tree  ,
tree   
)
bool validate_gimple_arglist ( const_gimple  ,
  ... 
)
   In builtins.c  
bool virtual_operand_p ( tree  )
   Returns true iff T is a virtual ssa name decl.  
tree voidify_wrapper_expr ( tree  ,
tree   
)
tree walk_gimple_op ( gimple  stmt,
walk_tree_fn  callback_op,
struct walk_stmt_info wi 
)
   Helper function of WALK_GIMPLE_STMT.  Walk every tree operand in
   STMT.  CALLBACK_OP and WI are as in WALK_GIMPLE_STMT.

   CALLBACK_OP is called on each operand of STMT via walk_tree.
   Additional parameters to walk_tree must be stored in WI.  For each operand
   OP, walk_tree is called as:

        walk_tree (&OP, CALLBACK_OP, WI, WI->PSET)

   If CALLBACK_OP returns non-NULL for an operand, the remaining
   operands are not scanned.

   The return value is that returned by the last call to walk_tree, or
   NULL_TREE if no CALLBACK_OP is specified.  
         Walk the RHS operands.  If the LHS is of a non-renamable type or
         is a register variable, we may use a COMPONENT_REF on the RHS.  
         Walk the LHS.  If the RHS is appropriate for a memory, we
         may use a COMPONENT_REF on the LHS.  
             If the RHS is of a non-renamable type or is a register variable,
             we may use a COMPONENT_REF on the LHS.  
         Tuples that do not have operands.  

Referenced by count_uses_and_derefs(), and note_simd_array_uses().

gimple walk_gimple_seq ( gimple_seq  seq,
walk_stmt_fn  callback_stmt,
walk_tree_fn  callback_op,
struct walk_stmt_info wi 
)
   Like walk_gimple_seq_mod, but ensure that the head of SEQ isn't
   changed by the callbacks.  

References walk_stmt_info::pset.

gimple walk_gimple_seq_mod ( gimple_seq pseq,
walk_stmt_fn  callback_stmt,
walk_tree_fn  callback_op,
struct walk_stmt_info wi 
)
   Walk all the statements in the sequence *PSEQ calling walk_gimple_stmt
   on each one.  WI is as in walk_gimple_stmt.

   If walk_gimple_stmt returns non-NULL, the walk is stopped, and the
   value is stored in WI->CALLBACK_RESULT.  Also, the statement that
   produced the value is returned if this statement has not been
   removed by a callback (wi->removed_stmt).  If the statement has
   been removed, NULL is returned.

   Otherwise, all the statements are walked and NULL returned.  
             If CALLBACK_STMT or CALLBACK_OP return a value, WI must exist
             to hold it.  

References walk_stmt_info::is_lhs, and walk_stmt_info::val_only.

tree walk_gimple_stmt ( gimple_stmt_iterator gsi,
walk_stmt_fn  callback_stmt,
walk_tree_fn  callback_op,
struct walk_stmt_info wi 
)
   Walk the current statement in GSI (optionally using traversal state
   stored in WI).  If WI is NULL, no state is kept during traversal.
   The callback CALLBACK_STMT is called.  If CALLBACK_STMT indicates
   that it has handled all the operands of the statement, its return
   value is returned.  Otherwise, the return value from CALLBACK_STMT
   is discarded and its operands are scanned.

   If CALLBACK_STMT is NULL or it didn't handle the operands,
   CALLBACK_OP is called on each operand of the statement via
   walk_gimple_op.  If walk_gimple_op returns non-NULL for any
   operand, the remaining operands are not scanned.  In this case, the
   return value from CALLBACK_OP is returned.

   In any other case, NULL_TREE is returned.  
     Invoke the statement callback.  Return if the callback handled
     all of STMT operands by itself.  
         If CALLBACK_STMT did not handle operands, it should not have
         a value to return.  
         Re-read stmt in case the callback changed it.  
     If CALLBACK_OP is defined, invoke it on every operand of STMT.  
     If STMT can have statements inside (e.g. GIMPLE_BIND), walk them.  
         FALL THROUGH.  

Referenced by gimple_seq_add_seq().

bool walk_stmt_load_store_addr_ops ( gimple  stmt,
void *  data,
bool(*)(gimple, tree, void *)  visit_load,
bool(*)(gimple, tree, void *)  visit_store,
bool(*)(gimple, tree, void *)  visit_addr 
)
   For the statement STMT call the callbacks VISIT_LOAD, VISIT_STORE and
   VISIT_ADDR if non-NULL on loads, store and address-taken operands
   passing the STMT, the base of the operand and DATA to it.  The base
   will be either a decl, an indirect reference (including TARGET_MEM_REF)
   or the argument of an address expression.
   Returns the results of these callbacks or'ed.  
             COND_EXPR and VCOND_EXPR rhs1 argument is a comparison
             tree with two operands.  

References gimple_phi_arg_def(), and gimple_phi_num_args().

Referenced by mark_store().

bool walk_stmt_load_store_ops ( gimple  stmt,
void *  data,
bool(*)(gimple, tree, void *)  visit_load,
bool(*)(gimple, tree, void *)  visit_store 
)
   Like walk_stmt_load_store_addr_ops but with NULL visit_addr.  IPA-CP
   should make a faster clone for this case.  

Variable Documentation

gimple currently_expanding_gimple_stmt
   This variable holds the currently expanded gimple statement for purposes
   of comminucating the profile info to the builtin expanders.  
int gimple_alloc_counts[]
   Gimple stats.  

Referenced by gimple_alloc_stat().

int gimple_alloc_sizes[]

Referenced by gimple_alloc_stat().

const char* const gimple_code_name[]

Referenced by dump_gimple_fmt().

size_t const gimple_ops_offset_[]
   Offset in bytes to the location of the operand vector.
   Zero if there is no operand vector for this tuple structure.  
const unsigned char gimple_rhs_class_table[]
enum gimple_statement_structure_enum const gss_for_code_[]
   Map GIMPLE codes to GSS codes.