GCC Middle and Back End API Reference
|
Data Structures | |
struct | count_ptr_d |
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 [] |
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 |
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 |
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 |
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 |
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 | ( | ) |
Allocate memory for a GIMPLE statement with code CODE and NUM_OPS operands.
References ggc_alloc_cleared_gimple_statement_stat(), gimple_alloc_counts, gimple_alloc_sizes, gimple_init_singleton(), gimple_set_code(), gimple_set_num_ops(), gimple_size(), and gimple_statement_base::modified.
Referenced by gimple_build_with_ops_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_copy_p | ( | ) |
Return true if GS is a copy assignment.
References gimple_assign_single_p(), gimple_op(), and is_gimple_val().
Referenced by build_ssa_conflict_graph(), create_outofssa_var_map(), exist_non_indexing_operands_for_use_p(), find_use_stmt(), remap_gimple_stmt(), replace_ref_with(), tree_nrv(), and visit_use().
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 | ( | ) |
Return true if GS is a SSA_NAME copy assignment.
References gimple_assign_lhs(), gimple_assign_rhs1(), and gimple_assign_single_p().
Referenced by get_prop_dest_stmt(), get_val_for(), propagate_with_phi(), recognize_single_bit_test(), remove_stmt(), and rename_ssa_copies().
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 | ( | ) |
Return the body of GIMPLE statements for function FN. After the CFG pass, the function body doesn't exist anymore because it has been split up into basic blocks. In this case, it returns NULL.
References function::gimple_body.
Referenced by diagnose_omp_structured_block_errors(), diagnose_tm_blocks(), dump_function_to_file(), execute_build_cfg(), execute_lower_omp(), execute_lower_tm(), execute_mudflap_function_decls(), finalize_nesting_tree_1(), gimple_add_tmp_var(), gimple_has_body_p(), gimplify_all_functions(), gimplify_function_tree(), lower_eh_constructs(), lower_function_body(), refactor_eh(), run_warn_unused_result(), and walk_function().
|
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 | ||
) |
References gimple_build_assign_with_ops().
gimple gimple_build_bind | ( | ) |
Build a GIMPLE_BIND statement. VARS are the variables in BODY. BLOCK is the containing block.
References gimple_bind_set_block(), gimple_bind_set_body(), and gimple_bind_set_vars().
Referenced by copy_gimple_bind(), finalize_task_copyfn(), gimplify_bind_expr(), gimplify_body(), gimplify_function_tree(), 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_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().
|
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_from_tree | ( | ) |
Build a GIMPLE_CALL statement from CALL_EXPR T. Note that T is assumed to be in GIMPLE form already. Minimal checking is done of this fact.
References BUILT_IN_NORMAL, get_callee_fndecl(), gimple_build_call_1(), gimple_call_set_alloca_for_var(), gimple_call_set_arg(), gimple_call_set_chain(), gimple_call_set_from_thunk(), gimple_call_set_nothrow(), gimple_call_set_return_slot_opt(), gimple_call_set_tail(), gimple_call_set_va_arg_pack(), gimple_set_block(), and gimple_set_no_warning().
Referenced by gimplify_call_expr(), and gimplify_modify_expr().
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().
|
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 | ( | 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.
References gimple_cond_set_false_label(), gimple_cond_set_lhs(), gimple_cond_set_rhs(), gimple_cond_set_true_label(), and tcc_comparison.
Referenced by build_check_stmt(), create_empty_loop_on_edge(), dom_thread_across_edge(), execute_sm_if_changed(), expand_omp_for_init_counts(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_thunk(), expand_transaction(), gen_conditions_for_pow_int_base(), gen_inbound_check(), gimple_build_cond_empty(), gimple_build_cond_from_tree(), gimple_divmod_fixed_value(), gimple_ic(), gimple_mod_pow2(), gimple_mod_subtract(), gimple_stringop_fixed_value(), gimplify_cond_expr(), gimplify_init_ctor_eval_range(), identify_jump_threads(), instrument_mem_region_access(), lower_eh_dispatch(), lower_lastprivate_clauses(), lower_omp_single_simple(), lower_rec_input_clauses(), mf_build_check_statement_for(), slpeel_make_loop_iterate_ntimes(), and tree_transform_and_unroll_loop().
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().
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_goto | ( | ) |
Build a GIMPLE_GOTO statement to label DEST.
References gimple_goto_set_dest().
Referenced by convert_nl_goto_receiver(), do_goto_redirection(), do_return_redirection(), factor_computed_gotos(), frob_into_branch_around(), gimplify_cond_expr(), gimplify_expr(), gimplify_init_ctor_eval_range(), gimplify_loop_expr(), lower_builtin_setjmp(), lower_catch(), lower_function_body(), lower_gimple_return(), lower_rec_input_clauses(), lower_try_finally_copy(), lower_try_finally_nofallthru(), and lower_try_finally_switch().
gimple gimple_build_label | ( | ) |
Build a GIMPLE_LABEL statement for LABEL.
References gimple_label_set_label().
Referenced by convert_nl_goto_receiver(), emit_post_landing_pad(), factor_computed_gotos(), frob_into_branch_around(), gen_inbound_check(), gimple_block_label(), gimplify_case_label_expr(), gimplify_cond_expr(), gimplify_expr(), gimplify_init_ctor_eval_range(), gimplify_loop_expr(), gimplify_switch_expr(), label_to_block_fn(), lower_builtin_setjmp(), lower_catch(), lower_cleanup(), lower_eh_filter(), lower_function_body(), lower_lastprivate_clauses(), lower_omp_master(), lower_omp_single_copy(), lower_omp_single_simple(), lower_rec_input_clauses(), lower_transaction(), lower_try_finally(), lower_try_finally_copy(), lower_try_finally_nofallthru(), lower_try_finally_onedest(), lower_try_finally_switch(), replace_goto_queue_cond_clause(), and shrink_wrap_one_built_in_call().
gimple gimple_build_nop | ( | void | ) |
Build a GIMPLE_NOP statement.
Referenced by convert_local_reference_stmt(), diagnose_sb_0(), eliminate_local_variables_stmt(), eliminate_tail_call(), expand_call_inline(), expand_complex_div_wide(), expand_omp_taskreg(), get_or_create_ssa_default_def(), get_representative_for(), gimple_flow_call_edges_add(), gimplify_and_update_call_from_tree(), gimplify_body(), input_ssa_names(), lower_omp_1(), remap_gimple_stmt(), remap_ssa_name(), rewrite_stmt(), scan_omp_1_stmt(), scan_omp_parallel(), scan_omp_task(), tree_function_versioning(), update_call_from_tree(), and visit_reference_op_load().
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 |
References gimple_alloc_stat(), and gimple_set_subcode().
Referenced by gimple_build_assign_with_ops(), gimple_build_debug_bind_stat(), and gimple_build_debug_source_bind_stat().
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().
bool gimple_call_builtin_p | ( | ) |
Return true when STMT is builtins call to CLASS.
Return true when STMT is builtins call to CODE of CLASS.
References gimple_call_fndecl(), is_gimple_call(), and validate_call().
Referenced by adjust_last_stmt(), ccp_fold_stmt(), check_forbidden_calls(), cleanup_empty_eh(), eliminate_unnecessary_stmts(), estimate_function_body_sizes(), evaluate_stmt(), execute_warn_function_return(), extract_range_basic(), find_func_aliases_for_builtin_call(), find_func_clobbers(), fixup_noreturn_call(), get_mem_refs_of_builtin_call(), gimple_equal_p(), gimple_verify_flow_info(), has_stmt_been_instrumented_p(), insert_clobber_before_stack_restore(), insert_clobbers_for_var(), instrument_builtin_call(), instrument_func_exit(), is_ctrl_altering_stmt(), make_edges(), maybe_instrument_call(), nonfreeing_call_p(), optimize_clobbers(), propagate_necessity(), set_cond_stmt_execution_predicate(), split_critical_edges(), strlen_optimize_stmt(), and vn_reference_lookup_3().
gimple gimple_call_copy_skip_args | ( | ) |
Build a GIMPLE_CALL identical to STMT but skipping the arguments in the positions marked by the set ARGS_TO_SKIP.
References bitmap_bit_p(), gimple_build_call_internal_vec(), gimple_build_call_vec(), gimple_call_arg(), gimple_call_chain(), gimple_call_copy_flags(), gimple_call_fn(), gimple_call_internal_fn(), gimple_call_internal_p(), gimple_call_lhs(), gimple_call_num_args(), gimple_call_set_chain(), gimple_call_set_lhs(), gimple_has_location(), gimple_location(), gimple_set_location(), gimple_set_modified(), gimple_set_vdef(), gimple_set_vuse(), gimple_vdef(), and gimple_vuse().
Referenced by cgraph_redirect_edge_call_stmt_to_callee().
int gimple_call_flags | ( | ) |
Detect flags from a GIMPLE_CALL. This is just like call_expr_flags, but for gimple tuples.
References flags_from_decl_or_type(), GF_CALL_NOTHROW, gimple_call_fndecl(), gimple_call_fntype(), gimple_call_internal_fn(), gimple_call_internal_p(), internal_fn_flags(), and gimple_statement_base::subcode.
Referenced by branch_prob(), build_cgraph_edges(), call_can_make_abnormal_goto(), call_may_clobber_ref_p_1(), ccp_fold_stmt(), check_call(), compute_avail(), compute_points_to_sets(), copy_bb(), execute_fixup_cfg(), expand_block_edges(), expand_thunk(), find_duplicate(), find_func_aliases_for_builtin_call(), find_func_aliases_for_call(), gather_memory_references(), get_references_in_stmt(), gimple_call_reset_alias_info(), gimple_call_return_flags(), gimple_has_side_effects(), gimple_regimplify_operands(), gimple_stmt_may_fallthru(), gimplify_and_update_call_from_tree(), if_convertible_stmt_p(), initialize_hash_element(), ipa_pta_execute(), is_ctrl_altering_stmt(), make_abnormal_goto_edges(), make_edges(), maybe_add_call_vops(), need_fake_edge_p(), nonfreeing_call_p(), notice_special_calls(), rebuild_cgraph_edges(), ref_maybe_used_by_call_p_1(), scan_function(), stmt_simple_for_scop_p(), stmt_starts_bb_p(), substitute_and_fold(), thread_private_new_memory(), tree_bb_level_predictions(), tree_estimate_loop_size(), vect_finish_stmt_generation(), vectorizable_function(), and visit_use().
|
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 | ( | ) |
Reset alias information on call S.
References gimple_call_clobber_set(), gimple_call_flags(), gimple_call_use_set(), memset(), and pt_solution_reset().
Referenced by gimple_build_call_1(), gimple_build_call_internal_1(), input_gimple_stmt(), and remap_gimple_stmt().
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 |
Returns nonzero if P1 and P2 are equal.
References gimple_canonical_types_compatible_p().
Referenced by gimple_register_canonical_type().
|
static |
References iterative_hash_canonical_type().
Referenced by gimple_register_canonical_type().
|
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 | ||
) |
Extract operands for a GIMPLE_COND statement out of COND_EXPR tree COND.
References build_zero_cst(), extract_ops_from_tree(), is_gimple_min_invariant(), and tcc_comparison.
Referenced by gimple_build_cond_empty(), gimple_build_cond_from_tree(), gimple_cond_set_condition_from_tree(), and gimplify_cond_expr().
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_has_body_p | ( | ) |
Return true when FNDECL has Gimple body either in unlowered or CFG form.
References function::cfg, and gimple_body().
Referenced by analyze_function(), analyze_functions(), can_early_inline_edge_p(), cgraph_materialize_all_clones(), compile(), count_formal_params(), do_per_function(), dump_cgraph_node(), dump_function_to_file(), expand_call_inline(), find_decls_types_in_node(), free_lang_data_in_decl(), function_and_variable_visibility(), ipa_populate_param_decls(), ipa_write_optimization_summaries(), lto_output(), lto_output_edge(), mark_functions_to_output(), output_function(), tree_profiling(), verify_cgraph_node(), and verify_edge_count_and_frequency().
bool gimple_has_side_effects | ( | ) |
Return true if statement S has side-effects. We consider a statement to have side effects if: - It is a GIMPLE_CALL not marked with ECF_PURE or ECF_CONST. - Any of its operands are marked TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
References gimple_asm_volatile_p(), gimple_call_flags(), gimple_has_volatile_ops(), is_gimple_call(), and is_gimple_debug().
Referenced by bb_no_side_effects_p(), call_can_make_abnormal_goto(), compute_avail(), expand_call_stmt(), expand_complex_move(), if_convertible_gimple_assign_stmt_p(), loop_edge_to_cancel(), loop_only_exit_p(), mark_stmt_if_obviously_necessary(), maybe_lower_iteration_bound(), movement_possibility(), n_of_executions_at_most(), no_side_effect_bb(), nonpure_call_p(), optimize_stmt(), remove_prop_source_from_use(), statement_sink_location(), stmt_local_def(), substitute_and_fold(), tree_estimate_loop_size(), and tree_estimate_probability_bb().
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().
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().
void gimple_seq_add_seq | ( | ) |
Append sequence SRC to the end of sequence *DST_P. If *DST_P is NULL, a new sequence is allocated.
References gsi_insert_seq_after(), GSI_NEW_STMT, and si.
Referenced by add_bb_predicate_gimplified_stmts(), create_expression_by_pieces(), do_goto_redirection(), do_return_redirection(), finalize_nesting_tree_1(), frob_into_branch_around(), gimplify_cond_expr(), gimplify_expr(), gsi_insert_seq_on_edge(), honor_protect_cleanup_actions(), lower_catch(), lower_eh_constructs(), lower_eh_filter(), lower_lastprivate_clauses(), lower_omp_for(), lower_omp_for_lastprivate(), lower_omp_sections(), lower_omp_single(), lower_omp_single_copy(), lower_omp_single_simple(), lower_omp_taskreg(), lower_rec_input_clauses(), lower_reduction_clauses(), lower_try_finally(), lower_try_finally_copy(), lower_try_finally_nofallthru(), lower_try_finally_onedest(), lower_try_finally_switch(), mf_build_check_statement_for(), optimize_double_finally(), slpeel_add_loop_guard(), vect_build_loop_niters(), vect_create_addr_base_for_vector_ref(), vect_create_cond_for_align_checks(), vect_generate_tmps_on_preheader(), vect_loop_versioning(), and walk_gimple_omp_for().
void gimple_seq_add_stmt | ( | ) |
Link gimple statement GS to the end of the sequence *SEQ_P. If *SEQ_P is NULL, a new sequence is allocated.
References gsi_insert_after(), GSI_NEW_STMT, and si.
Referenced by add_phi_node_to_bb(), build_check_stmt(), create_expression_by_pieces(), do_goto_redirection(), do_return_redirection(), emit_eh_dispatch(), emit_post_landing_pad(), emit_resx(), finalize_nesting_tree_1(), finalize_task_copyfn(), frob_into_branch_around(), gen_emutls_addr(), gimple_seq_copy(), gimplify_function_tree(), gsi_insert_on_edge(), insert_out_of_ssa_copy(), insert_out_of_ssa_copy_on_edge(), insert_stmts(), lower_catch(), lower_cleanup(), lower_eh_filter(), lower_emutls_1(), lower_function_body(), lower_lastprivate_clauses(), lower_omp_for(), lower_omp_sections(), lower_omp_single(), lower_omp_single_copy(), lower_omp_single_simple(), lower_omp_taskreg(), lower_rec_input_clauses(), lower_reduction_clauses(), lower_transaction(), lower_try_finally(), lower_try_finally_copy(), lower_try_finally_nofallthru(), lower_try_finally_onedest(), lower_try_finally_switch(), mf_build_check_statement_for(), mf_decl_cache_locals(), mx_register_decls(), remap_gimple_seq(), remove_invariant_phi(), set_component_ssa_name(), vect_create_cond_for_align_checks(), and vect_get_constant_vectors().
gimple_seq gimple_seq_copy | ( | ) |
Perform a deep copy of sequence SRC and return the result.
References gimple_copy(), gimple_seq_add_stmt(), gsi_end_p(), gsi_next(), and gsi_stmt().
Referenced by copy_gimple_seq_and_replace_locals(), gimple_copy(), insert_edge_copies_seq(), replace_goto_queue_1(), and replace_goto_queue_cond_clause().
void gimple_set_bb | ( | ) |
Set BB to be the basic block holding G.
References gimple_statement_base::bb, function::cfg, cfun, gimple_label_label(), control_flow_graph::last_label_uid, vec_safe_grow_cleared(), and vec_safe_length().
Referenced by add_phi_node_to_bb(), combine_blocks(), gimple_merge_blocks(), gimple_split_block(), gsi_remove(), gsi_replace(), make_blocks(), set_phi_nodes(), update_bb_for_stmts(), and vect_mark_pattern_stmts().
void gimple_set_body | ( | ) |
Set sequence SEQ to be the GIMPLE body for function FN.
References function::gimple_body.
Referenced by diagnose_omp_structured_block_errors(), execute_build_cfg(), execute_lower_tm(), expand_function(), expand_omp_taskreg(), finalize_task_copyfn(), gimplify_function_tree(), input_function(), lower_eh_constructs(), lower_function_body(), release_function_body(), and walk_function().
|
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.
|
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 |
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().
|
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.
|
inlinestatic |
References gimple_statement_base::bb.
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 | ( | ) |
Return true if T is something whose address can be taken.
References handled_component_p(), and is_gimple_id().
Referenced by gimplify_addr_expr(), gimplify_expr(), gimplify_modify_expr(), instrument_expr(), is_gimple_lvalue(), may_be_nonaddressable_p(), and verify_gimple_assign_single().
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_condexpr | ( | ) |
Return true if T is a GIMPLE condition.
References is_gimple_val(), and tree_could_throw_p().
Referenced by add_to_predicate_list(), canonicalize_cond_expr_cond(), determine_exit_conditions(), find_phi_replacement_condition(), fold_gimple_assign(), fold_gimple_cond(), forward_propagate_into_cond(), gen_parallel_loop(), gimplify_cond_expr(), gimplify_expr(), gimplify_pure_cond_expr(), predicate_mem_writes(), set_bb_predicate(), set_prologue_iterations(), slpeel_add_loop_guard(), valid_gimple_rhs_p(), vect_loop_versioning(), verify_expr(), and verify_gimple_assign_ternary().
bool is_gimple_constant | ( | ) |
Return true if T is a valid gimple constant.
Referenced by instrument_mem_region_access(), is_gcond_subset_of(), is_gimple_ip_invariant(), is_gimple_min_invariant(), prune_uninit_phi_opnds_in_unrealizable_paths(), record_equivalences_from_incoming_edge(), strip_invariant_refs(), and use_pred_not_overlap_with_undef_path_pred().
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 | ( | ) |
Return true if T is a GIMPLE interprocedural invariant. It's a restricted form of gimple minimal invariant.
References is_gimple_constant(), and is_gimple_ip_invariant_address().
Referenced by check_final_bb(), compute_complex_assign_jump_func(), determine_known_aggregate_parts(), ipa_compute_jump_functions_for_edge(), ipa_find_agg_cst_for_param(), ipa_get_jf_pass_through_result(), ipcp_transform_function(), phi_result_unknown_predicate(), propagate_aggs_accross_jump_function(), and set_cond_stmt_execution_predicate().
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_mem_ref_addr | ( | ) |
Return true if T is a valid address operand of a MEM_REF.
References decl_address_invariant_p(), and is_gimple_reg().
Referenced by create_mem_ref(), expand_debug_expr(), forward_propagate_addr_expr_1(), get_memory_rtx(), gimplify_expr(), gimplify_mem_ref_parts(), maybe_fold_reference(), verify_expr(), and verify_types_in_gimple_reference().
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 | ( | ) |
Return true if T is a GIMPLE minimal lvalue.
References is_gimple_id(), and strip_invariant_refs().
Referenced by gimple_regimplify_operands(), gimplify_asm_expr(), gimplify_compound_lval(), gimplify_expr(), gimplify_modify_expr_rhs(), and gimplify_va_arg_expr().
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 |
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.
void recalculate_side_effects | ( | ) |
References len, tcc_binary, tcc_comparison, tcc_constant, tcc_expression, tcc_reference, tcc_unary, and tcc_vl_exp.
Referenced by gimplify_compound_lval(), gimplify_cond_expr(), gimplify_expr(), and gimplify_modify_expr_rhs().
|
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 |
Helper function for walk_gimple_stmt. Walk operands of a GIMPLE_ASM.
References gimple_asm_input_op(), gimple_asm_label_op(), gimple_asm_ninputs(), gimple_asm_nlabels(), gimple_asm_noutputs(), gimple_asm_output_op(), walk_stmt_info::is_lhs, parse_input_constraint(), parse_output_constraint(), and walk_stmt_info::val_only.
Referenced by walk_gimple_op().
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().
|
static |
int gimple_alloc_counts[(int) gimple_alloc_kind_all] |
Gimple stats.
Referenced by allocate_phi_node(), dump_gimple_statistics(), and gimple_alloc_stat().
|
static |
Keep in sync with gimple.h:enum gimple_alloc_kind.
int gimple_alloc_sizes[(int) gimple_alloc_kind_all] |
Referenced by allocate_phi_node(), dump_gimple_statistics(), gimple_alloc_stat(), and gimple_build_asm_1().
|
static |
@verbatim Gimple IR support functions.
Copyright (C) 2007-2013 Free Software Foundation, Inc. Contributed by Aldy Hernandez aldyh @red hat.c 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[] |
Referenced by do_niy(), dump_gimple_fmt(), dump_omp_region(), and lto_tag_name().
EXPORTED_CONST size_t 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[] |
EXPORTED_CONST enum gimple_statement_structure_enum gss_for_code_[] |
Map GIMPLE codes to GSS codes.
|
static |