GCC Middle and Back End API Reference
gimple.c File Reference

Data Structures

struct  count_ptr_d

Functions

void gimple_set_stored_syms (gimple, bitmap, bitmap_obstack *)
void gimple_set_loaded_syms (gimple, bitmap, bitmap_obstack *)
static void gimple_set_code ()
static size_t gimple_size ()
gimple gimple_alloc_stat ()
static void gimple_set_subcode ()
static gimple gimple_build_with_ops_stat (enum gimple_code code, unsigned subcode, unsigned num_ops MEM_STAT_DECL)
gimple gimple_build_return ()
void gimple_call_reset_alias_info ()
static gimple gimple_build_call_1 ()
gimple gimple_build_call_vec ()
gimple gimple_build_call ()
gimple gimple_build_call_valist ()
static gimple gimple_build_call_internal_1 ()
gimple gimple_build_call_internal ()
gimple gimple_build_call_internal_vec ()
gimple gimple_build_call_from_tree ()
void extract_ops_from_tree_1 (tree expr, enum tree_code *subcode_p, tree *op1_p, tree *op2_p, tree *op3_p)
gimple gimple_build_assign_stat ()
gimple gimple_build_assign_with_ops (enum tree_code subcode, tree lhs, tree op1, tree op2, tree op3 MEM_STAT_DECL)
gimple gimple_build_assign_with_ops (enum tree_code subcode, tree lhs, tree op1, tree op2 MEM_STAT_DECL)
gimple gimplify_assign ()
gimple gimple_build_cond (enum tree_code pred_code, tree lhs, tree rhs, tree t_label, tree f_label)
void gimple_cond_get_ops_from_tree (tree cond, enum tree_code *code_p, tree *lhs_p, tree *rhs_p)
gimple gimple_build_cond_from_tree ()
void gimple_cond_set_condition_from_tree ()
gimple gimple_build_label ()
gimple gimple_build_goto ()
gimple gimple_build_nop ()
gimple gimple_build_bind ()
static gimple gimple_build_asm_1 (const char *string, unsigned ninputs, unsigned noutputs, unsigned nclobbers, unsigned nlabels)
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)
gimple gimple_build_catch ()
gimple gimple_build_eh_filter ()
gimple gimple_build_eh_must_not_throw ()
gimple gimple_build_eh_else ()
gimple_statement_trygimple_build_try (gimple_seq eval, gimple_seq cleanup, enum gimple_try_flags kind)
gimple gimple_build_wce ()
gimple gimple_build_resx ()
gimple gimple_build_switch_nlabels ()
gimple gimple_build_switch ()
gimple gimple_build_eh_dispatch ()
gimple gimple_build_debug_bind_stat ()
gimple gimple_build_debug_source_bind_stat (tree var, tree value, gimple stmt MEM_STAT_DECL)
gimple gimple_build_omp_critical ()
gimple gimple_build_omp_for (gimple_seq body, int kind, tree clauses, size_t collapse, gimple_seq pre_body)
gimple gimple_build_omp_parallel (gimple_seq body, tree clauses, tree child_fn, tree data_arg)
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)
gimple gimple_build_omp_section ()
gimple gimple_build_omp_master ()
gimple gimple_build_omp_continue ()
gimple gimple_build_omp_ordered ()
gimple gimple_build_omp_return ()
gimple gimple_build_omp_sections ()
gimple gimple_build_omp_sections_switch ()
gimple gimple_build_omp_single ()
gimple gimple_build_omp_atomic_load ()
gimple gimple_build_omp_atomic_store ()
gimple gimple_build_transaction ()
gimple gimple_build_predict ()
void gimple_check_failed (const_gimple gs, const char *file, int line, const char *function, enum gimple_code code, enum tree_code subcode)
void gimple_seq_add_stmt ()
void gimple_seq_add_seq ()
static bool empty_stmt_p ()
bool empty_body_p ()
gimple_seq gimple_seq_copy ()
gimple walk_gimple_seq_mod (gimple_seq *pseq, walk_stmt_fn callback_stmt, walk_tree_fn callback_op, struct walk_stmt_info *wi)
gimple walk_gimple_seq (gimple_seq seq, walk_stmt_fn callback_stmt, walk_tree_fn callback_op, struct walk_stmt_info *wi)
static tree walk_gimple_asm (gimple stmt, walk_tree_fn callback_op, struct walk_stmt_info *wi)
tree walk_gimple_op (gimple stmt, walk_tree_fn callback_op, struct walk_stmt_info *wi)
tree walk_gimple_stmt (gimple_stmt_iterator *gsi, walk_stmt_fn callback_stmt, walk_tree_fn callback_op, struct walk_stmt_info *wi)
void gimple_set_body ()
gimple_seq gimple_body ()
bool gimple_has_body_p ()
bool gimple_call_same_target_p ()
int gimple_call_flags ()
static tree gimple_call_fnspec ()
int gimple_call_arg_flags ()
int gimple_call_return_flags ()
bool gimple_assign_copy_p ()
bool gimple_assign_ssa_name_copy_p ()
bool gimple_assign_unary_nop_p ()
void gimple_set_bb ()
void gimple_assign_set_rhs_from_tree ()
void gimple_assign_set_rhs_with_ops_1 (gimple_stmt_iterator *gsi, enum tree_code code, tree op1, tree op2, tree op3)
tree gimple_get_lhs ()
void gimple_set_lhs ()
void gimple_replace_lhs ()
gimple gimple_copy ()
bool gimple_has_side_effects ()
bool gimple_could_trap_p_1 ()
bool gimple_could_trap_p ()
bool gimple_assign_rhs_could_trap_p ()
void dump_gimple_statistics ()
unsigned get_gimple_rhs_num_ops ()
bool is_gimple_lvalue ()
bool is_gimple_condexpr ()
bool is_gimple_addressable ()
bool is_gimple_constant ()
bool is_gimple_address ()
bool is_gimple_invariant_address ()
bool is_gimple_ip_invariant_address ()
bool is_gimple_min_invariant ()
bool is_gimple_ip_invariant ()
bool is_gimple_variable ()
bool is_gimple_id ()
bool is_gimple_reg ()
bool is_gimple_val ()
bool is_gimple_asm_val ()
bool is_gimple_min_lval ()
bool is_gimple_call_addr ()
bool is_gimple_mem_ref_addr ()
tree get_base_address ()
void recalculate_side_effects ()
tree canonicalize_cond_expr_cond ()
gimple gimple_call_copy_skip_args ()
bool gimple_compare_field_offset ()
static hashval_t iterative_hash_canonical_type ()
static hashval_t gimple_canonical_type_hash ()
static bool gimple_canonical_types_compatible_p ()
static int gimple_canonical_type_eq ()
tree gimple_register_canonical_type ()
void print_gimple_types_stats ()
void free_gimple_type_tables ()
static tree gimple_signed_or_unsigned_type ()
tree gimple_unsigned_type ()
tree gimple_signed_type ()
alias_set_type gimple_get_alias_set ()
static tree count_ptr_derefs ()
void count_uses_and_derefs (tree ptr, gimple stmt, unsigned *num_uses_p, unsigned *num_loads_p, unsigned *num_stores_p)
static tree get_base_loadstore ()
bool walk_stmt_load_store_addr_ops (gimple stmt, void *data, bool(*visit_load)(gimple, tree, void *), bool(*visit_store)(gimple, tree, void *), bool(*visit_addr)(gimple, tree, void *))
bool walk_stmt_load_store_ops (gimple stmt, void *data, bool(*visit_load)(gimple, tree, void *), bool(*visit_store)(gimple, tree, void *))
static bool gimple_ior_addresses_taken_1 (gimple stmt, tree addr, void *data)
bool gimple_ior_addresses_taken ()
const char * gimple_decl_printable_name ()
bool is_gimple_builtin_call ()
static bool validate_call ()
bool gimple_call_builtin_p ()
bool gimple_asm_clobbers_memory_p ()
tree create_gimple_tmp ()
static tree get_expr_type ()
gimple build_assign ()
gimple build_type_cast ()
static void gt_ggc_mx_fields_of_gimple_statement_base ()
void gt_ggc_mx ()
void gt_pch_nx ()

Variables

static htab_t gimple_canonical_types
static htab_t canonical_type_hash_cache
EXPORTED_CONST size_t gimple_ops_offset_ []
static const size_t gsstruct_code_size []
const char *const gimple_code_name []
EXPORTED_CONST enum
gimple_statement_structure_enum 
gss_for_code_ []
int gimple_alloc_counts [(int) gimple_alloc_kind_all]
int gimple_alloc_sizes [(int) gimple_alloc_kind_all]
static const char *const gimple_alloc_kind_names []
const unsigned char gimple_rhs_class_table []

Function Documentation

gimple build_assign ( )
Build a new gimple assignment.  The LHS of the assignment is a new
   temporary whose type matches the given expression.  MODE indicates
   whether the LHS should be an SSA or a normal temporary.  CODE is
   the expression code for the RHS.  OP1 is the first operand and VAL
   is an integer value to be used as the second operand.   
Build and return a new GIMPLE assignment.  The new assignment will
   have the opcode CODE and operands OP1 and OP2.  The type of the
   expression on the RHS is inferred to be the type of OP1.

   The LHS of the statement will be an SSA name or a GIMPLE temporary
   in normal form depending on the type of builder invoking this
   function.   

References build_int_cst(), create_gimple_tmp(), get_expr_type(), and gimple_build_assign_with_ops().

Referenced by build_check_stmt().

gimple build_type_cast ( )
Create and return a type cast assignment. This creates a NOP_EXPR
   that converts OP to TO_TYPE.   

References create_gimple_tmp(), and gimple_build_assign_with_ops().

Referenced by build_check_stmt().

tree canonicalize_cond_expr_cond ( )
Canonicalize a tree T for use in a COND_EXPR as conditional.  Returns
   a canonicalized tree that is valid for a COND_EXPR or NULL_TREE, if
   we failed to create one.   

References build_int_cst(), integer_onep(), integer_zerop(), is_gimple_condexpr(), and truth_value_p().

Referenced by combine_cond_expr_cond(), and ifcombine_ifandif().

static tree count_ptr_derefs ( )
static
Helper for count_uses_and_derefs.  Called by walk_tree to look for
   (ALIGN/MISALIGNED_)INDIRECT_REF nodes for the pointer passed in DATA.   

References walk_stmt_info::info, walk_stmt_info::is_lhs, count_ptr_d::num_loads, count_ptr_d::num_stores, and count_ptr_d::ptr.

Referenced by count_uses_and_derefs().

void count_uses_and_derefs ( tree  ptr,
gimple  stmt,
unsigned *  num_uses_p,
unsigned *  num_loads_p,
unsigned *  num_stores_p 
)
Count the number of direct and indirect uses for pointer PTR in
   statement STMT.  The number of direct uses is stored in
   *NUM_USES_P.  Indirect references are counted separately depending
   on whether they are store or load operations.  The counts are
   stored in *NUM_STORES_P and *NUM_LOADS_P.   

References count, count_ptr_derefs(), walk_stmt_info::info, is_gimple_assign(), is_gimple_call(), memset(), count_ptr_d::num_loads, count_ptr_d::num_stores, count_ptr_d::ptr, and walk_gimple_op().

Referenced by infer_value_range().

tree create_gimple_tmp ( )
Create and return an unnamed temporary.  MODE indicates whether
   this should be an SSA or NORMAL temporary.  TYPE is the type to use
   for the new temporary.   

References create_tmp_var(), M_SSA, and make_ssa_name().

Referenced by build_assign(), and build_type_cast().

void dump_gimple_statistics ( void  )
Print debugging information for gimple stmts generated.   

References gimple_alloc_counts, gimple_alloc_kind_all, and gimple_alloc_sizes.

Referenced by dump_memory_report().

bool empty_body_p ( )
Return true if BODY contains nothing but empty statements.   

References empty_stmt_p(), gimple_seq_empty_p(), gsi_end_p(), gsi_next(), gsi_stmt(), and is_gimple_debug().

Referenced by empty_stmt_p(), scan_omp_parallel(), and scan_omp_task().

static bool empty_stmt_p ( )
static
Helper function of empty_body_p.  Return true if STMT is an empty
   statement.   

References empty_body_p(), and gimple_bind_body().

Referenced by empty_body_p().

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.   

References get_gimple_rhs_class(), GIMPLE_BINARY_RHS, GIMPLE_SINGLE_RHS, GIMPLE_TERNARY_RHS, and GIMPLE_UNARY_RHS.

Referenced by defcodefor_name(), gimple_assign_set_rhs_from_tree(), and gimple_build_assign_stat().

void free_gimple_type_tables ( void  )
Free the gimple type hashtables used for LTO type merging.   
tree get_base_address ( )
Given a memory reference expression T, return its base address.
   The base address of a memory reference expression is the main
   object being referenced.  For instance, the base address for
   'array[i].fld[j]' is 'array'.  You can think of this as stripping
   away the offset part from a memory address.

   This function calls handled_component_p to strip away all the inner
   parts of the memory reference until it reaches the base object.   

References handled_component_p().

Referenced by asm_visit_addr(), can_escape(), can_sm_ref_p(), canonicalize_constructor_val(), check_array_ref(), check_op(), cond_if_else_store_replacement_1(), copy_ref_info(), declare_return_variable(), dest_safe_for_nrv_p(), detect_type_change_1(), determine_base_object(), discover_nonconstant_array_refs_r(), disqualify_base_of_expr(), dr_analyze_alias(), eliminate_local_variables_1(), eliminated_by_inlining_prob(), execute_update_addresses_taken(), extr_type_from_vtbl_ptr_store(), find_func_aliases(), gather_memory_references_ref(), get_memory_rtx(), get_references_in_stmt(), gimple_duplicate_bb(), gimple_ior_addresses_taken_1(), gimplify_init_constructor(), handle_lhs_call(), initialize_argument_information(), mark_address(), mark_address_taken(), mark_load(), mark_nonssa_use(), mark_store(), maybe_emit_free_warning(), mem_dies_at_call(), omp_notice_variable(), ref_always_accessed::operator()(), param_change_prob(), ptr_deref_may_alias_decl_p(), ptr_derefs_may_alias_p(), readonly_data_expr(), ref_may_alias_global_p(), ref_maybe_used_by_stmt_p(), remove_unused_locals(), self_inlining_addr_expr(), set_mem_attributes_minus_bitpos(), ssa_forward_propagate_and_combine(), test_nonssa_use(), tls_mem_loc_descriptor(), tree_nrv(), tree_single_nonzero_warnv_p(), va_list_counter_bump(), va_list_counter_struct_op(), visit_conflict(), visit_op(), visit_ref_for_mod_analysis(), vrp_stmt_computes_nonzero(), and warn_uninitialized_vars().

static tree get_base_loadstore ( )
static
From a tree operand OP return the base of a load or store operation
   or NULL_TREE if OP is not a load or a store.   

References handled_component_p().

Referenced by walk_stmt_load_store_addr_ops().

static tree get_expr_type ( )
static
Return the expression type to use based on the CODE and type of
   the given operand OP.  If the expression CODE is a comparison,
   the returned type is boolean_type_node.  Otherwise, it returns
   the type of OP.   

References tcc_comparison.

Referenced by build_assign().

unsigned get_gimple_rhs_num_ops ( )
Return the number of operands needed on the RHS of a GIMPLE
   assignment for an expression with tree code CODE.   

References get_gimple_rhs_class(), GIMPLE_BINARY_RHS, GIMPLE_SINGLE_RHS, GIMPLE_TERNARY_RHS, and GIMPLE_UNARY_RHS.

Referenced by fold_stmt_1(), gimple_assign_set_rhs_with_ops_1(), gimple_build_assign_with_ops(), and rewrite_use_nonlinear_expr().

gimple gimple_alloc_stat ( )
bool gimple_asm_clobbers_memory_p ( )
Return true if STMT clobbers memory.  STMT is required to be a
   GIMPLE_ASM.   

References gimple_asm_clobber_op(), and gimple_asm_nclobbers().

Referenced by check_stmt(), and get_asm_expr_operands().

bool gimple_assign_rhs_could_trap_p ( )
Return true if RHS of a GIMPLE_ASSIGN S can trap.   

References gimple_could_trap_p_1(), and is_gimple_assign().

Referenced by if_convertible_gimple_assign_stmt_p(), and no_side_effect_bb().

void gimple_assign_set_rhs_from_tree ( )
Modify the RHS of the assignment pointed-to by GSI using the
   operands in the expression tree EXPR.

   NOTE: The statement pointed-to by GSI may be reallocated if it
   did not have enough operand slots.

   This function is useful to convert an existing tree expression into
   the flat representation used for the RHS of a GIMPLE assignment.
   It will reallocate memory as needed to expand or shrink the number
   of operand slots needed to represent EXPR.

   NOTE: If you find yourself building a tree and then calling this
   function, you are most certainly doing it the slow way.  It is much
   better to build a new assignment or to use the function
   gimple_assign_set_rhs_with_ops, which does not require an
   expression tree to be built.   

References extract_ops_from_tree_1(), and gimple_assign_set_rhs_with_ops_1().

Referenced by ccp_fold_stmt(), combine_cond_exprs(), combine_conversions(), execute_update_addresses_taken(), expand_complex_comparison(), expand_complex_operations_1(), expand_vector_condition(), expand_vector_operations_1(), fold_predicate_in(), fold_stmt_1(), forward_propagate_addr_expr_1(), forward_propagate_comparison(), forward_propagate_into_comparison(), forward_propagate_into_cond(), gimple_divmod_fixed_value_transform(), gimple_mod_pow2_value_transform(), gimple_mod_subtract_transform(), ipcp_transform_function(), lower_vec_perm(), propagate_tree_value_into_stmt(), remove_name_from_operation(), replace_ref_with(), rewrite_use_nonlinear_expr(), simplify_bitfield_ref(), simplify_bitwise_binary(), simplify_not_neg_expr(), simplify_permutation(), simplify_vector_constructor(), sra_ipa_modify_assign(), sra_modify_assign(), and transform_stmt_to_copy().

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.   

References get_gimple_rhs_num_ops(), gimple_assign_lhs(), gimple_assign_set_lhs(), gimple_assign_set_rhs1(), gimple_assign_set_rhs2(), gimple_assign_set_rhs3(), gimple_init_singleton(), gimple_num_ops(), gimple_set_num_ops(), gimple_set_subcode(), gimple_size(), gsi_replace(), gsi_stmt(), and memcpy().

Referenced by convert_plusminus_to_widen(), gimple_assign_set_rhs_from_tree(), simplify_bitwise_binary(), and simplify_vector_constructor().

bool gimple_assign_ssa_name_copy_p ( )
bool gimple_assign_unary_nop_p ( )
Return true if GS is an assignment with a unary RHS, but the
   operator has no effect on the assigned value.  The logic is adapted
   from STRIP_NOPS.  This predicate is intended to be used in tuplifying
   instances in which STRIP_NOPS was previously applied to the RHS of
   an assignment.

   NOTE: In the use cases that led to the creation of this function
   and of gimple_assign_single_p, it is typical to test for either
   condition and to proceed in the same manner.  In each case, the
   assigned value is represented by the single RHS operand of the
   assignment.  I suspect there may be cases where gimple_assign_copy_p,
   gimple_assign_single_p, or equivalent logic is used where a similar
   treatment of unary NOPs is appropriate.   

References gimple_assign_lhs(), gimple_assign_rhs1(), gimple_assign_rhs_code(), and is_gimple_assign().

Referenced by check_for_plus_in_loops_1(), collect_object_sizes_for(), and get_maxval_strlen().

gimple_seq gimple_body ( )
static gimple gimple_build_asm_1 ( const char *  string,
unsigned  ninputs,
unsigned  noutputs,
unsigned  nclobbers,
unsigned  nlabels 
)
inlinestatic
Helper function to set the simple fields of a asm stmt.

   STRING is a pointer to a string that is the asm blocks assembly code.
   NINPUT is the number of register inputs.
   NOUTPUT is the number of register outputs.
   NCLOBBERS is the number of clobbered registers.

References gimple_alloc_sizes, gimple_statement_asm::nc, gimple_statement_asm::ni, gimple_statement_asm::nl, gimple_statement_asm::no, gimple_statement_asm::string, and strlen().

Referenced by gimple_build_asm_vec().

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_asm_set_clobber_op(), gimple_asm_set_input_op(), gimple_asm_set_label_op(), gimple_asm_set_output_op(), gimple_build_asm_1(), and vec_safe_length().

Referenced by gimplify_asm_expr().

gimple gimple_build_assign_stat ( )
Build a GIMPLE_ASSIGN statement.

   LHS of the assignment.
   RHS of the assignment which can be unary or binary.   

References extract_ops_from_tree_1(), and gimple_build_assign_with_ops().

gimple gimple_build_assign_with_ops ( enum tree_code  subcode,
tree  lhs,
tree  op1,
tree  op2,
tree op3  MEM_STAT_DECL 
)
Build a GIMPLE_ASSIGN statement with sub-code SUBCODE and operands
   OP1 and OP2.  If OP2 is NULL then SUBCODE must be of class
   GIMPLE_UNARY_RHS or GIMPLE_SINGLE_RHS.   

References get_gimple_rhs_num_ops(), gimple_assign_set_lhs(), gimple_assign_set_rhs1(), gimple_assign_set_rhs2(), gimple_assign_set_rhs3(), and gimple_build_with_ops_stat().

Referenced by abs_replacement(), adjust_bool_pattern(), adjust_bool_pattern_cast(), adjust_return_value_with_ops(), attempt_builtin_powi(), build_and_add_sum(), build_and_insert_binop(), build_and_insert_cast(), build_assign(), build_check_stmt(), build_type_cast(), bump_vector_ptr(), conditional_replacement(), convert_mult_to_fma(), create_add_on_incoming_edge(), create_iv(), execute_cse_sincos(), execute_optimize_bswap(), expand_omp_for_static_nochunk(), expand_transaction(), expand_vector_divmod(), generate_memset_builtin(), get_initial_def_for_induction(), get_string_length(), gimple_build_assign_stat(), gimple_build_assign_with_ops(), gimple_divmod_fixed_value(), gimple_gen_edge_profiler(), gimple_mod_pow2(), gimple_mod_subtract(), insert_initializers(), insert_reciprocals(), instrument_builtin_call(), instrument_mem_region_access(), instrument_strlen_call(), introduce_cast_before_cand(), lower_rec_input_clauses(), minmax_replacement(), move_computations_stmt(), permute_vec_elements(), powi_as_mults(), powi_as_mults_1(), reassociate_bb(), reassociate_to_the_same_stmt(), replace_one_candidate(), rewrite_reciprocal(), simplify_bitwise_binary(), simplify_float_conversion_using_ranges(), simplify_rotate(), simplify_truth_ops_using_ranges(), split_function(), update_accumulator_with_ops(), vect_create_cond_for_align_checks(), vect_create_epilog_for_reduction(), vect_create_mask_and_perm(), vect_create_vectorized_demotion_stmts(), vect_gen_widened_results_half(), vect_get_constant_vectors(), vect_handle_widen_op_by_const(), vect_init_vector(), vect_is_simple_reduction_1(), vect_operation_fits_smaller_type(), vect_permute_load_chain(), vect_permute_store_chain(), vect_recog_bool_pattern(), vect_recog_divmod_pattern(), vect_recog_dot_prod_pattern(), vect_recog_mixed_size_cond_pattern(), vect_recog_over_widening_pattern(), vect_recog_pow_pattern(), vect_recog_rotate_pattern(), vect_recog_vector_vector_shift_pattern(), vect_recog_widen_mult_pattern(), vect_recog_widen_shift_pattern(), vect_recog_widen_sum_pattern(), vect_setup_realignment(), vectorizable_conversion(), vectorizable_load(), vectorizable_operation(), and vectorizable_shift().

gimple gimple_build_assign_with_ops ( enum tree_code  subcode,
tree  lhs,
tree  op1,
tree op2  MEM_STAT_DECL 
)
gimple gimple_build_call ( )
Build a GIMPLE_CALL statement to function FN.  NARGS is the number of
   arguments.  The ... are the arguments.   

References gimple_build_call_1(), gimple_call_set_arg(), and is_gimple_call_addr().

Referenced by attempt_builtin_powi(), build_and_insert_call(), build_check_stmt(), build_stack_save_restore(), build_tm_load(), build_tm_store(), convert_nl_goto_reference(), convert_tramp_reference_op(), emit_mfence_after_loop(), execute_cse_sincos_1(), execute_fixup_cfg(), execute_optimize_bswap(), expand_assign_tm(), expand_complex_libcall(), expand_omp_for_generic(), expand_omp_sections(), expand_transaction(), finalize_nesting_tree_1(), gen_emutls_addr(), generate_memcpy_builtin(), generate_memset_builtin(), get_string_length(), gimple_gen_average_profiler(), gimple_gen_ic_func_profiler(), gimple_gen_interval_profiler(), gimple_gen_ior_profiler(), gimple_gen_one_value_profiler(), gimple_gen_pow2_profiler(), gimplify_function_tree(), gimplify_modify_expr_to_memcpy(), gimplify_modify_expr_to_memset(), instrument_expr(), instrument_func_entry(), instrument_func_exit(), ipa_tm_insert_gettmclone_call(), ipa_tm_insert_irr_call(), issue_prefetch_ref(), lower_builtin_setjmp(), lower_eh_dispatch(), lower_function_body(), lower_omp_ordered(), lower_omp_single_simple(), lower_rec_input_clauses(), lower_reduction_clauses(), lower_resx(), lower_transaction(), maybe_instrument_call(), mf_build_check_statement_for(), mx_register_decls(), remove_exits_and_undefined_stmts(), tm_log_emit_stmt(), unloop_loops(), vect_gen_widened_results_half(), vect_recog_pow_pattern(), vect_setup_realignment(), vectorizable_conversion(), vectorizable_load(), and verify_bb_vtables().

static gimple gimple_build_call_1 ( )
inlinestatic
Helper for gimple_build_call, gimple_build_call_valist,
   gimple_build_call_vec and gimple_build_call_from_tree.  Build the basic
   components of a GIMPLE_CALL statement to function FN with NARGS
   arguments.   

References gimple_call_reset_alias_info(), gimple_call_set_fntype(), and gimple_set_op().

Referenced by gimple_build_call(), gimple_build_call_from_tree(), gimple_build_call_valist(), and gimple_build_call_vec().

gimple gimple_build_call_internal ( )
Build a GIMPLE_CALL statement to internal function FN.  NARGS is
   the number of arguments.  The ... are the arguments.   

References gimple_build_call_internal_1(), and gimple_call_set_arg().

Referenced by lower_lastprivate_clauses(), lower_rec_input_clauses(), vectorizable_load(), and vectorizable_store().

static gimple gimple_build_call_internal_1 ( )
inlinestatic
Helper for gimple_build_call_internal and gimple_build_call_internal_vec.
   Build the basic components of a GIMPLE_CALL statement to internal
   function FN with NARGS arguments.   

References GF_CALL_INTERNAL, gimple_call_reset_alias_info(), gimple_call_set_internal_fn(), and gimple_statement_base::subcode.

Referenced by gimple_build_call_internal(), and gimple_build_call_internal_vec().

gimple gimple_build_call_internal_vec ( )
Build a GIMPLE_CALL statement to internal function FN with the arguments
   specified in vector ARGS.   

References gimple_build_call_internal_1(), and gimple_call_set_arg().

Referenced by gimple_call_copy_skip_args().

gimple gimple_build_call_valist ( )
Build a GIMPLE_CALL statement to function FN.  NARGS is the number of
   arguments.  AP contains the arguments.   

References gimple_build_call_1(), gimple_call_set_arg(), and is_gimple_call_addr().

Referenced by update_gimple_call().

gimple gimple_build_call_vec ( )
Build a GIMPLE_CALL statement to function FN with the arguments
   specified in vector ARGS.   

References gimple_build_call_1(), and gimple_call_set_arg().

Referenced by copy_bb(), expand_thunk(), gimple_call_copy_skip_args(), ipa_modify_call_arguments(), split_function(), update_call_from_tree(), and vectorizable_call().

gimple gimple_build_catch ( )
Build a GIMPLE_CATCH statement.

  TYPES are the catch types.
  HANDLER is the exception handler.   

References gimple_catch_set_handler(), and gimple_catch_set_types().

Referenced by gimplify_expr(), and remap_gimple_stmt().

gimple gimple_build_cond_from_tree ( )
Build a GIMPLE_COND statement from the conditional expression tree
   COND.  T_LABEL and F_LABEL are as in gimple_build_cond.   

References gimple_build_cond(), and gimple_cond_get_ops_from_tree().

Referenced by create_empty_if_region_on_edge(), expand_complex_div_wide(), gen_one_condition(), gimple_lv_add_condition_to_bb(), hoist_edge_and_branch_if_true(), set_ifsese_condition(), set_prologue_iterations(), and slpeel_add_loop_guard().

gimple gimple_build_debug_bind_stat ( )
Build a new GIMPLE_DEBUG_BIND statement.

   VAR is bound to VALUE; block and location are taken from STMT.   

References gimple_build_with_ops_stat(), GIMPLE_DEBUG_BIND, gimple_debug_bind_set_value(), gimple_debug_bind_set_var(), gimple_location(), and gimple_set_location().

gimple gimple_build_debug_source_bind_stat ( tree  var,
tree  value,
gimple stmt  MEM_STAT_DECL 
)
Build a new GIMPLE_DEBUG_SOURCE_BIND statement.

   VAR is bound to VALUE; block and location are taken from STMT.   

References gimple_build_with_ops_stat(), GIMPLE_DEBUG_SOURCE_BIND, gimple_debug_source_bind_set_value(), gimple_debug_source_bind_set_var(), gimple_location(), and gimple_set_location().

gimple gimple_build_eh_dispatch ( )
Build a GIMPLE_EH_DISPATCH statement.   

References gimple_statement_eh_ctrl::region.

Referenced by emit_eh_dispatch().

gimple gimple_build_eh_else ( )
Build a GIMPLE_EH_ELSE statement.   

References gimple_eh_else_set_e_body(), and gimple_eh_else_set_n_body().

Referenced by lower_transaction().

gimple gimple_build_eh_filter ( )
Build a GIMPLE_EH_FILTER statement.

   TYPES are the filter's types.
   FAILURE is the filter's failure action.   

References gimple_eh_filter_set_failure(), and gimple_eh_filter_set_types().

Referenced by gimplify_expr(), and remap_gimple_stmt().

gimple gimple_build_eh_must_not_throw ( )
Build a GIMPLE_EH_MUST_NOT_THROW statement.   

References flags_from_decl_or_type(), and gimple_eh_must_not_throw_set_fndecl().

Referenced by honor_protect_cleanup_actions(), and maybe_catch_exception().

gimple gimple_build_omp_atomic_load ( )
Build a GIMPLE_OMP_ATOMIC_LOAD statement.   

References gimple_omp_atomic_load_set_lhs(), and gimple_omp_atomic_load_set_rhs().

Referenced by create_call_for_reduction_1(), and gimplify_omp_atomic().

gimple gimple_build_omp_atomic_store ( )
Build a GIMPLE_OMP_ATOMIC_STORE statement.

   VAL is the value we are storing.   

References gimple_omp_atomic_store_set_val().

Referenced by create_call_for_reduction_1(), and gimplify_omp_atomic().

gimple gimple_build_omp_continue ( )
Build a GIMPLE_OMP_CONTINUE statement.

   CONTROL_DEF is the definition of the control variable.
   CONTROL_USE is the use of the control variable.   

References gimple_omp_continue_set_control_def(), and gimple_omp_continue_set_control_use().

Referenced by create_parallel_loop(), lower_omp_for(), and lower_omp_sections().

gimple gimple_build_omp_critical ( )
Build a GIMPLE_OMP_CRITICAL statement.

   BODY is the sequence of statements for which only one thread can execute.
   NAME is optional identifier for this critical block.   

References gimple_omp_critical_set_name(), and gimple_omp_set_body().

Referenced by gimplify_expr(), and remap_gimple_stmt().

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.   

References gimple_statement_omp_for::collapse, ggc_internal_cleared_vec_alloc_stat(), gimple_omp_for_set_clauses(), gimple_omp_for_set_kind(), gimple_omp_for_set_pre_body(), gimple_omp_set_body(), and gimple_statement_omp_for::iter.

Referenced by create_parallel_loop(), gimplify_omp_for(), and remap_gimple_stmt().

gimple gimple_build_omp_master ( )
Build a GIMPLE_OMP_MASTER statement.

   BODY is the sequence of statements to be executed by just the master.   

References gimple_omp_set_body().

Referenced by gimplify_expr(), and remap_gimple_stmt().

gimple gimple_build_omp_ordered ( )
Build a GIMPLE_OMP_ORDERED statement.

   BODY is the sequence of statements inside a loop that will executed in
   sequence.   

References gimple_omp_set_body().

Referenced by gimplify_expr(), and remap_gimple_stmt().

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_parallel_set_child_fn(), gimple_omp_parallel_set_clauses(), gimple_omp_parallel_set_data_arg(), and gimple_omp_set_body().

Referenced by create_parallel_loop(), gimplify_omp_parallel(), and remap_gimple_stmt().

gimple gimple_build_omp_return ( )
Build a GIMPLE_OMP_RETURN statement.
   WAIT_P is true if this is a non-waiting return.   

References gimple_omp_return_set_nowait().

Referenced by create_parallel_loop(), lower_omp_critical(), lower_omp_for(), lower_omp_master(), lower_omp_ordered(), lower_omp_sections(), lower_omp_single(), and lower_omp_taskreg().

gimple gimple_build_omp_section ( )
Build a GIMPLE_OMP_SECTION statement for a sections statement.

   BODY is the sequence of statements in the section.   

References gimple_omp_set_body().

Referenced by gimplify_expr(), and remap_gimple_stmt().

gimple gimple_build_omp_sections ( )
Build a GIMPLE_OMP_SECTIONS statement.

   BODY is a sequence of section statements.
   CLAUSES are any of the OMP sections contsruct's clauses: private,
   firstprivate, lastprivate, reduction, and nowait.   

References gimple_omp_sections_set_clauses(), and gimple_omp_set_body().

Referenced by gimplify_omp_workshare(), and remap_gimple_stmt().

gimple gimple_build_omp_sections_switch ( void  )
Build a GIMPLE_OMP_SECTIONS_SWITCH.   

Referenced by lower_omp_sections().

gimple gimple_build_omp_single ( )
Build a GIMPLE_OMP_SINGLE statement.

   BODY is the sequence of statements that will be executed once.
   CLAUSES are any of the OMP single construct's clauses: private, firstprivate,
   copyprivate, nowait.   

References gimple_omp_set_body(), and gimple_omp_single_set_clauses().

Referenced by gimplify_omp_workshare(), and remap_gimple_stmt().

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.   

References gimple_omp_set_body(), gimple_omp_task_set_arg_align(), gimple_omp_task_set_arg_size(), gimple_omp_task_set_child_fn(), gimple_omp_task_set_clauses(), gimple_omp_task_set_copy_fn(), and gimple_omp_task_set_data_arg().

Referenced by gimplify_omp_task(), and remap_gimple_stmt().

gimple gimple_build_predict ( )
Build a GIMPLE_PREDICT statement.  PREDICT is one of the predictors from
   predict.def, OUTCOME is NOT_TAKEN or TAKEN.   

References END_PREDICTORS, GF_PREDICT_TAKEN, gimple_predict_set_outcome(), and gimple_predict_set_predictor().

Referenced by expand_call_inline(), and gimplify_expr().

gimple gimple_build_resx ( )
Build a GIMPLE_RESX statement.   

References gimple_statement_eh_ctrl::region.

Referenced by emit_resx().

gimple gimple_build_return ( )
Build a GIMPLE_RETURN statement returning RETVAL.   

References gimple_return_set_retval().

Referenced by expand_omp_taskreg(), expand_thunk(), gimplify_return_expr(), lower_function_body(), and split_function().

gimple gimple_build_switch ( )
Build a GIMPLE_SWITCH statement.

   INDEX is the switch's index.
   DEFAULT_LABEL is the default label
   ARGS is a vector of labels excluding the default.   

References gimple_build_switch_nlabels(), and gimple_switch_set_label().

Referenced by expand_omp_sections(), gimplify_switch_expr(), lower_eh_dispatch(), and lower_try_finally_switch().

gimple gimple_build_switch_nlabels ( )
The helper for constructing a gimple switch statement.
   INDEX is the switch's index.
   NLABELS is the number of labels in the switch excluding the default.
   DEFAULT_LABEL is the default label for the switch statement.   

References gimple_switch_set_default_label(), and gimple_switch_set_index().

Referenced by gimple_build_switch().

gimple gimple_build_transaction ( )
Build a GIMPLE_TRANSACTION statement.   

References gimple_transaction_set_body(), and gimple_transaction_set_label().

Referenced by gimplify_transaction(), and remap_gimple_stmt().

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_set_subcode(), GIMPLE_TRY_CATCH, GIMPLE_TRY_FINALLY, gimple_try_set_cleanup(), and gimple_try_set_eval().

Referenced by gimplify_bind_expr(), gimplify_cleanup_point_expr(), gimplify_expr(), gimplify_function_tree(), honor_protect_cleanup_actions(), lower_transaction(), maybe_catch_exception(), mx_register_decls(), and remap_gimple_stmt().

gimple gimple_build_wce ( )
Construct a GIMPLE_WITH_CLEANUP_EXPR statement.

   CLEANUP is the cleanup expression.   

References gimple_wce_set_cleanup().

Referenced by gimple_push_cleanup(), and remap_gimple_stmt().

static gimple gimple_build_with_ops_stat ( enum gimple_code  code,
unsigned  subcode,
unsigned num_ops  MEM_STAT_DECL 
)
static
int gimple_call_arg_flags ( )
Detects argument flags for argument number ARG on call STMT.   

References gimple_call_fnspec().

Referenced by handle_rhs_call(), and ref_maybe_used_by_call_p_1().

static tree gimple_call_fnspec ( )
static
Return the "fn spec" string for call STMT.   

References gimple_call_fntype(), lookup_attribute(), and type().

Referenced by gimple_call_arg_flags(), and gimple_call_return_flags().

void gimple_call_reset_alias_info ( )
int gimple_call_return_flags ( )
Detects return flags for the call STMT.   

References gimple_call_flags(), and gimple_call_fnspec().

Referenced by handle_lhs_call(), and visit_use().

bool gimple_call_same_target_p ( )
Return true if calls C1 and C2 are known to go to the same function.   

References gimple_call_fn(), gimple_call_fndecl(), gimple_call_internal_fn(), and gimple_call_internal_p().

Referenced by same_succ_def::equal(), gimple_equal_p(), hashable_expr_equal_p(), and same_handler_p().

static int gimple_canonical_type_eq ( )
static
Returns nonzero if P1 and P2 are equal.   

References gimple_canonical_types_compatible_p().

Referenced by gimple_register_canonical_type().

static hashval_t gimple_canonical_type_hash ( )
static
static bool gimple_canonical_types_compatible_p ( )
static
The TYPE_CANONICAL merging machinery.  It should closely resemble
   the middle-end types_compatible_p function.  It needs to avoid
   claiming types are different for types that should be treated
   the same with respect to TBAA.  Canonical types are also used
   for IL consistency checks via the useless_type_conversion_p
   predicate which does not handle all type kinds itself but falls
   back to pointer-comparison of TYPE_CANONICAL for aggregates
   for example.   
Return true iff T1 and T2 are structurally identical for what
   TBAA is concerned.   

References comp_type_attributes(), f1, f2, gimple_compare_field_offset(), i1, i2, and operand_equal_p().

Referenced by gimple_canonical_type_eq().

void gimple_check_failed ( const_gimple  gs,
const char *  file,
int  line,
const char *  function,
enum gimple_code  code,
enum tree_code  subcode 
)
Complain of a gimple type mismatch and die.   

References internal_error(), gimple_statement_base::subcode, tree_code_name, and trim_filename().

bool gimple_compare_field_offset ( )
Return true if the field decls F1 and F2 are at the same offset.

   This is intended to be used on GIMPLE types only.   

References host_integerp(), HOST_WIDE_INT, operand_equal_p(), and tree_int_cst_equal().

Referenced by gimple_canonical_types_compatible_p(), and input_gimple_stmt().

void gimple_cond_get_ops_from_tree ( tree  cond,
enum tree_code code_p,
tree lhs_p,
tree rhs_p 
)
void gimple_cond_set_condition_from_tree ( )
Set code, lhs, and rhs of a GIMPLE_COND from a suitable
   boolean expression tree COND.   

References gimple_cond_get_ops_from_tree(), and gimple_cond_set_condition().

Referenced by fold_gimple_cond(), forward_propagate_into_gimple_cond(), ifcombine_ifandif(), and tree_unswitch_single_loop().

gimple gimple_copy ( )
Return a deep copy of statement STMT.  All the operands from STMT
   are reallocated and copied using unshare_expr.  The DEF, USE, VDEF
   and VUSE operand arrays are set to empty in the new copy.  The new
   copy isn't part of any sequence.   

References copy(), ggc_internal_vec_alloc_stat(), gimple_bind_block(), gimple_bind_body(), gimple_bind_set_block(), gimple_bind_set_body(), gimple_bind_set_vars(), gimple_bind_vars(), gimple_catch_handler(), gimple_catch_set_handler(), gimple_catch_set_types(), gimple_catch_types(), gimple_eh_else_e_body(), gimple_eh_else_n_body(), gimple_eh_else_set_e_body(), gimple_eh_else_set_n_body(), gimple_eh_filter_failure(), gimple_eh_filter_set_failure(), gimple_eh_filter_set_types(), gimple_eh_filter_types(), gimple_has_mem_ops(), gimple_has_ops(), gimple_has_substatements(), gimple_init_singleton(), gimple_num_ops(), gimple_omp_body(), gimple_omp_critical_name(), gimple_omp_critical_set_name(), gimple_omp_for_clauses(), gimple_omp_for_collapse(), gimple_omp_for_cond(), gimple_omp_for_final(), gimple_omp_for_incr(), gimple_omp_for_index(), gimple_omp_for_initial(), gimple_omp_for_pre_body(), gimple_omp_for_set_clauses(), gimple_omp_for_set_cond(), gimple_omp_for_set_final(), gimple_omp_for_set_incr(), gimple_omp_for_set_index(), gimple_omp_for_set_initial(), gimple_omp_for_set_pre_body(), gimple_omp_parallel_child_fn(), gimple_omp_parallel_clauses(), gimple_omp_parallel_data_arg(), gimple_omp_parallel_set_child_fn(), gimple_omp_parallel_set_clauses(), gimple_omp_parallel_set_data_arg(), gimple_omp_sections_clauses(), gimple_omp_sections_control(), gimple_omp_sections_set_clauses(), gimple_omp_sections_set_control(), gimple_omp_set_body(), gimple_omp_task_arg_align(), gimple_omp_task_arg_size(), gimple_omp_task_child_fn(), gimple_omp_task_clauses(), gimple_omp_task_copy_fn(), gimple_omp_task_data_arg(), gimple_omp_task_set_arg_align(), gimple_omp_task_set_arg_size(), gimple_omp_task_set_child_fn(), gimple_omp_task_set_clauses(), gimple_omp_task_set_copy_fn(), gimple_omp_task_set_data_arg(), gimple_op(), gimple_seq_copy(), gimple_set_modified(), gimple_set_op(), gimple_set_use_ops(), gimple_set_vdef(), gimple_set_vuse(), gimple_size(), gimple_transaction_body(), gimple_transaction_set_body(), gimple_try_cleanup(), gimple_try_eval(), gimple_try_set_cleanup(), gimple_try_set_eval(), gimple_vdef(), gimple_vuse(), gimple_wce_cleanup(), gimple_wce_set_cleanup(), gimple_statement_omp_for::iter, memcpy(), and unshare_expr().

Referenced by gimple_duplicate_bb(), gimple_duplicate_sese_tail(), gimple_ic(), gimple_seq_copy(), gimple_stringop_fixed_value(), graphite_copy_stmts_from_block(), propagate_threaded_block_debug_into(), and remap_gimple_stmt().

bool gimple_could_trap_p ( )
Return true if statement S can trap.   

References gimple_could_trap_p_1().

Referenced by ifcvt_could_trap_p(), and movement_possibility().

bool gimple_could_trap_p_1 ( )
Helper for gimple_could_trap_p and gimple_assign_rhs_could_trap_p.
   Return true if S can trap.  When INCLUDE_MEM is true, check whether
   the memory operations could trap.  When INCLUDE_STORES is true and
   S is a GIMPLE_ASSIGN, the LHS of the assignment is also checked.   

References get_gimple_rhs_class(), gimple_asm_volatile_p(), gimple_assign_rhs2(), gimple_assign_rhs_code(), GIMPLE_BINARY_RHS, gimple_call_fndecl(), gimple_expr_type(), gimple_num_ops(), gimple_op(), is_gimple_assign(), operation_could_trap_p(), and tree_could_trap_p().

Referenced by gimple_assign_rhs_could_trap_p(), gimple_could_trap_p(), and ifcvt_could_trap_p().

const char* gimple_decl_printable_name ( )
Return a printable name for symbol DECL.   

Referenced by free_lang_data().

alias_set_type gimple_get_alias_set ( )
Return the typed-based alias set for T, which may be an expression
   or a type.  Return -1 if we don't do anything special.   

References get_alias_set(), and gimple_signed_type().

tree gimple_get_lhs ( )
Return the LHS of a statement that performs an assignment,
   either a GIMPLE_ASSIGN or a GIMPLE_CALL.  Returns NULL_TREE
   for a call to a function that returns no value, or for a
   statement other than an assignment or a call.   

References gimple_assign_lhs(), and gimple_call_lhs().

Referenced by attempt_builtin_powi(), complex_visit_stmt(), cond_if_else_store_replacement(), convert_mult_to_fma(), create_expression_by_pieces(), dse_optimize_stmt(), eliminate_bb(), eliminate_redundant_comparison(), eliminate_redundant_computations(), estimate_function_body_sizes(), evaluate_stmt(), execute_cse_sincos(), execute_update_addresses_taken(), expand_complex_operations_1(), find_func_clobbers(), fold_stmt_1(), gimple_duplicate_bb(), gimple_equal_p(), gimple_regimplify_operands(), gimple_replace_lhs(), gsi_replace(), input_gimple_stmt(), insert_into_preds_of_block(), lookup_avail_expr(), lower_eh_constructs_2(), make_blocks(), mark_aliased_reaching_defs_necessary_1(), movement_possibility(), ref_always_accessed::operator()(), pp_gimple_stmt_1(), ptr_parm_has_direct_uses(), reassociate_bb(), record_temporary_equivalences_from_stmts_at_dest(), statement_sink_location(), stmt_interesting_for_vrp(), stmt_invariant_in_loop_p(), stmt_kills_ref_p_1(), stmt_makes_single_store(), substitute_and_fold(), tree_nrv(), undistribute_ops_list(), update_complex_components(), vect_analyze_slp_cost_1(), vect_analyze_stmt(), vect_build_slp_tree_1(), vect_determine_vectorization_factor(), vect_get_slp_defs(), vect_get_slp_vect_defs(), vect_get_vec_def_for_operand(), vect_get_vec_def_for_stmt_copy(), vect_schedule_slp_instance(), visit_assignment(), and vrp_visit_assignment_or_call().

bool gimple_ior_addresses_taken ( )
Set the bit for the uid of all decls that have their address taken
   in STMT in the ADDRESSES_TAKEN bitmap.  Returns true if there
   were any in this stmt.   

References gimple_ior_addresses_taken_1(), and walk_stmt_load_store_addr_ops().

Referenced by execute_update_addresses_taken().

static bool gimple_ior_addresses_taken_1 ( gimple  stmt,
tree  addr,
void *  data 
)
static
Helper for gimple_ior_addresses_taken_1.   

References bitmap_set_bit(), and get_base_address().

Referenced by gimple_ior_addresses_taken().

tree gimple_register_canonical_type ( )
Register type T in the global type table gimple_types.
   If another type T', compatible with T, already existed in
   gimple_types then return T', otherwise return T.  This is used by
   LTO to merge identical types read from different TUs.

   ???  This merging does not exactly match how the tree.c middle-end
   functions will assign TYPE_CANONICAL when new types are created
   during optimization (which at least happens for pointer and array
   types).   

References gimple_canonical_type_eq(), and gimple_canonical_type_hash().

void gimple_replace_lhs ( )
Replace the LHS of STMT, an assignment, either a GIMPLE_ASSIGN or a
   GIMPLE_CALL, with NLHS, in preparation for modifying the RHS to an
   expression with a different value.

   This will update any annotations (say debug bind stmts) referring
   to the original LHS, so that they use the RHS instead.  This is
   done even if NLHS and LHS are the same, for it is understood that
   the RHS will be modified afterwards, and NLHS will not be assigned
   an equivalent value.

   Adjusting any non-annotation uses of the LHS, if needed, is a
   responsibility of the caller.

   The effect of this call should be pretty much the same as that of
   inserting a copy of STMT before STMT, and then removing the
   original stmt, at which time gsi_remove() would have update
   annotations, but using this function saves all the inserting,
   copying and removing.   

References gimple_get_lhs(), gimple_set_lhs(), and insert_debug_temp_for_var_def().

Referenced by execute_cse_reciprocals(), and repropagate_negates().

static void gimple_set_code ( )
inlinestatic
Gimple tuple constructors.
   Note: Any constructor taking a ``gimple_seq'' as a parameter, can
   be passed a NULL to start with an empty sequence.   
Set the code for statement G to CODE.   

Referenced by gimple_alloc_stat().

void gimple_set_lhs ( )
Set the LHS of a statement that performs an assignment,
   either a GIMPLE_ASSIGN or a GIMPLE_CALL.   

References gimple_assign_set_lhs(), and gimple_call_set_lhs().

Referenced by build_and_insert_call(), fold_stmt_1(), gimple_regimplify_operands(), gimple_replace_lhs(), lower_eh_constructs_2(), make_blocks(), reassociate_bb(), and vect_create_mask_and_perm().

void gimple_set_loaded_syms ( gimple  ,
bitmap  ,
bitmap_obstack  
)
void gimple_set_stored_syms ( gimple  ,
bitmap  ,
bitmap_obstack  
)
Private API manipulation functions shared only with some
   other files.   
static void gimple_set_subcode ( )
inlinestatic
Set SUBCODE to be the code of the expression computed by statement G.   

References gimple_statement_base::subcode.

Referenced by gimple_assign_set_rhs_with_ops_1(), gimple_build_try(), and gimple_build_with_ops_stat().

static tree gimple_signed_or_unsigned_type ( )
static
Return a type the same as TYPE except unsigned or
   signed according to UNSIGNEDP.   

References build_nonstandard_integer_type(), and type().

Referenced by gimple_signed_type(), and gimple_unsigned_type().

tree gimple_signed_type ( )
Return a signed type the same as TYPE in other respects.   

References gimple_signed_or_unsigned_type().

Referenced by gimple_get_alias_set().

static size_t gimple_size ( )
inlinestatic
Return the number of bytes needed to hold a GIMPLE statement with
   code CODE.   

References gss_for_code().

Referenced by gimple_alloc_stat(), gimple_assign_set_rhs_with_ops_1(), and gimple_copy().

tree gimple_unsigned_type ( )
Return an unsigned type the same as TYPE in other respects.   

References gimple_signed_or_unsigned_type().

gimple gimplify_assign ( )
Build a new GIMPLE_ASSIGN tuple and append it to the end of *SEQ_P.

   DST/SRC are the destination and source respectively.  You can pass
   ungimplified trees in DST or SRC, in which case they will be
   converted to a gimple operand if necessary.

   This function returns the newly created GIMPLE_ASSIGN tuple.   

References ggc_free(), gimple_seq_last_stmt(), and gimplify_and_add().

Referenced by gimplify_expr(), gimplify_omp_for(), gimplify_parameters(), gimplify_self_mod_expr(), lower_copyprivate_clauses(), lower_omp_for_lastprivate(), lower_omp_single_copy(), lower_rec_input_clauses(), lower_reduction_clauses(), lower_send_clauses(), and lower_send_shared_vars().

void gt_ggc_mx ( )

References gimple_statement_omp_task::arg_align, gimple_statement_omp_task::arg_size, gimple_statement_phi::args, gimple_statement_base::bb, gimple_statement_bind::block, gimple_statement_omp::body, gimple_statement_bind::body, gimple_statement_transaction::body, gimple_statement_call::call_clobbered, gimple_statement_call::call_used, gimple_statement_omp_parallel::child_fn, gimple_statement_omp_for::clauses, gimple_statement_omp_parallel::clauses, gimple_statement_omp_sections::clauses, gimple_statement_omp_single::clauses, gimple_statement_try::cleanup, gimple_statement_wce::cleanup, gimple_statement_omp_for::collapse, gimple_statement_omp_sections::control, gimple_statement_omp_continue::control_def, gimple_statement_omp_continue::control_use, gimple_statement_omp_task::copy_fn, gimple_statement_omp_parallel::data_arg, phi_arg_d::def, gimple_statement_eh_else::e_body, gimple_statement_try::eval, gimple_statement_eh_filter::failure, gimple_omp_for_iter::final, gimple_statement_eh_mnt::fndecl, gimple_statement_call::fntype, GF_CALL_INTERNAL, gimple_statement_structure(), gt_ggc_m_S(), gimple_statement_catch::handler, gimple_omp_for_iter::incr, gimple_omp_for_iter::index, gimple_omp_for_iter::initial, gimple_statement_omp_for::iter, gimple_statement_transaction::label, gimple_statement_omp_atomic_load::lhs, gimple_statement_eh_else::n_body, gimple_statement_omp_critical::name, gimple_statement_phi::nargs, gimple_statement_base::next, gimple_statement_base::num_ops, gimple_statement_with_ops::op, gimple_statement_with_memory_ops::op, gimple_statement_call::op, gimple_statement_asm::op, gimple_statement_omp_for::pre_body, gimple_statement_phi::result, gimple_statement_omp_atomic_load::rhs, gimple_statement_asm::string, gimple_statement_base::subcode, gimple_statement_catch::types, gimple_statement_eh_filter::types, gimple_statement_call::u, gimple_statement_omp_atomic_store::val, pt_solution::vars, and gimple_statement_bind::vars.

static void gt_ggc_mx_fields_of_gimple_statement_base ( )
inlinestatic
void gt_pch_nx ( )

References gimple_statement_omp_task::arg_align, gimple_statement_omp_task::arg_size, gimple_statement_phi::args, gimple_statement_base::bb, gimple_statement_bind::block, gimple_statement_omp::body, gimple_statement_bind::body, gimple_statement_transaction::body, gimple_statement_call::call_clobbered, gimple_statement_call::call_used, gimple_statement_omp_parallel::child_fn, gimple_statement_omp_for::clauses, gimple_statement_omp_parallel::clauses, gimple_statement_omp_sections::clauses, gimple_statement_omp_single::clauses, gimple_statement_try::cleanup, gimple_statement_wce::cleanup, gimple_statement_omp_for::collapse, gimple_statement_omp_sections::control, gimple_statement_omp_continue::control_def, gimple_statement_omp_continue::control_use, gimple_statement_omp_task::copy_fn, gimple_statement_omp_parallel::data_arg, phi_arg_d::def, gimple_statement_eh_else::e_body, gimple_statement_try::eval, gimple_statement_eh_filter::failure, gimple_omp_for_iter::final, gimple_statement_eh_mnt::fndecl, gimple_statement_call::fntype, GF_CALL_INTERNAL, gimple_statement_structure(), gt_pch_n_S(), gt_pch_note_object(), gimple_statement_catch::handler, gimple_omp_for_iter::incr, gimple_omp_for_iter::index, gimple_omp_for_iter::initial, gimple_statement_omp_for::iter, gimple_statement_transaction::label, gimple_statement_omp_atomic_load::lhs, gimple_statement_eh_else::n_body, gimple_statement_omp_critical::name, gimple_statement_phi::nargs, gimple_statement_base::next, gimple_statement_base::num_ops, gimple_statement_with_ops::op, gimple_statement_with_memory_ops::op, gimple_statement_call::op, gimple_statement_asm::op, gimple_statement_omp_for::pre_body, gimple_statement_phi::result, gimple_statement_omp_atomic_load::rhs, gimple_statement_asm::string, gimple_statement_base::subcode, gimple_statement_catch::types, gimple_statement_eh_filter::types, gimple_statement_call::u, gimple_statement_omp_atomic_store::val, pt_solution::vars, and gimple_statement_bind::vars.

bool is_gimple_address ( )
Return true if T is a gimple address.   

References handled_component_p(), and is_gimple_val().

Referenced by verify_expr().

bool is_gimple_addressable ( )
bool is_gimple_asm_val ( )
Similarly, but accept hard registers as inputs to asm statements.   

References is_gimple_val().

Referenced by gimple_regimplify_operands(), gimplify_asm_expr(), and gimplify_expr().

bool is_gimple_builtin_call ( )
Return TRUE iff stmt is a call to a built-in function.   

References BUILT_IN_NORMAL, gimple_call_fndecl(), is_builtin_fn(), and is_gimple_call().

Referenced by instrument_gimple().

bool is_gimple_call_addr ( )
Return true if T is a valid function operand of a CALL_EXPR.   

References is_gimple_val().

Referenced by gimple_build_call(), gimple_build_call_valist(), gimple_regimplify_operands(), gimplify_call_expr(), gimplify_expr(), and verify_gimple_call().

bool is_gimple_id ( )
Return true if T is a GIMPLE identifier (something with an address).   

References is_gimple_variable().

Referenced by is_gimple_addressable(), is_gimple_min_lval(), valid_gimple_rhs_p(), and verify_types_in_gimple_min_lval().

bool is_gimple_invariant_address ( )
Return true if T is a gimple invariant address.   

References decl_address_invariant_p(), and strip_invariant_refs().

Referenced by is_gimple_min_invariant().

bool is_gimple_ip_invariant_address ( )
Return true if T is a gimple invariant address at IPA level
   (so addresses of variables on stack are not allowed).   

References decl_address_ip_invariant_p(), and strip_invariant_refs().

Referenced by is_gimple_ip_invariant().

bool is_gimple_lvalue ( )
For the definitive definition of GIMPLE, see doc/tree-ssa.texi.   
Validation of GIMPLE expressions.   
Return true if T is a valid LHS for a GIMPLE assignment expression.   

References is_gimple_addressable().

Referenced by gimple_regimplify_operands(), gimplify_arg(), gimplify_asm_expr(), gimplify_expr(), gimplify_init_constructor(), gimplify_modify_expr(), gimplify_modify_expr_rhs(), gimplify_self_mod_expr(), is_gimple_mem_rhs(), is_gimple_mem_rhs_or_call(), valid_gimple_call_p(), verify_expr(), and verify_gimple_call().

bool is_gimple_min_invariant ( )
Return true if T is a GIMPLE minimal invariant.  It's a restricted
   form of function invariant.   

References is_gimple_constant(), and is_gimple_invariant_address().

Referenced by adjust_range_with_scev(), aff_combination_expand(), analyze_initial_condition(), associate_equivalences_with_edges(), build_simple_mem_ref_loc(), can_propagate_from(), canonicalize_constructor_val(), chain_of_csts_start(), chrec_contains_symbols_defined_in_loop(), combine_cond_expr_cond(), compare_values(), compare_values_warnv(), consider_split(), constant_after_peeling(), contains_abnormal_ssa_name_p(), copy_prop_visit_stmt(), copy_reference_ops_from_ref(), copy_tree_body_r(), cprop_into_successor_phis(), create_component_ref_by_pieces_1(), discover_nonconstant_array_refs_r(), eliminate_avail(), eliminate_bb(), eliminate_redundant_computations(), eliminated_by_inlining_prob(), estimate_function_body_sizes(), evaluate_stmt(), expand_simple_operations(), expr_has_constants(), expr_invariant_in_loop_p(), expr_invariant_in_region_p(), extract_range_from_assignment(), extract_range_from_binary_expr(), extract_range_from_binary_expr_1(), extract_range_from_comparison(), extract_range_from_cond_expr(), extract_range_from_multiplicative_op_1(), extract_range_from_unary_expr(), find_func_clobbers(), find_return_bb(), find_taken_edge(), fold_builtin_memory_op(), fold_gimple_assign(), for_each_index(), force_expr_to_var_cost(), force_move_till_op(), forward_propagate_addr_expr(), forward_propagate_addr_expr_1(), forward_propagate_into_gimple_cond(), fully_constant_expression(), fully_constant_vn_reference_p(), get_base_for(), get_constant_value(), get_expr_operands(), get_initial_def_for_induction(), get_loop_invariant_expr_id(), get_or_alloc_expr_for(), get_rank(), get_symbol_constant_value(), get_val_for(), get_value_for_expr(), gimple_cond_get_ops_from_tree(), gimple_fold_stmt_to_constant(), gimple_fold_stmt_to_constant_1(), gimplify_compound_lval(), gimplify_expr(), identify_jump_threads(), independent_of_stmt_p(), insert_debug_temp_for_var_def(), insert_into_preds_of_block(), instantiate_scev_r(), interpret_rhs_expr(), is_gimple_val(), likely_value(), lookup_avail_expr(), loop_niter_by_eval(), lower_omp_for(), maybe_fold_reference(), op_with_constant_singleton_value_range(), optimize_ops_list(), outermost_invariant_loop(), outermost_invariant_loop_for_expr(), param_change_prob(), phi_ssa_name_p(), phi_translate_1(), phiprop_insert_phi(), predicate_for_phi_result(), propagate_necessity(), propagate_rhs_into_lhs(), record_edge_info(), record_equality(), record_equivalences_from_stmt(), record_temporary_equivalences_from_stmts_at_dest(), ref_maybe_used_by_call_p_1(), ref_maybe_used_by_stmt_p(), remap_gimple_op_r(), replace_uses_by(), rewrite_close_phi_out_of_ssa(), run_scc_vn(), scev_const_prop(), set_component_ssa_name(), set_ssa_val_to(), set_value_id_for_result(), set_value_range_to_value(), setup_one_parameter(), simple_mem_ref_in_stmt(), simplify_binary_expression(), simplify_bit_ops_using_ranges(), simplify_cond_using_ranges(), simplify_control_stmt_condition(), simplify_unary_expression(), simplify_using_outer_evolutions(), ssa_forward_propagate_and_combine(), stmt_has_constants(), stmt_may_generate_copy(), symbolic_range_p(), test_for_singularity(), thread_across_edge(), thread_around_empty_block(), tree_node_can_be_shared(), try_to_simplify(), uncprop_into_successor_phis(), valid_gimple_rhs_p(), valid_value_p(), value_range_constant_singleton(), vect_is_simple_use(), vectorizable_load(), verify_expr(), verify_phi_args(), verify_types_in_gimple_reference(), visit_phi(), visit_reference_op_load(), visit_reference_op_store(), visit_use(), vn_get_stmt_kind(), vn_reference_lookup_3(), vrp_evaluate_conditional(), vrp_var_may_overflow(), will_be_nonconstant_expr_predicate(), and workshare_safe_to_combine_p().

bool is_gimple_min_lval ( )
bool is_gimple_reg ( )
Return true if T is a non-aggregate register variable.   

References is_gimple_reg_type(), is_gimple_variable(), needs_to_live_in_memory(), and virtual_operand_p().

Referenced by add_stmt_operand(), arg_needs_copy_p(), build_simple_mem_ref_loc(), consider_split(), declare_return_variable(), dump_defs_stack(), dump_immediate_uses_for(), eliminate_bb(), eliminated_by_inlining_prob(), execute_cse_reciprocals(), execute_cse_reciprocals_1(), expand_assign_tm(), expand_used_vars(), finalize_nesting_tree_1(), find_param_candidates(), find_tail_calls(), force_gimple_operand_1(), gimple_regimplify_operands(), gimplify_and_update_call_from_tree(), gimplify_bind_expr(), gimplify_compound_lval(), gimplify_expr(), gimplify_init_constructor(), gimplify_modify_expr(), gimplify_omp_for(), graphite_copy_stmts_from_block(), initialize_inlined_parameters(), insert_debug_temp_for_var_def(), insert_init_stmt(), ipa_analyze_params_uses(), is_complex_reg(), is_gimple_mem_ref_addr(), is_gimple_val(), is_unused_scalar_param(), link_use_stmts_after(), mark_nonssa_use(), may_be_nonaddressable_p(), maybe_optimize_var(), op_iter_init_phidef(), op_iter_init_phiuse(), op_iter_next_def(), op_iter_next_tree(), prepare_gimple_addressable(), rdg_flag_uses(), record_equivalences_from_stmt(), ref_maybe_used_by_stmt_p(), register_new_def(), rewrite_cross_bb_scalar_deps(), rewrite_leave_block(), rewrite_stmt(), rhs_predicate_for(), setup_one_parameter(), single_phi_def(), split_function(), sra_ipa_modify_assign(), sra_ipa_reset_debug_stmts(), test_nonssa_use(), tree_loop_distribution(), update_parameter_components(), use_pointer_for_field(), vect_finish_stmt_generation(), verify_gimple_assign_binary(), verify_gimple_assign_single(), verify_gimple_assign_ternary(), verify_gimple_assign_unary(), visit_reference_op_store(), and walk_gimple_op().

bool is_gimple_val ( )
Return true if T is a GIMPLE rvalue, i.e. an identifier or a constant.   

References is_gimple_min_invariant(), is_gimple_reg(), is_gimple_reg_type(), and is_gimple_variable().

Referenced by adjust_range_with_scev(), copy_bb(), copy_phis_for_bb(), create_mem_ref(), declare_return_variable(), eliminate_local_variables_1(), eliminate_redundant_comparison(), expand_vector_condition(), expression_expensive_p(), find_interesting_uses_stmt(), force_expr_to_var_cost(), force_gimple_operand(), force_gimple_operand_1(), force_gimple_operand_gsi(), generic_expr_could_trap_p(), get_shiftadd_cost(), gimple_assign_copy_p(), gimple_fold_builtin(), gimple_regimplify_operands(), gimplify_arg(), gimplify_compound_lval(), gimplify_expr(), gimplify_init_constructor(), gimplify_omp_atomic(), gimplify_omp_for(), gimplify_one_sizepos(), gimplify_pure_cond_expr(), gimplify_scan_omp_clauses(), gimplify_self_mod_expr(), gimplify_switch_expr(), gimplify_va_arg_expr(), goa_stabilize_expr(), gsi_gimplify_val(), instrument_expr(), is_gimple_address(), is_gimple_asm_val(), is_gimple_call_addr(), is_gimple_condexpr(), is_gimple_mem_rhs(), is_gimple_mem_rhs_or_call(), is_replaceable_p(), lower_lastprivate_clauses(), mx_register_decls(), remove_dead_stmt(), simplify_builtin_call(), split_function(), std_gimplify_va_arg_expr(), valid_gimple_call_p(), valid_gimple_rhs_p(), vect_generate_tmps_on_preheader(), verify_gimple_assign_binary(), verify_gimple_assign_ternary(), verify_gimple_assign_unary(), verify_gimple_call(), verify_gimple_comparison(), verify_gimple_goto(), verify_gimple_phi(), verify_gimple_return(), verify_gimple_switch(), verify_types_in_gimple_min_lval(), and verify_types_in_gimple_reference().

bool is_gimple_variable ( )
Return true if T is a variable.   

Referenced by gimplify_modify_expr_rhs(), is_gimple_id(), is_gimple_reg(), is_gimple_val(), and valid_gimple_rhs_p().

static hashval_t iterative_hash_canonical_type ( )
static
Returning a hash value for gimple type TYPE combined with VAL.

   The hash value returned is equal for types considered compatible
   by gimple_canonical_types_compatible_p.   

References tree_int_map::base, tree_map_base::from, iterative_hash_expr(), iterative_hash_hashval_t(), tree_int_map::to, and type().

Referenced by gimple_canonical_type_hash().

void print_gimple_types_stats ( )
Show statistics on references to the global type table gimple_types.   
static bool validate_call ( )
static
Return true when STMTs arguments match those of FNDECL.   

References gimple_call_arg(), and gimple_call_num_args().

Referenced by gimple_call_builtin_p().

static tree walk_gimple_asm ( gimple  stmt,
walk_tree_fn  callback_op,
struct walk_stmt_info wi 
)
static
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.   

References gimple_assign_lhs(), gimple_assign_rhs1(), gimple_assign_rhs_class(), gimple_call_arg(), gimple_call_arg_ptr(), gimple_call_chain_ptr(), gimple_call_fn_ptr(), gimple_call_lhs(), gimple_call_lhs_ptr(), gimple_call_num_args(), gimple_catch_types_ptr(), gimple_eh_filter_types_ptr(), gimple_num_ops(), gimple_omp_atomic_load_lhs_ptr(), gimple_omp_atomic_load_rhs_ptr(), gimple_omp_atomic_store_val_ptr(), gimple_omp_continue_control_def_ptr(), gimple_omp_continue_control_use_ptr(), gimple_omp_critical_name_ptr(), gimple_omp_for_clauses_ptr(), gimple_omp_for_collapse(), gimple_omp_for_final_ptr(), gimple_omp_for_incr_ptr(), gimple_omp_for_index_ptr(), gimple_omp_for_initial_ptr(), gimple_omp_parallel_child_fn_ptr(), gimple_omp_parallel_clauses_ptr(), gimple_omp_parallel_data_arg_ptr(), gimple_omp_sections_clauses_ptr(), gimple_omp_sections_control_ptr(), gimple_omp_single_clauses_ptr(), gimple_omp_task_arg_align_ptr(), gimple_omp_task_arg_size_ptr(), gimple_omp_task_child_fn_ptr(), gimple_omp_task_clauses_ptr(), gimple_omp_task_copy_fn_ptr(), gimple_omp_task_data_arg_ptr(), gimple_op_ptr(), GIMPLE_SINGLE_RHS, gimple_statement_structure(), gimple_transaction_label_ptr(), is_gimple_reg(), is_gimple_reg_type(), walk_stmt_info::is_lhs, walk_stmt_info::pset, walk_stmt_info::val_only, and walk_gimple_asm().

Referenced by check_all_array_refs(), convert_tramp_reference_stmt(), count_uses_and_derefs(), discover_nonconstant_array_refs(), eliminate_local_variables_stmt(), execute_optimize_stdarg(), insert_debug_temp_for_var_def(), lower_emutls_stmt(), lower_omp_1(), note_simd_array_uses(), remap_gimple_stmt(), tree_nrv(), verify_gimple_in_cfg(), and walk_gimple_stmt().

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_gimple_seq_mod().

Referenced by copy_gimple_seq_and_replace_locals(), diagnose_omp_structured_block_errors(), diagnose_sb_1(), diagnose_tm_1(), diagnose_tm_blocks(), inline_forbidden_p(), lower_omp_taskreg(), and mf_xform_decls().

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.   

References walk_stmt_info::callback_result, gsi_end_p(), gsi_next(), gsi_stmt(), walk_stmt_info::removed_stmt, and walk_gimple_stmt().

Referenced by diagnose_omp_structured_block_errors(), diagnose_sb_2(), execute_lower_tm(), lower_transaction(), move_stmt_r(), scan_omp(), walk_body(), walk_gimple_seq(), and walk_gimple_stmt().

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.   

References walk_stmt_info::callback_result, gimple_bind_body_ptr(), gimple_catch_handler_ptr(), gimple_eh_else_e_body_ptr(), gimple_eh_else_n_body_ptr(), gimple_eh_filter_failure_ptr(), gimple_has_location(), gimple_has_substatements(), gimple_location(), gimple_omp_body_ptr(), gimple_omp_for_pre_body_ptr(), gimple_transaction_body_ptr(), gimple_try_cleanup_ptr(), gimple_try_eval_ptr(), gimple_wce_cleanup_ptr(), walk_stmt_info::gsi, gsi_stmt(), input_location, walk_stmt_info::removed_stmt, walk_gimple_op(), walk_gimple_seq_mod(), and walk_stmt_info::want_locations.

Referenced by dump_enumerated_decls(), move_block_to_fn(), and walk_gimple_seq_mod().

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.   

References get_base_loadstore(), gimple_asm_input_op(), gimple_asm_ninputs(), gimple_asm_noutputs(), gimple_asm_output_op(), gimple_assign_lhs(), gimple_assign_rhs1(), gimple_assign_single_p(), gimple_call_arg(), gimple_call_chain(), gimple_call_lhs(), gimple_call_num_args(), gimple_call_return_slot_opt_p(), gimple_goto_dest(), gimple_num_ops(), gimple_op(), gimple_phi_num_args(), gimple_return_retval(), handled_component_p(), is_gimple_assign(), is_gimple_call(), parse_input_constraint(), and parse_output_constraint().

Referenced by add_scope_conflicts_1(), gimple_ior_addresses_taken(), ipa_analyze_params_uses(), ipa_record_stmt_references(), scan_function(), verify_non_ssa_vars(), visit_bb(), and walk_stmt_load_store_ops().

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.   

References walk_stmt_load_store_addr_ops().

Referenced by check_stmt().


Variable Documentation

htab_t canonical_type_hash_cache
static
int gimple_alloc_counts[(int) gimple_alloc_kind_all]
const char* const gimple_alloc_kind_names[]
static
Initial value:
{
"assignments",
"phi nodes",
"conditionals",
"everything else"
}
Keep in sync with gimple.h:enum gimple_alloc_kind.   
htab_t gimple_canonical_types
static
@verbatim Gimple IR support functions.

Copyright (C) 2007-2013 Free Software Foundation, Inc. Contributed by Aldy Hernandez aldyh.nosp@m.@red.nosp@m.hat.c.nosp@m.om

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see http://www.gnu.org/licenses/.

Global canonical type table.   
const char* const gimple_code_name[]
Initial value:
{
#include "gimple.def"
}

Referenced by do_niy(), dump_gimple_fmt(), dump_omp_region(), and lto_tag_name().

EXPORTED_CONST size_t gimple_ops_offset_[]
Initial value:
{
#include "gsstruct.def"
}
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[]
Initial value:
{
#include "all-tree.def"
}
EXPORTED_CONST enum gimple_statement_structure_enum gss_for_code_[]
Initial value:
{
#include "gimple.def"
}
Map GIMPLE codes to GSS codes.   
const size_t gsstruct_code_size[]
static
Initial value:
{
#include "gsstruct.def"
}