GCC Middle and Back End API Reference
|
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "target.h"
#include "tree.h"
#include "gimple.h"
#include "tree-pass.h"
#include "ssa.h"
#include "cgraph.h"
#include "diagnostic.h"
#include "flags.h"
#include "alias.h"
#include "fold-const.h"
#include "stor-layout.h"
#include "calls.h"
#include "attribs.h"
#include "toplev.h"
#include "output.h"
#include "common/common-target.h"
#include "langhooks.h"
#include "tree-inline.h"
#include "tree-iterator.h"
#include "internal-fn.h"
#include "gimple-iterator.h"
#include "gimplify.h"
#include "tree-dfa.h"
#include "langhooks-def.h"
#include "tree-diagnostic.h"
#include "except.h"
#include "builtins.h"
#include "print-tree.h"
#include "ipa-utils.h"
#include "selftest.h"
#include "stringpool.h"
#include "rtl.h"
#include "regs.h"
#include "tree-vector-builder.h"
#include "gimple-fold.h"
#include "escaped_string.h"
#include "gimple-range.h"
#include "gomp-constants.h"
#include "dfp.h"
#include "asan.h"
#include "ubsan.h"
#include "all-tree.def"
#include "gt-tree.h"
Data Structures | |
struct | type_hash |
struct | type_cache_hasher |
struct | int_cst_hasher |
struct | poly_int_cst_hasher |
struct | cl_option_hasher |
Macros | |
#define | DEFTREECODE(SYM, NAME, TYPE, LEN) |
#define | END_OF_BASE_TREE_CODES "@dummy", |
#define | TYPE_HASH_INITIAL_SIZE 1000 |
#define | UPDATE_FLAGS(NODE) |
#define | PROCESS_ARG(N) |
#define | MAX_INT_CACHED_PREC (HOST_BITS_PER_WIDE_INT > 64 ? HOST_BITS_PER_WIDE_INT : 64) |
#define | MAX_BOOL_CACHED_PREC (HOST_BITS_PER_WIDE_INT > 64 ? HOST_BITS_PER_WIDE_INT : 64) |
#define | RETURN_TRUE_IF_VAR(T) |
#define | TREE_MEM_USAGE_SPACES 40 |
#define | FILE_FUNCTION_FORMAT "_GLOBAL__%s_%s" |
#define | FEEDBACK(X) |
#define | SYNDROME(X) |
#define | MAKE_FIXED_TYPE_NODE(KIND, SIZE) |
#define | MAKE_FIXED_TYPE_NODE_WIDTH(KIND, WIDTH, SIZE) |
#define | MAKE_FIXED_TYPE_NODE_FAMILY(N1, N2) |
#define | MAKE_FIXED_MODE_NODE(KIND, NAME, MODE) |
#define | WALK_SUBTREE(NODE) |
#define | WALK_SUBTREE_TAIL(NODE) |
#define | verify_variant_match(flag) |
#define DEFTREECODE | ( | SYM, | |
NAME, | |||
TYPE, | |||
LEN ) |
Language-independent node constructors for parse phase of GNU compiler. Copyright (C) 1987-2024 Free Software Foundation, Inc. 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/>.
This file contains the low level primitives for operating on tree nodes, including allocation, list operations, interning of identifiers, construction of data type nodes and statement nodes, and construction of type conversion nodes. It also contains tables index by tree code that describe how to take apart nodes of that code. It is intended to be language-independent but can occasionally calls language-dependent routines.
Names of tree components. Used for printing out the tree and error messages.
#define END_OF_BASE_TREE_CODES "@dummy", |
#define FEEDBACK | ( | X | ) |
#define FILE_FUNCTION_FORMAT "_GLOBAL__%s_%s" |
Referenced by get_file_function_name().
#define MAKE_FIXED_MODE_NODE | ( | KIND, | |
NAME, | |||
MODE ) |
Referenced by build_common_tree_nodes().
#define MAKE_FIXED_TYPE_NODE | ( | KIND, | |
SIZE ) |
#define MAKE_FIXED_TYPE_NODE_FAMILY | ( | N1, | |
N2 ) |
Referenced by build_common_tree_nodes().
#define MAKE_FIXED_TYPE_NODE_WIDTH | ( | KIND, | |
WIDTH, | |||
SIZE ) |
#define MAX_BOOL_CACHED_PREC (HOST_BITS_PER_WIDE_INT > 64 ? HOST_BITS_PER_WIDE_INT : 64) |
Referenced by build_nonstandard_boolean_type().
#define MAX_INT_CACHED_PREC (HOST_BITS_PER_WIDE_INT > 64 ? HOST_BITS_PER_WIDE_INT : 64) |
#define PROCESS_ARG | ( | N | ) |
#define RETURN_TRUE_IF_VAR | ( | T | ) |
Referenced by variably_modified_type_p().
#define SYNDROME | ( | X | ) |
#define TREE_MEM_USAGE_SPACES 40 |
Referenced by dump_tree_statistics().
#define TYPE_HASH_INITIAL_SIZE 1000 |
Initial size of the hash table (rounded to next prime).
Referenced by init_ttree().
#define UPDATE_FLAGS | ( | NODE | ) |
Referenced by recompute_tree_invariant_for_addr_expr().
#define verify_variant_match | ( | flag | ) |
Referenced by verify_type_variant().
#define WALK_SUBTREE | ( | NODE | ) |
Referenced by walk_tree_1(), and walk_type_fields().
#define WALK_SUBTREE_TAIL | ( | NODE | ) |
Referenced by walk_tree_1().
|
extern |
obstack.[ch] explicitly declined to prototype this.
int allocate_decl_uid | ( | void | ) |
Allocate and return a new UID from the DECL_UID namespace.
References next_decl_uid.
Referenced by build_fake_var_decl(), copy_node(), ipa_pta_execute(), and make_node().
HOST_WIDE_INT arg_int_size_in_bytes | ( | const_tree | type | ) |
Like int_size_in_bytes, but handle empty records specially.
References int_size_in_bytes(), and TYPE_EMPTY_P.
Referenced by copy_blkmode_to_reg(), hard_function_value(), and store_one_arg().
tree arg_size_in_bytes | ( | const_tree | type | ) |
Like size_in_bytes, but handle empty records specially.
References size_in_bytes(), size_zero_node, and TYPE_EMPTY_P.
Referenced by locate_and_pad_parm(), std_gimplify_va_arg_expr(), and store_one_arg().
Return a tree of sizetype representing the size, in bytes, of the element of EXP, an ARRAY_REF or an ARRAY_RANGE_REF.
References exp(), EXPR_LOCATION, fold_convert_loc(), size_binop_loc(), size_int, sizetype, SUBSTITUTE_PLACEHOLDER_IN_EXPR, TREE_OPERAND, TREE_TYPE, TYPE_ALIGN_UNIT, and TYPE_SIZE_UNIT.
Referenced by compute_object_offset(), constant_byte_string(), dump_generic_node(), ipa_icf::sem_variable::equals(), fold_addr_of_array_ref_difference(), fold_const_aggregate_ref_1(), get_addr_base_and_unit_offset_1(), get_inner_reference(), get_ref_base_and_extent(), get_up_bounds_for_array_ref(), gimplify_compound_lval(), gimplify_scan_omp_clauses(), idx_analyze_ref(), idx_find_step(), operand_compare::operand_equal_p(), and strip_offset_1().
Returns true if REF is an array reference, a component reference, or a memory reference to an array whose actual size might be larger than its upper bound implies, there are multiple cases: A. a ref to a flexible array member at the end of a structure; B. a ref to an array with a different type against the original decl; for example: short a[16] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; (*((char(*)[16])&a[0]))[i+8] C. a ref to an array that was passed as a parameter; for example: int test (uint8_t *p, uint32_t t[1][1], int n) { for (int i = 0; i < 4; i++, p++) t[i][0] = ...; If non-null, set IS_TRAILING_ARRAY to true if the ref is the above case A.
References DECL_CHAIN, DECL_COMMON, DECL_NOT_FLEXARRAY, DECL_P, DECL_SIZE, DECL_SIZE_UNIT, gcc_assert, gcc_unreachable, get_addr_base_and_unit_offset(), get_base_address(), handled_component_p(), known_le, last_field(), NULL_TREE, offset, wi::to_offset(), TREE_CODE, TREE_OPERAND, TREE_TYPE, TYPE_DOMAIN, TYPE_MAX_VALUE, TYPE_MIN_VALUE, TYPE_SIZE, TYPE_SIZE_UNIT, and VAR_P.
Referenced by addr_object_size(), component_ref_sam_type(), component_ref_to_zero_sized_trailing_array_p(), get_range_strlen_tree(), idx_infer_loop_bounds(), idx_within_array_bound(), maybe_set_strlen_range(), stmt_kills_ref_p(), and trailing_array().
Return a tree representing the lower bound of the array mentioned in EXP, an ARRAY_REF or an ARRAY_RANGE_REF.
References build_int_cst(), error_mark_node, exp(), integer_zero_node, SUBSTITUTE_PLACEHOLDER_IN_EXPR, TREE_OPERAND, TREE_TYPE, TYPE_DOMAIN, and TYPE_MIN_VALUE.
Referenced by check_out_of_bounds_and_warn(), compute_object_offset(), constant_byte_string(), copy_reference_ops_from_ref(), dump_generic_node(), ipa_icf::sem_variable::equals(), expand_expr_real_1(), expr_with_var_bounded_array_refs_p(), fold_const_aggregate_ref_1(), fold_read_from_constant_string(), get_addr_base_and_unit_offset_1(), get_inner_reference(), get_ref_base_and_extent(), gimplify_compound_lval(), gimplify_scan_omp_clauses(), handle_array_ref(), idx_find_step(), idx_infer_loop_bounds(), idx_within_array_bound(), in_array_bounds_p(), maybe_canonicalize_mem_ref_addr(), operand_compare::operand_equal_p(), optimize_count_trailing_zeroes(), and range_in_array_bounds_p().
Return a tree representing the upper bound of the array mentioned in EXP, an ARRAY_REF or an ARRAY_RANGE_REF.
References exp(), NULL_TREE, SUBSTITUTE_PLACEHOLDER_IN_EXPR, TREE_OPERAND, TREE_TYPE, TYPE_DOMAIN, and TYPE_MAX_VALUE.
Referenced by array_bounds_checker::check_array_ref(), copy_reference_ops_from_ref(), idx_infer_loop_bounds(), idx_within_array_bound(), in_array_bounds_p(), and range_in_array_bounds_p().
tree array_type_nelts_minus_one | ( | const_tree | type | ) |
Return, as a tree node, the number of elements for TYPE (which is an ARRAY_TYPE) minus one. This counts only elements of the top array.
References build_int_cst(), COMPLETE_TYPE_P, error_mark_node, fold_build2, integer_zerop(), TREE_TYPE, TYPE_DOMAIN, TYPE_MAX_VALUE, TYPE_MIN_VALUE, and TYPE_SIZE.
Referenced by array_type_nelts_top(), count_type_elements(), and is_empty_type().
Return, as an INTEGER_CST node, the number of elements for TYPE (which is an ARRAY_TYPE). This counts only elements of the top array.
References array_type_nelts_minus_one(), fold_build2_loc(), input_location, size_one_node, and sizetype.
void assign_assembler_name_if_needed | ( | tree | t | ) |
If T needs an assembler name, have one created for it.
References decl_assembler_name(), DECL_SOURCE_LOCATION, input_location, and need_assembler_name_p().
Referenced by cgraph_node::analyze(), expand_omp_target(), expand_omp_taskreg(), and mangle_referenced_decls().
Return true if CODE represents an associative tree code. Otherwise return false.
Referenced by loop_cand::analyze_iloop_reduction_var(), associative_binary_op_p(), may_reassociate_p(), parloops_is_simple_reduction(), reassociate_bb(), undistribute_ops_list(), vect_build_slp_tree_2(), and vect_slp_check_for_roots().
bool auto_var_in_fn_p | ( | const_tree | var, |
const_tree | fn ) |
Return true if VAR is an automatic variable defined in function FN.
References auto_var_p(), DECL_CONTEXT, DECL_P, and TREE_CODE.
Referenced by add_clobbers_to_eh_landing_pad(), can_be_nonlocal(), ipa_icf_gimple::func_checker::compare_decl(), copy_tree_body_r(), decl_maybe_in_construction_p(), estimated_stack_frame_size(), find_func_clobbers(), find_return_bb(), find_tail_calls(), find_var_from_fn(), gimple_expand_vec_set_extract_expr(), ipa_pta_execute(), mark_nonssa_use(), maybe_nonzero_address(), optimize_atomic_compare_exchange_p(), output_gimple_stmt(), points_to_possible_sra_candidate_p(), refs_local_or_readonly_memory_p(), remap_gimple_op_r(), remap_gimple_stmt(), self_inlining_addr_expr(), set_uids_in_ptset(), setup_one_parameter(), and test_nonssa_use().
bool auto_var_p | ( | const_tree | var | ) |
Return true if VAR is an automatic variable.
References DECL_EXTERNAL, TREE_CODE, TREE_STATIC, and VAR_P.
Referenced by nontrapping_dom_walker::add_or_mark_expr(), auto_var_in_fn_p(), gimple_add_init_for_auto_var(), ipa_pta_execute(), is_var_need_auto_init(), and ref_can_have_store_data_races().
tree bit_position | ( | const_tree | field | ) |
Return the bit position of FIELD, in bits from the start of the record. This is a tree of type bitsizetype.
References bit_from_pos(), DECL_FIELD_BIT_OFFSET, and DECL_FIELD_OFFSET.
Referenced by add_data_member_location_attribute(), build_user_friendly_ref_for_offset(), compute_record_mode(), dequeue_and_dump(), field_byte_offset(), get_vec_alignment_for_record_type(), hoist_adjacent_loads(), store_constructor(), type_has_padding_at_level_p(), and type_internals_preclude_sra_p_1().
Checks to see if T is a constant or a constant vector and if each element E adheres to ~E + 1 == pow2 then return ~E otherwise NULL_TREE.
References wi::add(), wi::bit_not(), tree_vector_builder::build(), build_uniform_cst(), INTEGRAL_TYPE_P, tree_vector_builder::new_vector(), NULL_TREE, wi::popcount(), wi::to_wide(), TREE_CODE, TREE_TYPE, ty, uniform_integer_cst_p(), unsigned_type_for(), vector_cst_elt(), VECTOR_CST_NELTS, VECTOR_INTEGER_TYPE_P, and wide_int_to_tree().
bool block_may_fallthru | ( | const_tree | block | ) |
Try to determine if we can fall out of the bottom of BLOCK. This guess need not be 100% accurate; simply be conservative and return true if we don't know. This is used only to avoid stupidly generating extra code. If we're wrong, we'll just delete the extra code later.
References BIND_EXPR_BODY, block_may_fallthru(), lang_hooks::block_may_fallthru, call_expr_flags(), COND_EXPR_ELSE, COND_EXPR_THEN, CONST_CAST_TREE, ECF_NORETURN, expr_last(), SWITCH_ALL_CASES_P, SWITCH_BODY, TREE_CODE, TREE_OPERAND, and try_catch_may_fallthru().
Referenced by block_may_fallthru(), shortcut_cond_expr(), and try_catch_may_fallthru().
location_t * block_nonartificial_location | ( | tree | block | ) |
If BLOCK is inlined from an __attribute__((__artificial__)) routine, return pointer to location from where it has been called.
References BLOCK_ABSTRACT_ORIGIN, BLOCK_SOURCE_LOCATION, BLOCK_SUPERCONTEXT, DECL_ATTRIBUTES, DECL_DECLARED_INLINE_P, lookup_attribute(), NULL, and TREE_CODE.
Referenced by gimple_nonartificial_location(), and tree_nonartificial_location().
tree block_ultimate_origin | ( | const_tree | block | ) |
Determine the "ultimate origin" of a block.
References BLOCK_ABSTRACT_ORIGIN, BLOCK_ORIGIN, DECL_ORIGIN, DECL_P, gcc_checking_assert, and NULL_TREE.
Referenced by compute_discriminator(), dump_gimple_debug(), dump_scope_block(), inlined_polymorphic_ctor_dtor_block_p(), noncall_stmt_may_be_vtbl_ptr_store(), and remove_unused_scope_block_p().
Build an expression of code CODE, data type TYPE, and operands as specified. Expressions and reference nodes can be created this way. Constants, decls, types and misc nodes cannot be. We define 5 non-variadic functions, from 0 to 4 arguments. This is enough for all extant tree codes.
References gcc_assert, make_node(), PASS_MEM_STAT, TREE_CODE_LENGTH, and TREE_TYPE.
Referenced by asan_pp_string(), assign_parms(), build_and_jump(), build_call_expr_loc_array(), build_call_nofold_loc(), build_empty_stmt(), build_fn_info(), build_info(), build_invariant_address(), build_predict_expr(), build_string_literal(), bump_vector_ptr(), canonicalize_addr_expr(), rt_bb_visited::check(), convert_to_fixed(), convert_to_integer_1(), convert_to_real_1(), convert_to_vector(), convert_tramp_reference_op(), copy_reference_ops_from_ref(), copy_tree_body_r(), coverage_obj_fn(), create_one_component_var(), create_task_copyfn(), create_waw_or_war_checks(), declare_return_variable(), execute_update_addresses_taken(), expand_builtin_cexpi(), expand_call_inline(), expand_complex_asm(), expand_complex_libcall(), expand_complex_move(), expand_DEFERRED_INIT(), expand_expr_real_1(), expand_ifn_atomic_compare_exchange_into_call(), expand_omp_atomic_cas(), expand_omp_atomic_load(), expand_omp_atomic_pipeline(), expand_omp_atomic_store(), expand_omp_for_generic(), expand_omp_target(), extract_component(), fixup_vla_decls(), fold_binary_loc(), fold_build_cond_expr(), fold_builtin_atomic_compare_exchange(), fold_builtin_interclass_mathfn(), fold_builtin_memcmp(), fold_builtin_n(), fold_builtin_varargs(), fold_gimple_assign(), force_expr_to_var_cost(), forward_propagate_addr_expr_1(), gather_mem_refs_stmt(), gimple_assign_rhs_to_tree(), gimple_build(), gimple_expand_vec_cond_expr(), gimple_fold_indirect_ref(), gimple_lower_bitint(), gimplify_call_expr(), gimplify_init_constructor(), gimplify_init_ctor_eval(), gimplify_modify_expr_complex_part(), gimplify_modify_expr_to_memset(), gimplify_omp_affinity(), gimplify_omp_depend(), initialize_argument_information(), initialize_data_dependence_relation(), insert_init_stmt(), instrument_object_size(), ipa_get_jf_ancestor_result(), ipa_read_jump_function(), ipa_simd_modify_stmt_ops(), lower_omp_for_scan(), lower_omp_target(), lower_rec_simd_input_clauses(), lower_reduction_clauses(), match_arith_overflow(), match_uaddc_usubc(), maybe_build_generic_op(), maybe_instrument_pointer_overflow(), maybe_optimize_ubsan_ptr_ifn(), maybe_rewrite_mem_ref_base(), maybe_trim_complex_store(), ipa_param_body_adjustments::modify_expression(), omp_apply_tile(), output_constant(), output_gimple_stmt(), prepare_target_mem_ref_lvalue(), record_equivalences_from_stmt(), remap_vla_decls(), rhs_to_tree(), self_referential_size(), shortcut_cond_expr(), shortcut_cond_r(), simd_clone_adjust(), simplify_permutation(), simplify_vector_constructor(), sra_modify_expr(), thunk_adjust(), undistribute_bitref_for_vector(), update_parameter_components(), vect_add_slp_permutation(), vect_build_one_gather_load_call(), vect_build_one_scatter_store_call(), vect_create_addr_base_for_vector_ref(), vect_create_constant_vectors(), vect_create_epilog_for_reduction(), vect_create_partial_epilog(), vect_maybe_permute_loop_masks(), vect_recog_bool_pattern(), vector_element(), vectorizable_assignment(), vectorizable_bswap(), vectorizable_induction(), vectorizable_load(), vectorizable_operation(), vectorizable_simd_clone_call(), vectorizable_store(), vectorize_slp_instance_root_stmt(), verify_bb_vtables(), rt_bb_visited::vword(), and wrap_refs().
References gcc_assert, integer_zerop(), make_node(), PASS_MEM_STAT, POINTER_TYPE_P, PROCESS_ARG, ptrofftype_p(), sizetype, tcc_binary, tcc_comparison, tcc_reference, TREE_CODE, TREE_CODE_CLASS, TREE_CODE_LENGTH, TREE_CONSTANT, TREE_OPERAND, TREE_READONLY, TREE_SIDE_EFFECTS, TREE_THIS_VOLATILE, TREE_TYPE, and TYPE_PRECISION.
Referenced by ao_ref_init_from_ptr_and_range(), ao_ref_init_from_vn_reference(), asan_store_shadow_bytes(), build_builtin_expect_predicate(), build_polynomial_chrec(), build_shadow_mem_access(), build_simple_mem_ref_loc(), build_vec_series(), bundle_sizes(), canonicalize_cond_expr_cond(), chrec_fold_plus_1(), cond_store_replacement(), convert_to_complex_1(), convert_to_integer_1(), create_array_ref(), create_component_ref_by_pieces_1(), create_parallel_loop(), create_task_copyfn(), edge_info::derive_equivalences(), detect_type_change_ssa(), do_compare(), do_jump(), do_store_flag(), dr_analyze_indices(), dummy_object(), eliminate_dom_walker::eliminate_stmt(), expand_builtin_cexpi(), expand_builtin_va_copy(), expand_DIVMOD(), expand_expr_real_1(), expand_gimple_stmt_1(), expand_ifn_va_arg_1(), expand_oacc_for(), expand_omp_atomic_cas(), expand_omp_atomic_pipeline(), expand_omp_for_generic(), expand_omp_for_ordered_loops(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_sections(), expand_omp_simd(), expand_omp_target(), expand_omp_taskloop_for_inner(), expand_parallel_call(), expand_thunk(), extract_muldiv_1(), fold_binary_loc(), fold_build_cond_expr(), fold_builtin_expect(), fold_builtin_sincos(), fold_truth_andor_1(), fold_unary_loc(), force_gimple_operand_1(), forward_propagate_addr_expr_1(), get_mem_refs_of_builtin_call(), gimple_assign_rhs_to_tree(), gimple_divmod_values_to_profile(), gimple_lower_bitint(), gimple_simplify(), gimplify_adjust_omp_clauses_1(), gimplify_asm_expr(), gimplify_assign(), gimplify_call_expr(), gimplify_cond_expr(), gimplify_decl_expr(), gimplify_expr(), gimplify_init_constructor(), gimplify_init_ctor_eval(), gimplify_init_ctor_eval_range(), gimplify_modify_expr_complex_part(), gimplify_modify_expr_rhs(), gimplify_omp_depend(), gimplify_omp_dispatch(), gimplify_omp_for(), gimplify_omp_loop_xform(), gimplify_omp_taskloop_expr(), gimplify_parameters(), gimplify_self_mod_expr(), gimplify_target_expr(), gimplify_variable_sized_compare(), gimplify_vla_decl(), initialize_data_dependence_relation(), instrument_bool_enum_load(), instrument_expr(), internal_get_tmp_var(), lhd_omp_assignment(), loc_list_from_tree_1(), lower_coro_builtin(), lower_emutls_1(), lower_lastprivate_clauses(), lower_omp_for_lastprivate(), lower_omp_for_scan(), lower_omp_master(), lower_omp_ordered(), lower_omp_scan(), lower_omp_single_copy(), lower_omp_target(), lower_omp_task_reductions(), lower_rec_input_clauses(), lower_reduction_clauses(), make_new_ssa_for_def(), make_tree(), match_arith_overflow(), maybe_fold_comparisons_from_match_pd(), maybe_make_indirect(), maybe_with_size_expr(), oacc_xform_loop(), omp_apply_tile(), omp_resolve_clause_dependencies(), optimize_atomic_bit_test_and(), optimize_bit_field_compare(), optimize_stdarg_builtin(), output_gimple_stmt(), predicate_load_or_store(), record_edge_info(), ref_at_iteration(), rewrite_use_address(), self_referential_size(), set_mem_attributes_minus_bitpos(), simd_clone_init_simd_arrays(), simplify_builtin_call(), spaceship_replacement(), std_gimplify_va_arg_expr(), store_constructor(), task_reduction_read(), try_casesi(), ubsan_encode_value(), unswitch_predicate::unswitch_predicate(), value_replacement(), vect_setup_realignment(), vectorizable_load(), vectorizable_simd_clone_call(), vectorizable_store(), rt_bb_visited::vindex(), visit_loadstore(), visit_reference_op_store(), voidify_wrapper_expr(), rt_bb_visited::vword(), and wrap_refs().
References gcc_assert, make_node(), NULL_TREE, PASS_MEM_STAT, PROCESS_ARG, tcc_reference, tcc_vl_exp, TREE_CODE_CLASS, TREE_CODE_LENGTH, TREE_READONLY, TREE_SIDE_EFFECTS, TREE_THIS_VOLATILE, TREE_TYPE, and void_type_node.
Referenced by build_init_call_stmt(), build_user_friendly_ref_for_offset(), compute_access_stride(), create_call_for_reduction_1(), create_component_ref_by_pieces_1(), create_loads_and_stores_for_name(), create_loads_for_reductions(), create_stores_for_reduction(), create_task_copyfn(), decl_init_size(), eliminate_dom_walker::eliminate_stmt(), estimate_numbers_of_iterations(), expand_expr_real_1(), finalize_nesting_tree_1(), fold_build_cond_expr(), fold_unary_loc(), get_frame_field(), get_local_debug_decl(), get_nonlocal_debug_decl(), get_static_chain(), gimple_assign_rhs_to_tree(), gimple_build(), gimple_gen_ic_func_profiler(), gimple_gen_ic_profiler(), gimple_push_cleanup(), gimplify_call_expr(), gimplify_cond_expr(), gimplify_exit_expr(), gimplify_init_ctor_eval(), gimplify_omp_affinity(), gimplify_omp_depend(), gimplify_omp_for(), gimplify_omp_loop(), gimplify_omp_loop_xform(), gimplify_scan_omp_clauses(), gimplify_transaction(), instrument_derefs(), instrument_object_size(), loc_list_from_tree_1(), lookup_field_for_decl(), lower_bitfield(), lower_omp_master(), lower_omp_single_copy(), lower_omp_target(), lower_omp_task_reductions(), lower_rec_input_clauses(), maybe_build_generic_op(), maybe_rewrite_mem_ref_base(), omp_apply_tile(), omp_build_component_ref(), ompdevlow_adjust_simt_enter(), ref_at_iteration(), shortcut_cond_expr(), shortcut_cond_r(), simplify_bitfield_ref(), simplify_vector_constructor(), spaceship_replacement(), totally_scalarize_subtree(), tree_vec_extract(), undistribute_bitref_for_vector(), value_replacement(), vect_add_slp_permutation(), vect_create_epilog_for_reduction(), vect_create_partial_epilog(), vect_expand_fold_left(), vect_recog_cond_expr_convert_pattern(), vectorizable_live_operation(), vectorizable_live_operation_1(), vectorizable_shift(), and vectorizable_simd_clone_call().
tree build4 | ( | enum tree_code | code, |
tree | tt, | ||
tree | arg0, | ||
tree | arg1, | ||
tree | arg2, | ||
tree arg3 | MEM_STAT_DECL ) |
Referenced by tree_switch_conversion::switch_conversion::build_one_array(), build_string_literal(), build_user_friendly_ref_for_offset(), canonicalize_addr_expr(), create_component_ref_by_pieces_1(), expand_function_start(), expand_omp_for_generic(), expand_omp_for_ordered_loops(), get_target_arguments(), gimple_fold_indirect_ref(), gimplify_init_ctor_eval(), gimplify_init_ctor_eval_range(), gimplify_omp_depend(), ipa_simd_modify_function_body(), lower_depend_clauses(), lower_lastprivate_clauses(), lower_omp_scan(), lower_omp_task_reductions(), lower_rec_input_clauses(), lower_rec_simd_input_clauses(), omp_apply_tile(), read_vector_array(), simd_clone_adjust(), simd_clone_init_simd_arrays(), substitute_in_expr(), substitute_placeholder_in_expr(), totally_scalarize_subtree(), tree_coverage_counter_addr(), tree_coverage_counter_ref(), ubsan_encode_value(), update_nonlocal_goto_save_area(), vector_element(), vectorizable_simd_clone_call(), and write_vector_array().
tree build5 | ( | enum tree_code | code, |
tree | tt, | ||
tree | arg0, | ||
tree | arg1, | ||
tree | arg2, | ||
tree | arg3, | ||
tree arg4 | MEM_STAT_DECL ) |
Referenced by ao_ref_init_from_vn_reference(), create_component_ref_by_pieces_1(), and create_mem_ref_raw().
Create a variant of type T with alignment ALIGN which is measured in bits.
References build_variant_type_copy(), check_aligned_type(), SET_TYPE_ALIGN, type(), TYPE_ALIGN, TYPE_MAIN_VARIANT, TYPE_NEXT_VARIANT, TYPE_PACKED, and TYPE_USER_ALIGN.
Referenced by build_ref_for_offset(), clear_padding_flush(), compute_avail(), copy_ref_info(), expand_call_mem_ref(), fill_vector_of_new_param_types(), fold_unary_loc(), gather_mem_refs_stmt(), get_references_in_stmt(), gimple_fold_builtin_memory_op(), gimple_fold_partial_load_store_mem_ref(), gimplify_expr(), ipa_param_adjustments::modify_call(), ref_at_iteration(), replace_ref(), rewrite_use_address(), vectorizable_load(), and vectorizable_store().
Return an integer of type TYPE containing all 1's in as much precision as it contains, or a complex or vector whose subparts are such integers.
References build_all_ones_cst(), build_complex(), build_minus_one_cst(), TREE_CODE, and TREE_TYPE.
Referenced by analyze_and_compute_bitwise_induction_effect(), build_all_ones_cst(), do_compare(), eliminate_not_pairs(), eliminate_plus_minus_pair(), fold_while_ult(), get_range_strlen(), get_range_strlen(), get_range_strlen_dynamic(), get_range_strlen_dynamic(), get_range_strlen_phi(), get_range_strlen_tree(), lower_omp_for_scan(), native_interpret_vector_part(), neutral_op_for_reduction(), undistribute_bitref_for_vector(), vect_create_constant_vectors(), vect_gen_loop_len_mask(), vect_init_vector(), vect_recog_bool_pattern(), and vect_set_loop_condition_normal().
Return a function call to the appropriate builtin alloca variant. SIZE is the size to be allocated. ALIGN, if non-zero, is the requested alignment of the allocated area. MAX_SIZE, if non-negative, is an upper bound for SIZE in case it is not a fixed value.
References build_call_expr(), builtin_decl_explicit(), and size_int.
Referenced by gimplify_parameters(), and gimplify_vla_decl().
Wrapper around build_array_type_1 with SHARED set to true.
References build_array_type_1().
Referenced by attr_access::array_as_string(), asan_pp_string(), assemble_crc_table(), build_array_type_nelts(), build_fn_info_type(), build_info(), build_info_type(), tree_switch_conversion::switch_conversion::build_one_array(), build_printable_array_type(), build_string_literal(), coverage_counter_alloc(), coverage_end_function(), coverage_obj_finish(), get_descriptor_type(), get_memory_rtx(), get_nl_goto_field(), get_trampoline_type(), gimplify_omp_depend(), init_eh(), reconstruct_complex_type(), resolve_addr_in_expr(), scan_sharing_clauses(), store_expr(), and ubsan_get_type_descriptor_type().
tree build_array_type_1 | ( | tree | elt_type, |
tree | index_type, | ||
bool | typeless_storage, | ||
bool | shared, | ||
bool | set_canonical ) |
Construct, lay out and return the type of arrays of elements with ELT_TYPE and number of elements specified by the range of values of INDEX_TYPE. If TYPELESS_STORAGE is true, TYPE_TYPELESS_STORAGE flag is set on the type. If SHARED is true, reuse such a type that has already been constructed. If SET_CANONICAL is true, compute TYPE_CANONICAL from the element type.
References build_array_type_1(), error(), gcc_unreachable, type_hash::hash, integer_type_node, layout_type(), make_node(), NULL_TREE, SET_TYPE_STRUCTURAL_EQUALITY, TREE_CODE, TREE_TYPE, TYPE_ADDR_SPACE, TYPE_CANONICAL, TYPE_DOMAIN, type_hash_canon(), type_hash_canon_hash(), TYPE_STRUCTURAL_EQUALITY_P, and TYPE_TYPELESS_STORAGE.
Referenced by build_array_type(), build_array_type_1(), and build_nonshared_array_type().
tree build_array_type_nelts | ( | tree | elt_type, |
poly_uint64 | nelts ) |
Return a representation of ELT_TYPE[NELTS], using indices of type sizetype.
References build_array_type(), build_index_type(), and size_int.
Referenced by asan_finish_file(), build_printable_array_type(), rt_bb_visited::check(), array_bounds_checker::check_mem_ref(), clear_padding_flush(), create_tmp_simd_array(), create_vector_array(), expand_omp_for_generic(), expand_omp_ordered_source_sink(), expand_vector_ubsan_overflow(), finish_bitfield_representative(), fold_builtin_alloca_with_align(), get_target_arguments(), gimple_fold_builtin_memory_op(), gimple_lower_bitint(), gimplify_init_ctor_eval(), gimplify_omp_for(), lower_depend_clauses(), lower_omp_target(), lower_omp_task_reductions(), lower_rec_input_clauses(), lower_rec_simd_input_clauses(), maybe_trim_constructor_store(), omp_finish_file(), shrink_simd_arrays(), simd_clone_adjust(), simd_clone_adjust_return_type(), ubsan_expand_vptr_ifn(), ubsan_source_location(), ubsan_type_descriptor(), vector_element(), vectorizable_load(), vectorizable_store(), and rt_bb_visited::vtype().
Create an atomic variant node for TYPE. This routine is called during initialization of data types to create the 5 basic atomic types. The generic build_variant_type function requires these to already be set up in order to function properly, so cannot be called from there. If ALIGN is non-zero, then ensure alignment is overridden to this value.
References build_variant_type_copy(), get_qualified_type(), SET_TYPE_ALIGN, set_type_quals(), and TYPE_QUAL_ATOMIC.
Referenced by build_common_tree_nodes().
tree build_bitint_type | ( | unsigned HOST_WIDE_INT | precision, |
int | unsignedp ) |
Builds a signed or unsigned _BitInt(PRECISION) type.
References inchash::add_expr(), bitint_type_cache, inchash::hash::end(), fixup_signed_type(), fixup_unsigned_type(), gcc_checking_assert, make_node(), MAX_INT_CACHED_PREC, NULL, type_hash_canon(), TYPE_MAX_VALUE, TYPE_PRECISION, and vec_safe_grow_cleared().
Referenced by analyze_access_subtree(), gimple_lower_bitint(), omp_extract_for_data(), and signed_or_unsigned_type_for().
BLOCK nodes are used to represent the structure of binding contours and declarations, once those contours have been exited and their contents compiled. This information is used for outputting debugging info.
References BLOCK_CHAIN, BLOCK_SUBBLOCKS, BLOCK_SUPERCONTEXT, BLOCK_VARS, and make_node().
tree build_builtin_unreachable | ( | location_t | loc | ) |
Build a call to __builtin_unreachable, possibly rewritten by -fsanitize=unreachable. Use this rather than the above when practical.
References build_call_expr_loc(), NULL_TREE, and sanitize_unreachable_fn().
Referenced by fold_builtin_0().
Helper function for build_call_* functions; build a CALL_EXPR with indicated RETURN_TYPE, FN, and NARGS, but do not initialize any of the argument slots.
References build_vl_exp(), CALL_EXPR_FN, CALL_EXPR_STATIC_CHAIN, NULL, and TREE_TYPE.
Referenced by build_call_array_loc(), build_call_expr_internal_loc_array(), build_call_valist(), and build_call_vec().
tree build_call_array_loc | ( | location_t | loc, |
tree | return_type, | ||
tree | fn, | ||
int | nargs, | ||
const tree * | args ) |
Build a CALL_EXPR of class tcc_vl_exp with the indicated RETURN_TYPE and FN and a null static chain slot. NARGS is the number of call arguments which are specified as a tree array ARGS.
References build_call_1(), CALL_EXPR_ARG, i, process_call_operands(), and SET_EXPR_LOCATION.
Referenced by fold_build_call_array_loc(), and gimplify_call_expr().
Like build_call_expr_loc (UNKNOWN_LOCATION, ...). Duplicated because varargs macros aren't supported by all bootstrap compilers.
References ap, build_call_expr_loc_array(), i, and UNKNOWN_LOCATION.
Referenced by asan_dynamic_init_call(), asan_finish_file(), build_alloca_call_expr(), build_cdtor(), build_cltz_expr(), build_gcov_exit_decl(), build_init_ctor(), build_popcount_expr(), convert_to_integer_1(), convert_to_real_1(), default_external_stack_protect_fail(), default_hidden_stack_protect_fail(), emit_block_op_via_libcall(), emutls_common_1(), expand_builtin_trap(), expand_DEFERRED_INIT(), expand_omp_atomic_mutex(), expand_omp_atomic_pipeline(), expand_omp_for_generic(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_task_call(), expand_taskwait_call(), fold_builtin_interclass_mathfn(), hwasan_finish_file(), lower_rec_input_clauses(), set_storage_via_libcall(), sjlj_emit_function_enter(), strdup_object_size(), and tsan_finish_file().
tree build_call_expr_internal_loc | ( | location_t | loc, |
enum internal_fn | ifn, | ||
tree | type, | ||
int | n, | ||
... ) |
Build internal call expression. This is just like CALL_EXPR, except its CALL_EXPR_FN is NULL. It will get gimplified later into ordinary internal function.
References ap, build_call_expr_internal_loc_array(), and i.
Referenced by build_asan_poison_call_expr(), build_cltz_expr(), build_popcount_expr(), create_ifn_alias_checks(), expand_omp_atomic_pipeline(), expand_omp_simd(), fold_builtin_addc_subc(), fold_builtin_arith_overflow(), fold_builtin_bit_query(), gimple_add_init_for_auto_var(), gimplify_modify_expr(), gimplify_va_arg_expr(), lower_lastprivate_clauses(), lower_oacc_reductions(), lower_rec_input_clauses(), and omp_adjust_chunk_size().
tree build_call_expr_internal_loc_array | ( | location_t | loc, |
internal_fn | ifn, | ||
tree | type, | ||
int | n, | ||
const tree * | args ) |
Build an internal call to IFN, with arguments ARGS[0:N-1] and with return type TYPE. This is just like CALL_EXPR, except its CALL_EXPR_FN is NULL. It will get gimplified later into an ordinary internal function.
References build_call_1(), CALL_EXPR_ARG, CALL_EXPR_IFN, i, NULL_TREE, process_call_operands(), and SET_EXPR_LOCATION.
Referenced by build_call_expr_internal_loc(), and maybe_build_call_expr_loc().
Conveniently construct a function call expression. FNDECL names the function to be called, N is the number of arguments, and the "..." parameters are the argument expressions.
References ap, build_call_expr_loc_array(), and i.
Referenced by build_builtin_expect_predicate(), build_builtin_unreachable(), build_cxa_dtor_registrations(), build_tm_abort_call(), create_task_copyfn(), expand_omp_atomic_fetch_op(), fold_builtin_bit_query(), fold_builtin_carg(), fold_builtin_classify(), fold_builtin_sincos(), fold_builtin_strcspn(), fold_builtin_strpbrk(), fold_negate_expr_1(), gimplify_bind_expr(), gimplify_call_expr(), gimplify_omp_depend(), gimplify_scalar_mode_aggregate_compare(), gimplify_va_arg_expr(), gimplify_variable_sized_compare(), instrument_object_size(), lower_omp_critical(), lower_omp_master(), lower_omp_single_copy(), lower_omp_target(), lower_rec_input_clauses(), optimize_stdarg_builtin(), ubsan_build_overflow_builtin(), and ubsan_instrument_float_cast().
Conveniently construct a function call expression. FNDECL names the function to be called and N arguments are passed in the array ARGARRAY.
References build1(), build_pointer_type(), fold_build_call_array_loc(), and TREE_TYPE.
Referenced by build_call_expr(), build_call_expr_loc(), build_call_expr_loc_vec(), maybe_build_call_expr_loc(), and rewrite_call_expr_valist().
Conveniently construct a function call expression. FNDECL names the function to be called and the arguments are passed in the vector VEC.
References build_call_expr_loc_array(), vec_safe_address(), and vec_safe_length().
Referenced by expand_parallel_call(), expand_teams_call(), and self_referential_size().
Build a CALL_EXPR of class tcc_vl_exp with the indicated RETURN_TYPE and FN and a null static chain slot. NARGS is the number of call arguments which are specified as "..." arguments.
References build_call_valist().
Referenced by expand_builtin_cexpi(), expand_ifn_atomic_bit_test_and(), and expand_ifn_atomic_op_fetch_cmp_0().
Build a CALL_EXPR of class tcc_vl_exp with the indicated RETURN_TYPE and FN and a null static chain slot. NARGS is the number of call arguments which are specified as a va_list ARGS.
References build_call_1(), CALL_EXPR_ARG, i, and process_call_operands().
Referenced by build_call_nary(), and build_call_nofold_loc().
Like build_call_array, but takes a vec.
References build_call_1(), CALL_EXPR_ARG, FOR_EACH_VEC_SAFE_ELT, process_call_operands(), and vec_safe_length().
Referenced by expand_builtin(), and expand_ifn_atomic_compare_exchange_into_call().
Create a CASE_LABEL_EXPR tree node and return it.
References CASE_CHAIN, CASE_HIGH, CASE_LABEL, CASE_LOW, DECL_SOURCE_LOCATION, make_node(), NULL_TREE, SET_EXPR_LOCATION, TREE_TYPE, and void_type_node.
tree build_clobber | ( | tree | type, |
enum clobber_kind | kind ) |
Return a node of type TYPE for which TREE_CLOBBER_P is true.
References build_constructor(), CLOBBER_KIND, NULL, and TREE_THIS_VOLATILE.
Referenced by add_clobbers_to_eh_landing_pad(), rt_bb_visited::check(), clobber_subtree(), detach_value(), execute_update_addresses_taken(), expand_call_inline(), expand_omp_for_generic(), gimplify_bind_expr(), gimplify_parameters(), gimplify_target_expr(), insert_clobber_before_stack_restore(), lower_depend_clauses(), lower_omp_scope(), lower_omp_single(), lower_omp_target(), lower_omp_taskreg(), lower_rec_input_clauses(), lower_rec_simd_input_clauses(), ompdevlow_adjust_simt_enter(), and vect_clobber_variable().
void build_common_builtin_nodes | ( | void | ) |
Call this function after instantiating all builtins that the language front end cares about. This will build the rest of the builtins and internal functions that are relied upon by the tree optimizers and the middle-end.
References build_function_type(), build_function_type_list(), build_pointer_type(), BUILT_IN_COMPLEX_DIV_MIN, built_in_names, builtin_decl_explicit(), builtin_decl_explicit_p(), const_ptr_type_node, ECF_COLD, ECF_CONST, ECF_LEAF, ECF_MALLOC, ECF_NORETURN, ECF_NOTHROW, ECF_PURE, ECF_TM_PURE, ECF_XTHROW, GET_MODE_NAME, global_options, init_internal_fns(), integer_type_node, local_define_builtin(), NULL, NULL_TREE, ptr_type_node, size_type_node, targetm, TREE_TYPE, type(), lang_hooks_for_types::type_for_mode, lang_hooks::types, UI_SJLJ, void_list_node, and void_type_node.
void build_common_tree_nodes | ( | bool | signed_char | ) |
Create nodes for all integer types (and error_mark_node) using the sizes of C datatypes. SIGNED_CHAR specifies whether char is signed.
Make fixed-point nodes based on sat/non-sat and signed/unsigned.
Make fixed-point type nodes based on four different widths.
Make fixed-point mode nodes based on sat/non-sat and signed/unsigned.
References access_private_node, access_protected_node, access_public_node, arm_bfloat_half_format, atomicDI_type_node, atomicHI_type_node, atomicQI_type_node, atomicSI_type_node, atomicTI_type_node, bfloat16_type_node, bitsize_int, bitsize_one_node, bitsize_unit_node, bitsize_zero_node, BOOL_TYPE_SIZE, boolean_false_node, boolean_true_node, boolean_type_node, build_atomic_base(), build_complex_type(), build_int_cst(), build_nonstandard_integer_type(), build_pointer_type(), build_tree_list(), build_type_variant, build_variant_type_copy(), builtin_structptr_types, char_type_node, CHAR_TYPE_SIZE, chrec_dont_know, chrec_known, complex_double_type_node, complex_float_type_node, COMPLEX_FLOATN_NX_TYPE_NODE, complex_integer_type_node, complex_long_double_type_node, const_ptr_type_node, DECIMAL128_TYPE_SIZE, DECIMAL32_TYPE_SIZE, DECIMAL64_TYPE_SIZE, dfloat128_type_node, dfloat32_type_node, dfloat64_type_node, dfloat64x_type_node, double_ptr_type_node, double_type_node, error_mark_node, float128_type_node, float128t_type_node, float_ptr_type_node, float_type_node, FLOATN_NX_TYPE_NODE, floatn_nx_types, gcc_unreachable, get_identifier(), GET_MODE_BITSIZE(), GET_MODE_PRECISION(), i, initialize_sizetypes(), int_n_data, int_n_enabled_p, int_n_trees, INT_TYPE_SIZE, intDI_type_node, integer_minus_one_node, integer_one_node, integer_ptr_type_node, integer_type_node, integer_types, integer_zero_node, intHI_type_node, intQI_type_node, intSI_type_node, intTI_type_node, itk_intN_0, itk_unsigned_intN_0, layout_type(), long_double_ptr_type_node, long_double_type_node, long_integer_type_node, long_long_integer_type_node, LONG_LONG_TYPE_SIZE, long_long_unsigned_type_node, LONG_TYPE_SIZE, long_unsigned_type_node, MAKE_FIXED_MODE_NODE, MAKE_FIXED_TYPE_NODE_FAMILY, make_node(), make_or_reuse_type(), make_signed_type(), make_unsigned_type(), null_pointer_node, NULL_TREE, NUM_FLOATN_NX_TYPES, POINTER_SIZE, pointer_sized_int_node, ptr_type_node, PTRDIFF_TYPE, ptrdiff_type_node, REAL_MODE_FORMAT, SA, SET_TYPE_ALIGN, SET_TYPE_MODE, short_integer_type_node, SHORT_TYPE_SIZE, short_unsigned_type_node, signed_char_type_node, int_n_trees_t::signed_type, size_int, size_one_node, SIZE_TYPE, size_type_node, size_zero_node, targetm, TI_DOUBLE_TYPE, TI_FLOAT_TYPE, TI_LONG_DOUBLE_TYPE, poly_int< N, C >::to_constant(), TREE_CODE, TREE_SET_CODE, TREE_TYPE, TYPE_MAX_VALUE, TYPE_MIN_VALUE, TYPE_PRECISION, TYPE_STRING_FLAG, TYPE_USER_ALIGN, uint128_type_node, uint16_type_node, uint32_type_node, uint64_type_node, unsigned_char_type_node, unsigned_intDI_type_node, unsigned_intHI_type_node, unsigned_intQI_type_node, unsigned_intSI_type_node, unsigned_intTI_type_node, int_n_trees_t::unsigned_type, unsigned_type_node, va_list_type_node, void_list_node, void_node, and void_type_node.
Return a newly constructed COMPLEX_CST node whose value is specified by the real and imaginary parts REAL and IMAG. Both REAL and IMAG should be constant nodes. TYPE, if specified, will be the type of the COMPLEX_CST; otherwise a new type will be made.
References build_complex_type(), CONSTANT_CLASS_P, gcc_assert, make_node(), TREE_IMAGPART, TREE_OVERFLOW, TREE_REALPART, TREE_TYPE, and type().
Referenced by build_all_ones_cst(), build_complex_inf(), build_each_one_cst(), build_minus_one_cst(), build_one_cst(), build_zero_cst(), const_binop(), const_binop(), const_unop(), do_mpc_ckconv(), fold_const_call(), fold_const_call(), fold_const_call_1(), fold_const_call_1(), fold_negate_expr_1(), gimple_fold_call(), gimplify_init_constructor(), gimplify_modify_expr_complex_part(), maybe_optimize_arith_overflow(), and native_interpret_complex().
Build a complex (inf +- 0i), such as for the result of cproj. TYPE is the complex tree type of the result. If NEG is true, the imaginary zero is negative.
References build_complex(), build_real(), dconst0, dconstinf, REAL_VALUE_TYPE, and TREE_TYPE.
Create a complex type whose components are COMPONENT_TYPE. If NAMED is true, the type is given a TYPE_NAME. We do not always do so because this creates a DECL node and thus make the DECL_UIDs dependent on the type canonicalization hashtable, which is GC-ed, so the DECL_UIDs would not be stable wrt garbage collection.
References build_complex_type(), build_decl(), build_qualified_type(), char_type_node, COMPLETE_TYPE_P, FIXED_POINT_TYPE_P, gcc_assert, gcc_checking_assert, get_identifier(), type_hash::hash, integer_type_node, INTEGRAL_TYPE_P, long_integer_type_node, long_long_integer_type_node, long_long_unsigned_type_node, long_unsigned_type_node, make_node(), NULL, SCALAR_FLOAT_TYPE_P, SET_TYPE_STRUCTURAL_EQUALITY, short_integer_type_node, short_unsigned_type_node, signed_char_type_node, TREE_TYPE, TYPE_CANONICAL, type_hash_canon(), type_hash_canon_hash(), TYPE_MAIN_VARIANT, TYPE_NAME, TYPE_QUALS, TYPE_STRUCTURAL_EQUALITY_P, UNKNOWN_LOCATION, unsigned_char_type_node, and unsigned_type_node.
Referenced by bitwise_type_for_mode(), build_common_tree_nodes(), build_complex(), build_complex_type(), convert_to_divmod(), expand_builtin_cexpi(), expand_doubleword_mod(), expand_omp_atomic_cas(), expand_omp_atomic_pipeline(), fold_builtin_addc_subc(), fold_builtin_arith_overflow(), fold_builtin_atomic_compare_exchange(), fold_builtin_sincos(), gimple_fold_call(), lower_omp_for_scan(), match_arith_overflow(), match_uaddc_usubc(), maybe_optimize_arith_overflow(), and signed_or_unsigned_type_for().
tree build_constructor | ( | tree | type, |
vec< constructor_elt, va_gc > *vals | MEM_STAT_DECL ) |
Return a new CONSTRUCTOR node whose type is TYPE and whose values are in the vec pointed to by VALS.
References CONSTRUCTOR_ELTS, make_node(), PASS_MEM_STAT, recompute_constructor_flags(), TREE_TYPE, and type().
Referenced by asan_add_global(), asan_finish_file(), build_clobber(), build_constructor_from_list(), build_constructor_from_vec(), build_constructor_single(), build_constructor_va(), build_fn_info(), build_info(), tree_switch_conversion::switch_conversion::build_one_array(), build_vector_from_val(), build_zero_cst(), clear_padding_flush(), coverage_obj_finish(), create_expression_by_pieces(), default_emutls_var_init(), execute_update_addresses_taken(), expand_expr_real_1(), expand_omp_for_generic(), expand_vector_condition(), expand_vector_conversion(), expand_vector_piecewise(), fold_vec_perm(), gimple_build_vector(), lower_omp_target(), lower_omp_task_reductions(), lower_send_shared_vars(), lower_vec_perm(), maybe_trim_constructor_store(), ipa_param_body_adjustments::modify_assignment(), native_interpret_aggregate(), omp_finish_file(), optimize_memcpy_to_memset(), ubsan_create_data(), vectorizable_load(), vectorizable_simd_clone_call(), vectorize_slp_instance_root_stmt(), vn_reference_lookup_3(), and vn_walk_cb_data::vn_walk_cb_data().
Return a new CONSTRUCTOR node whose type is TYPE and whose values are in a list pointed to by VALS.
References build_constructor(), CONSTRUCTOR_APPEND_ELT, list_length(), NULL, TREE_CHAIN, TREE_PURPOSE, TREE_VALUE, and vec_alloc().
Referenced by rt_bb_visited::check().
Return a new CONSTRUCTOR node whose type is TYPE and whose values are in a vector pointed to by VALS. Note that the TREE_PURPOSE fields in the constructor remain null.
References build_constructor(), CONSTRUCTOR_APPEND_ELT, NULL, and NULL_TREE.
Referenced by assemble_crc_table().
Build a CONSTRUCTOR node made of a single initializer, with the specified INDEX and VALUE.
References build_constructor(), and vec_alloc().
Referenced by gimplify_init_ctor_eval().
Return a new CONSTRUCTOR node whose type is TYPE. NELTS is the number of elements, provided as index/value pairs.
References build_constructor(), CONSTRUCTOR_APPEND_ELT, NULL, and vec_alloc().
Referenced by asan_add_global(), create_odr_indicator(), ubsan_source_location(), ubsan_type_descriptor(), and vect_add_slp_permutation().
Create and return a DEBUG_EXPR_DECL node of the given TYPE.
References DECL_ARTIFICIAL, make_node(), SET_DECL_MODE, TREE_TYPE, type(), and TYPE_MODE.
Referenced by avoid_deep_ter_for_debug(), expand_gimple_basic_block(), insert_debug_temp_for_var_def(), ipa_simd_modify_stmt_ops(), make_new_ssa_for_def(), ipa_param_body_adjustments::mark_dead_statements(), ipa_param_adjustments::modify_call(), optimize_atomic_bit_test_and(), ipa_param_body_adjustments::prepare_debug_expressions(), remap_ssa_name(), remove_unused_ivs(), ipa_param_body_adjustments::reset_debug_stmts(), rewrite_debug_stmt_uses(), spaceship_replacement(), tree_function_versioning(), and value_replacement().
Create a DECL_... node of code CODE, name NAME (if non-null) and data type TYPE. We do NOT enter this node in any sort of symbol table. LOC is the location of the decl. layout_decl is used to set up the decl's storage layout. Other slots are initialized to 0 or null pointers.
if (type == error_mark_node) type = integer_type_node;
That is not done, deliberately, so that having error_mark_node as the type can suppress useless errors in the use of this variable.
References DECL_NAME, DECL_SOURCE_LOCATION, layout_decl(), make_node(), PASS_MEM_STAT, TREE_TYPE, and type().
Referenced by add_builtin_type(), add_field_for_name(), add_field_for_reduction(), asan_add_global(), asan_emit_stack_protection(), asan_finish_file(), asan_global_struct(), assemble_crc_table(), assign_parms_augmented_arg_list(), assumption_copy_decl(), build_builtin_function(), build_complex_type(), build_constant_desc(), build_cxa_atexit_decl(), build_dso_handle_decl(), build_fn_decl(), build_fn_info_type(), build_gcov_exit_decl(), build_gcov_info_var_registration(), build_info(), build_info_type(), build_init_ctor(), build_libfunc_function_visibility(), tree_switch_conversion::switch_conversion::build_one_array(), build_personality_function(), build_translation_unit_decl(), build_var(), cgraph_build_static_cdtor_1(), rt_bb_visited::check(), ipa_param_body_adjustments::common_initialization(), copy_decl_to_var(), copy_result_decl_to_var(), copy_var_decl(), coverage_obj_finish(), coverage_obj_init(), create_artificial_label(), create_assumption_fn(), function_reader::create_function(), create_loop_fn(), create_odr_indicator(), create_omp_child_function(), create_stack_guard(), create_tmp_var_raw(), create_vop_var(), default_emutls_var_fields(), default_external_stack_protect_fail(), default_hidden_stack_protect_fail(), default_stack_protect_guard(), dw2_output_indirect_constant_1(), expand_builtin_fork_or_exec(), expand_expr_real_1(), expand_function_start(), expand_omp_target(), expand_thunk(), finish_builtin_struct(), fixup_child_record_type(), get_asan_shadow_memory_dynamic_address_decl(), get_chain_decl(), get_debug_decl(), get_descriptor_type(), get_emutls_init_templ_addr(), get_emutls_object_type(), get_spill_slot_decl(), get_trampoline_type(), gimple_init_gcov_profiler(), gimplify_function_tree(), init_eh(), init_ic_make_global_vars(), install_var_field(), install_var_field(), ipa_tm_create_version_alias(), lhd_simulate_enum_decl(), lhd_simulate_record_decl(), lower_omp_task_reductions(), make_tree(), new_emutls_decl(), oacc_do_neutering(), omp_finish_file(), omp_resolve_declare_variant(), ompdevlow_adjust_simt_enter(), output_comp_unit(), function_reader::parse_mem_expr(), prepare_call_address(), push_dummy_function(), ipa_param_body_adjustments::reset_debug_stmts(), scan_omp_parallel(), scan_omp_single(), scan_omp_target(), scan_omp_task(), scan_omp_teams(), scan_sharing_clauses(), self_referential_size(), separate_decls_in_region(), set_stack_check_libfunc(), simd_clone_adjust_argument_types(), split_complex_args(), store_constructor(), task_copyfn_remap_type(), tree_function_versioning(), ubsan_create_data(), ubsan_expand_vptr_ifn(), ubsan_get_source_location_type(), ubsan_get_type_descriptor_type(), ubsan_type_descriptor(), and weak_finish().
Create a new distinct copy of TYPE. The new type is made its own MAIN_VARIANT. If TYPE requires structural equality checks, the resulting type requires structural equality checks; otherwise, its TYPE_CANONICAL points to itself.
References copy_node(), PASS_MEM_STAT, SET_TYPE_STRUCTURAL_EQUALITY, TYPE_CANONICAL, TYPE_MAIN_VARIANT, TYPE_NEXT_VARIANT, TYPE_POINTER_TO, TYPE_REFERENCE_TO, and TYPE_STRUCTURAL_EQUALITY_P.
Referenced by asan_init_shadow_ptr_types(), build_adjusted_function_type(), build_opaque_vector_type(), build_printable_array_type(), build_type_attribute_qual_variant(), build_variant_type_copy(), distinctify_node_type(), expand_simd_clones(), and simd_clone_adjust().
Return the constant 1 in type TYPE. If TYPE has several elements, each element is set to 1. In particular, this is 1 + i for complex types.
References build_complex(), build_one_cst(), TREE_CODE, and TREE_TYPE.
tree build_empty_stmt | ( | location_t | loc | ) |
Build an empty statement at location LOC.
References build1(), SET_EXPR_LOCATION, size_zero_node, and void_type_node.
Referenced by copy_tree_body_r(), fold_builtin_1(), and gimplify_call_expr().
tree build_fixed | ( | tree | type, |
FIXED_VALUE_TYPE | f ) |
Return a new FIXED_CST node whose type is TYPE and value is F.
References FIXED_VALUE_TYPE, ggc_alloc(), make_node(), TREE_FIXED_CST_PTR, TREE_TYPE, and type().
Referenced by build_minus_one_cst(), build_one_cst(), build_zero_cst(), const_binop(), convert_to_fixed(), fold_convert_const_fixed_from_fixed(), fold_convert_const_fixed_from_int(), fold_convert_const_fixed_from_real(), fold_negate_const(), and native_interpret_fixed().
Builds and returns function declaration with NAME and TYPE.
References build_decl(), DECL_ARTIFICIAL, DECL_EXTERNAL, get_identifier(), input_location, TREE_NOTHROW, and TREE_PUBLIC.
Referenced by expand_builtin_cexpi(), expand_builtin_int_roundingfn(), gimple_init_gcov_profiler(), and make_dispatcher_decl().
Construct, lay out and return the type of functions returning type VALUE_TYPE given arguments of types ARG_TYPES. ARG_TYPES is a chain of TREE_LIST nodes whose TREE_VALUEs are data type nodes for the arguments of the function. NO_NAMED_ARGS_STDARG_P is true if this is a prototyped variable-arguments function with (...) prototype (no named arguments). If such a type has already been constructed, reuse it.
References build_function_type(), COMPLETE_TYPE_P, error(), error_mark_node, gcc_assert, type_hash::hash, integer_type_node, layout_type(), make_node(), maybe_canonicalize_argtypes(), NULL_TREE, SET_TYPE_STRUCTURAL_EQUALITY, TREE_CODE, TREE_TYPE, TYPE_ARG_TYPES, TYPE_CANONICAL, type_hash_canon(), type_hash_canon_hash(), TYPE_NO_NAMED_ARGS_STDARG_P, and TYPE_STRUCTURAL_EQUALITY_P.
Referenced by build_adjusted_function_type(), build_common_builtin_nodes(), build_function_type(), build_function_type_array_1(), build_function_type_list_1(), build_libfunc_function_visibility(), emit_library_call_value_1(), lower_assumption(), make_dispatcher_decl(), maybe_diag_incompatible_alias(), reconstruct_complex_type(), and self_referential_size().
Build a function type. RETURN_TYPE is the type returned by the function. The function takes N named arguments, the types of which are provided in ARG_TYPES.
References build_function_type_array_1().
Referenced by function_reader::create_function().
|
static |
Build a function type. RETURN_TYPE is the type returned by the function; VAARGS indicates whether the function takes varargs. The function takes N named arguments, the types of which are provided in ARG_TYPES.
References build_function_type(), i, NULL_TREE, tree_cons(), and void_list_node.
Referenced by build_function_type_array(), and build_varargs_function_type_array().
Build a function type. The RETURN_TYPE is the type returned by the function. If additional arguments are provided, they are additional argument types. The list of argument types must always be terminated by NULL_TREE.
References build_function_type_list_1().
Referenced by build_common_builtin_nodes(), build_cxa_atexit_decl(), build_gcov_exit_decl(), build_info_type(), build_init_ctor(), build_personality_function(), cgraph_build_static_cdtor_1(), create_loop_fn(), create_omp_child_function(), default_external_stack_protect_fail(), default_hidden_stack_protect_fail(), expand_builtin_cexpi(), expand_builtin_int_roundingfn(), gimple_init_gcov_profiler(), init_eh(), initialize_sanitizer_builtins(), push_dummy_function(), rt_bb_visited::rt_bb_visited(), set_stack_check_libfunc(), and tree_ssa_prefetch_arrays().
Build a function type. The RETURN_TYPE is the type returned by the function. If VAARGS is set, no void_type_node is appended to the list. ARGP must be always be terminated be a NULL_TREE.
References build_function_type(), gcc_assert, last, nreverse(), NULL_TREE, TREE_CHAIN, tree_cons(), and void_list_node.
Referenced by build_function_type_list(), and build_varargs_function_type_list().
Create a type of integers to be the TYPE_DOMAIN of an ARRAY_TYPE. MAXVAL should be the maximum value in the domain (one less than the length of the array). The maximum value that MAXVAL can have is INT_MAX for a HOST_WIDE_INT. We don't enforce this limit, that is up to caller (e.g. language front end). The limit exists because the result is a signed type and we don't handle sizes that use more than one HOST_WIDE_INT.
References build_range_type(), size_zero_node, and sizetype.
Referenced by attr_access::array_as_string(), asan_pp_string(), assemble_crc_table(), build_array_type_nelts(), tree_switch_conversion::switch_conversion::build_arrays(), build_fn_info_type(), build_info(), build_info_type(), build_string_literal(), coverage_end_function(), coverage_obj_finish(), get_descriptor_type(), get_nl_goto_field(), get_trampoline_type(), gimplify_omp_depend(), init_eh(), resolve_addr_in_expr(), and store_expr().
tree build_index_vector | ( | tree | vec_type, |
poly_uint64 | base, | ||
poly_uint64 | step ) |
Return a vector with the same number of units and number of bits as VEC_TYPE, but in which the elements are a linear series of unsigned integers { BASE, BASE + STEP, BASE + STEP * 2, ... }.
References tree_vector_builder::build(), build_int_cstu(), build_nonstandard_integer_type(), build_vector_type(), GET_MODE_BITSIZE(), i, INTEGRAL_TYPE_P, SCALAR_TYPE_MODE, TREE_TYPE, TYPE_UNSIGNED, and TYPE_VECTOR_SUBPARTS().
Referenced by vect_create_epilog_for_reduction(), vectorizable_call(), and vectorizable_induction().
tree build_int_cst | ( | tree | type, |
poly_int64 | cst ) |
Create a constant tree that contains CST sign-extended to TYPE.
References integer_type_node, wi::shwi(), TYPE_PRECISION, and wide_int_to_tree().
Referenced by access_with_size_object_size(), add_async_clauses_and_wait(), add_iv_candidate_for_biv(), add_iv_candidate_for_doloop(), add_iv_candidate_for_use(), add_rshift(), add_standard_iv_candidates(), scev_dfs::add_to_evolution_1(), add_wait(), adjust_simduid_builtins(), analyze_subscript_affine_affine(), array_ref_low_bound(), array_type_nelts_minus_one(), asan_add_global(), asan_expand_check_ifn(), asan_expand_poison_ifn(), asan_finish_file(), asan_poison_variable(), asan_store_shadow_bytes(), assert_loop_rolls_lt(), assert_no_overflow_lt(), assign_filter_values(), attempt_builtin_powi(), build_asan_poison_call_expr(), build_assign(), build_builtin_expect_predicate(), build_check_stmt(), build_cltz_expr(), build_cmp_result(), build_common_tree_nodes(), tree_switch_conversion::switch_conversion::build_constructors(), build_debug_ref_for_model(), build_invariant_address(), build_minus_one_cst(), build_one_cst(), build_popcount_expr(), build_predict_expr(), build_range_check(), build_ref_for_offset(), build_shadow_mem_access(), build_simple_mem_ref_loc(), build_tm_abort_call(), build_tm_store(), build_user_friendly_ref_for_offset(), build_vl_exp(), build_zero_cst(), can_use_analyze_subscript_affine_affine(), canonicalize_bool(), canonicalize_cond_expr_cond(), canonicalize_loop_induction_variables(), canonicalize_loop_ivs(), rt_bb_visited::check(), chrec_apply(), chrec_fold_multiply(), chrec_fold_multiply_poly_poly(), chrec_is_positive(), clear_padding_flush(), compare_values_warnv(), compute_access_stride(), compute_doloop_base_on_mode(), compute_new_first_bound(), compute_overlap_steps_for_affine_univar(), cond_removal_in_builtin_zero_pattern(), constant_boolean_node(), constant_byte_string(), convert_atomic_bit_not(), convert_mult_to_highpart(), convert_to_integer_1(), copy_bb(), copy_reference_ops_from_ref(), strlen_pass::count_nonzero_bytes(), create_array_ref(), create_canonical_iv(), create_component_ref_by_pieces_1(), create_mem_ref_raw(), create_odr_indicator(), create_parallel_loop(), create_task_copyfn(), declare_return_variable(), decrement_power(), default_emutls_var_init(), detect_type_change_ssa(), determine_exit_conditions(), do_mpfr_lgamma_r(), do_mpfr_remquo(), dr_analyze_indices(), dummy_object(), emit_case_dispatch_table(), emutls_common_1(), estimate_numbers_of_iterations(), evaluate_stmt(), execute_omp_device_lower(), tree_switch_conversion::switch_conversion::exp_index_transform(), expand_builtin_sincos(), expand_builtin_strub_enter(), expand_builtin_strub_leave(), expand_builtin_strub_update(), expand_call_mem_ref(), expand_DEFERRED_INIT(), expand_expr_real_1(), expand_expr_real_2(), expand_ifn_va_arg_1(), expand_oacc_collapse_init(), expand_oacc_for(), expand_omp_atomic_cas(), expand_omp_atomic_fetch_op(), expand_omp_atomic_load(), expand_omp_atomic_pipeline(), expand_omp_atomic_store(), expand_omp_for_generic(), expand_omp_for_init_counts(), expand_omp_for_init_vars(), expand_omp_for_ordered_loops(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_ordered_sink(), expand_omp_scantemp_alloc(), expand_omp_sections(), expand_omp_simd(), expand_omp_target(), expand_parallel_call(), expand_single_bit_test(), expand_sjlj_dispatch_table(), expand_task_call(), expand_teams_call(), expand_thunk(), expand_transaction(), expand_vector_divmod(), expand_vector_ubsan_overflow(), expr_expected_value_1(), finalize_nesting_tree_1(), find_inv_vars_cb(), find_loop_niter(), finish_taskreg_scan(), fold(), fold_addr_of_array_ref_difference(), fold_array_ctor_reference(), fold_binary_loc(), fold_bit_and_mask(), fold_builtin_atomic_compare_exchange(), fold_builtin_bit_query(), fold_builtin_classify_type(), fold_builtin_frexp(), fold_builtin_isascii(), fold_builtin_isdigit(), fold_builtin_LINE(), fold_builtin_strpbrk(), fold_builtin_toascii(), fold_comparison(), fold_const_call(), fold_const_call(), fold_const_call(), fold_div_compare(), fold_gimple_assign(), fold_internal_goacc_dim(), fold_plusminus_mult_expr(), fold_relational_const(), fold_stmt_1(), fold_strstr_to_strncmp(), fold_truth_andor_1(), fold_truth_not_expr(), force_constant_size(), force_expr_to_var_cost(), gather_mem_refs_stmt(), gen_conditions_for_pow_int_base(), gen_counter_update(), gen_one_condition(), gen_parallel_loop(), generate_memset_builtin(), get_bitfield_rep(), get_component_ssa_name(), get_inner_reference(), get_iv(), get_mem_refs_of_builtin_call(), get_memory_rtx(), get_misalign_in_elems(), get_range_strlen_dynamic(), get_references_in_stmt(), get_stridx_plus_constant(), get_target_argument_identifier_1(), get_target_argument_value(), get_target_arguments(), get_up_bounds_for_array_ref(), get_upper_bound_based_on_builtin_expr_with_prob(), get_ws_args_for(), gimple_add_init_for_auto_var(), gimple_build_round_up(), gimple_divmod_fixed_value_transform(), gimple_fold_builtin_acc_on_device(), gimple_fold_builtin_fputs(), gimple_fold_builtin_memchr(), gimple_fold_builtin_memory_op(), gimple_fold_builtin_memset(), gimple_fold_builtin_printf(), gimple_fold_builtin_sprintf(), gimple_fold_builtin_stpcpy(), gimple_fold_builtin_strcat(), gimple_fold_builtin_strchr(), gimple_fold_builtin_strcpy(), gimple_fold_builtin_strstr(), gimple_fold_builtin_stxcpy_chk(), gimple_gen_ic_func_profiler(), gimple_gen_time_profiler(), gimple_load_first_char(), gimple_lower_bitint(), gimple_mod_pow2(), gimple_stringops_transform(), gimplify_adjust_omp_clauses_1(), gimplify_bind_expr(), gimplify_expr(), gimplify_init_ctor_eval(), gimplify_omp_depend(), gimplify_omp_for(), gimplify_omp_loop_xform(), gimplify_va_arg_expr(), strlen_pass::handle_alloc_call(), handle_builtin_alloca(), strlen_pass::handle_builtin_memcmp(), strlen_pass::handle_builtin_memcpy(), strlen_pass::handle_builtin_memset(), strlen_pass::handle_builtin_strcat(), strlen_pass::handle_builtin_strchr(), strlen_pass::handle_builtin_strcpy(), strlen_pass::handle_builtin_string_cmp(), strlen_pass::handle_builtin_strlen(), strlen_pass::handle_builtin_stxncpy_strncat(), strlen_pass::handle_integral_assign(), strlen_pass::handle_store(), idx_analyze_ref(), ifcombine_ifandif(), increment_start_addr(), init_range_entry(), initialize_data_dependence_relation(), initialize_matrix_A(), inline_string_cmp(), instrument_bool_enum_load(), instrument_builtin(), instrument_builtin_call(), instrument_decisions(), instrument_expr(), instrument_mem_ref(), instrument_nonnull_arg(), instrument_object_size(), interpret_rhs_expr(), inverse(), ipa_get_jf_ancestor_result(), ipa_tm_insert_irr_call(), issue_prefetch_ref(), layout_type(), lhd_simulate_enum_decl(), loop_niter_by_eval(), lower_bitfield(), lower_bound_in_type(), lower_builtin_posix_memalign(), lower_coro_builtin(), lower_depend_clauses(), lower_eh_constructs_2(), lower_eh_dispatch(), lower_emutls_1(), lower_lastprivate_clauses(), lower_oacc_head_mark(), lower_oacc_head_tail(), lower_oacc_loop_marker(), lower_oacc_private_marker(), lower_oacc_reductions(), lower_omp_for_lastprivate(), lower_omp_for_scan(), lower_omp_ordered(), lower_omp_scan(), lower_omp_single_copy(), lower_omp_target(), lower_omp_task_reductions(), lower_omp_teams(), lower_private_allocate(), lower_rec_input_clauses(), lower_reduction_clauses(), lower_resx(), lower_try_finally_switch(), lower_vec_perm(), make_bit_field_ref(), make_range(), make_range_step(), make_trait_selector(), make_trait_set_selector(), match_arith_overflow(), match_single_bit_test(), may_eliminate_iv(), maybe_canonicalize_comparison_1(), maybe_canonicalize_mem_ref_addr(), maybe_instrument_pointer_overflow(), maybe_make_indirect(), maybe_optimize_mod_cmp(), maybe_trim_constructor_store(), strlen_pass::maybe_warn_overflow(), merge_ranges(), ipa_param_adjustments::modify_call(), move_sese_region_to_fn(), move_stmt_eh_region_tree_nr(), num_ending_zeros(), number_of_iterations_cltz(), number_of_iterations_cltz_complement(), number_of_iterations_cond(), number_of_iterations_le(), number_of_iterations_lt(), number_of_iterations_ne(), number_of_latch_executions(), oacc_build_routine_dims(), oacc_dim_call(), oacc_entry_exit_single_gang(), oacc_launch_pack(), oacc_loop_process(), oacc_loop_xform_head_tail(), oacc_thread_numbers(), oacc_validate_dims(), oacc_xform_loop(), oacc_xform_tile(), omp_adjust_chunk_size(), omp_adjust_for_condition(), omp_apply_tile(), omp_clause_aligned_alignment(), omp_extract_for_data(), omp_loop_number_of_iterations(), omp_resolve_clause_dependencies(), ompdevlow_adjust_simt_enter(), optimize_atomic_bit_test_and(), optimize_atomic_op_fetch_cmp_0(), optimize_bit_field_compare(), optimize_range_tests_diff(), optimize_range_tests_to_bit_test(), optimize_range_tests_var_bound(), optimize_spaceship(), optimize_stack_restore(), optimize_target_teams(), output_constant(), output_gimple_stmt(), place_union_field(), predicate_load_or_store(), prepare_target_mem_ref_lvalue(), prune_runtime_alias_test_list(), range_check_type(), range_predecessor(), range_successor(), read_vector_array(), recognize_single_bit_test(), remap_eh_region_tree_nr(), rewrite_bittest(), round_down_loc(), round_up_loc(), scan_omp_task(), set_mem_attributes_minus_bitpos(), simd_clone_adjust(), simd_clone_init_simd_arrays(), simd_clone_linear_addend(), simple_iv_with_niters(), simplify_builtin_call(), simplify_count_trailing_zeroes(), simplify_using_ranges::simplify_div_or_mod_using_ranges(), simplify_gimple_switch_label_vec(), simplify_using_ranges::simplify_internal_call_using_ranges(), simplify_rotate(), simplify_using_ranges::simplify_truth_ops_using_ranges(), size_diffop_loc(), size_int_kind(), sjlj_emit_dispatch_table(), spaceship_replacement(), stabilize_va_list_loc(), std_gimplify_va_arg_expr(), store_constructor(), strip_offset_1(), task_reduction_read(), dom_opt_dom_walker::test_for_singularity(), test_for_singularity(), transform_add_to_multiply(), tree_coverage_counter_addr(), tree_coverage_counter_ref(), tree_fold_binomial(), ubsan_expand_null_ifn(), ubsan_expand_vptr_ifn(), ubsan_source_location(), ubsan_type_descriptor(), update_range_test(), vec_perm_indices_to_tree(), vect_adjust_loop_lens_control(), vect_build_all_ones_mask(), vect_build_one_gather_load_call(), vect_build_one_scatter_store_call(), vect_build_zero_merge_argument(), vect_create_cond_for_align_checks(), vect_create_constant_vectors(), vect_create_epilog_for_reduction(), vect_create_nonlinear_iv_step(), vect_do_peeling(), vect_gen_loop_len_mask(), vect_gen_prolog_loop_niters(), vect_gen_scalar_loop_niters(), vect_gen_vector_loop_niters(), vect_gen_vector_loop_niters_mult_vf(), vect_get_loop_len(), vect_get_loop_mask(), vect_get_loop_niters(), vect_is_nonlinear_iv_evolution(), vect_loop_versioning(), vect_prepare_for_masked_peels(), vect_recog_bit_insert_pattern(), vect_recog_bitfield_ref_pattern(), vect_recog_bool_pattern(), vect_recog_cond_store_pattern(), vect_recog_ctz_ffs_pattern(), vect_recog_divmod_pattern(), vect_recog_gather_scatter_pattern(), vect_recog_gcond_pattern(), vect_recog_popcount_clz_ctz_ffs_pattern(), vect_recog_rotate_pattern(), vect_set_loop_condition_normal(), vect_set_loop_condition_partial_vectors(), vect_set_loop_condition_partial_vectors_avx512(), vect_set_loop_controls_directly(), vect_setup_realignment(), vect_synth_mult_by_constant(), vect_transform_loop(), vector_element(), vectorizable_call(), vectorizable_condition(), vectorizable_induction(), vectorizable_live_operation_1(), vectorizable_load(), vectorizable_operation(), vectorizable_reduction(), vectorizable_scan_store(), vectorizable_simd_clone_call(), vectorizable_store(), vectorize_fold_left_reduction(), version_loop_by_alias_check(), version_loop_for_if_conversion(), rt_bb_visited::vindex(), rt_bb_visited::visit(), visit_loadstore(), VN_INFO(), vn_reference_lookup_3(), rt_bb_visited::vwordidx(), worker_single_copy(), wrap_refs(), write_vector_array(), and zero_length_string().
tree build_int_cst_type | ( | tree | type, |
poly_int64 | cst ) |
Create a constant tree that contains CST sign-extended to TYPE.
References gcc_assert, wi::shwi(), TYPE_PRECISION, and wide_int_to_tree().
Referenced by scev_dfs::add_to_evolution(), bit_value_assume_aligned(), canonicalize_loop_ivs(), chrec_fold_plus_1(), chrec_fold_plus_poly_poly(), determine_exit_conditions(), fold_builtin_object_size(), fold_read_from_constant_string(), gimple_fold_builtin_memset(), gimple_gen_interval_profiler(), inverse(), optimize_bit_field_compare(), rewrite_bittest(), split_to_var_and_offset(), and try_transform_to_exit_first_loop_alt().
tree build_int_cstu | ( | tree | type, |
poly_uint64 | cst ) |
Create a constant tree that contains CST zero-extended to TYPE.
References TYPE_PRECISION, wi::uhwi(), and wide_int_to_tree().
Referenced by assemble_crc_table(), assign_calc_vals_to_header_phis(), build_fn_info(), build_index_vector(), build_info(), do_jump(), expand_omp_for(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), get_value_from_alignment(), gimple_fold_builtin_snprintf(), gimple_fold_builtin_sprintf_chk(), infer_loop_bounds_from_pointer_arith(), lower_omp_target(), maybe_emit_sprintf_chk_warning(), crc_optimization::optimize_crc_loop(), propagate_bits_across_jump_function(), scan_sharing_clauses(), vect_create_cond_for_lower_bounds(), vectorizable_induction(), and vectorizable_load().
tree build_invariant_address | ( | tree | type, |
tree | base, | ||
poly_int64 | offset ) |
Return an invariant ADDR_EXPR of type TYPE taking the address of BASE offsetted by OFFSET units.
References build1(), build_fold_addr_expr, build_int_cst(), fold_build2, offset, ptr_type_node, recompute_tree_invariant_for_addr_expr(), and TREE_TYPE.
Referenced by gimple_fold_stmt_to_constant_1().
Builds an integer constant in TYPE such that lowest BITS bits are ones and the rest are zeros.
References gcc_assert, wi::mask(), TYPE_PRECISION, and wide_int_to_tree().
Referenced by iv_period(), number_of_iterations_ne(), and vect_recog_vector_vector_shift_pattern().
Construct, lay out and return the type of methods belonging to class BASETYPE and whose arguments and values are described by TYPE. If that type exists already, reuse it. TYPE must be a FUNCTION_TYPE node.
References build_method_type_directly(), gcc_assert, TREE_CODE, TREE_TYPE, and TYPE_ARG_TYPES.
Build a METHOD_TYPE for a member of BASETYPE. The RETTYPE (a TYPE) and ARGTYPES (a TREE_LIST) are the return type and arguments types for the method. An implicit additional parameter (of type pointer-to-BASETYPE) is added to the ARGTYPES.
References build_method_type_directly(), build_pointer_type(), COMPLETE_TYPE_P, gcc_assert, type_hash::hash, layout_type(), make_node(), maybe_canonicalize_argtypes(), NULL_TREE, SET_TYPE_STRUCTURAL_EQUALITY, TREE_CHAIN, tree_cons(), TREE_TYPE, TYPE_ARG_TYPES, TYPE_CANONICAL, type_hash_canon(), type_hash_canon_hash(), TYPE_MAIN_VARIANT, TYPE_METHOD_BASETYPE, and TYPE_STRUCTURAL_EQUALITY_P.
Referenced by build_method_type(), build_method_type_directly(), and reconstruct_complex_type().
Return a constant of arithmetic type TYPE which is the opposite of the multiplicative identity of the set TYPE.
References ALL_SCALAR_ACCUM_MODE_P, build_complex(), build_fixed(), build_int_cst(), build_minus_one_cst(), build_real(), build_vector_from_val(), build_zero_cst(), dconstm1, double_int_minus_one, fixed_from_double_int(), gcc_assert, gcc_unreachable, SCALAR_TYPE_MODE, TREE_CODE, TREE_TYPE, and TYPE_MODE.
Referenced by build_all_ones_cst(), build_minus_one_cst(), expand_omp_ordered_sink(), fold_while_ult(), lower_omp_for_scan(), omp_apply_tile(), process_assignment(), split_tree(), try_special_add_to_ops(), ubsan_instrument_float_cast(), vect_get_loop_niters(), vect_get_mask_load_else(), vect_set_loop_condition_partial_vectors(), vect_set_loop_condition_partial_vectors_avx512(), vect_set_loop_controls_directly(), vectorizable_early_exit(), vectorizable_load(), vectorizable_operation(), vectorizable_store(), vectorize_fold_left_reduction(), and zero_one_operation().
Return a new INTEGER_CST with value CST and type TYPE.
References generic_wide_int< storage >::elt(), get_int_cst_ext_nunits(), wide_int_storage::get_len(), wide_int_storage::get_precision(), HOST_BITS_PER_WIDE_INT, i, make_int_cst(), TREE_INT_CST_ELT, TREE_TYPE, type(), TYPE_UNSIGNED, and zext_hwi().
Referenced by cache_wide_int_in_type_cache(), force_fit_type(), and wide_int_to_tree_1().
|
static |
Return a new POLY_INT_CST with coefficients COEFFS and type TYPE.
References tree_poly_int_cst::coeffs, ggc_alloc_cleared_tree_node_stat(), i, NUM_POLY_INT_COEFFS, PASS_MEM_STAT, POLY_INT_CST_COEFF, record_node_allocation_statistics(), TREE_CONSTANT, TREE_SET_CODE, TREE_TYPE, and type().
Referenced by build_poly_int_cst(), and force_fit_type().
Wrapper around build_array_type_1 with SHARED set to false.
References build_array_type_1().
Wrapper around build_range_type_1 with SHARED set to false.
References build_range_type_1().
tree build_nonstandard_boolean_type | ( | unsigned HOST_WIDE_INT | precision | ) |
Builds a boolean type of precision PRECISION. Used for boolean vectors to choose proper vector element size.
References fixup_signed_type(), make_node(), MAX_BOOL_CACHED_PREC, MAX_INT_CACHED_PREC, nonstandard_boolean_type_cache, type(), and TYPE_PRECISION.
Referenced by build_truth_vector_type_for(), and build_truth_vector_type_for_mode().
tree build_nonstandard_integer_type | ( | unsigned HOST_WIDE_INT | precision, |
int | unsignedp ) |
Builds a signed or unsigned integer type of precision PRECISION. Used for C bitfields whose precision does not match that of built-in target types.
References inchash::add_expr(), inchash::hash::end(), fixup_signed_type(), fixup_unsigned_type(), make_node(), MAX_INT_CACHED_PREC, nonstandard_integer_type_cache, type_hash_canon(), TYPE_MAX_VALUE, and TYPE_PRECISION.
Referenced by analyze_access_subtree(), bitwise_type_for_mode(), build_common_tree_nodes(), build_index_vector(), build_range_check(), build_split_load(), can_duplicate_and_interleave_p(), canonicalize_loop_ivs(), clear_padding_type(), convert_affine_scev(), convert_mult_to_widen(), convert_plusminus_to_widen(), eliminate_dom_walker::eliminate_stmt(), tree_switch_conversion::jump_table_cluster::emit(), expand_arith_overflow(), expand_DEFERRED_INIT(), expand_mul_overflow(), expand_vector_comparison(), expand_vector_condition(), expand_vector_divmod(), fold_builtin_alloca_with_align(), fold_builtin_bit_query(), fold_truth_andor_for_ifcombine(), get_mem_refs_of_builtin_call(), get_related_vectype_for_scalar_type(), gimple_lower_bitint(), gimple_signed_or_unsigned_type(), strlen_pass::handle_builtin_memcmp(), initialize_sanitizer_builtins(), instrument_bool_enum_load(), integer_type_for_mask(), interpret_rhs_expr(), is_widening_mult_rhs_p(), make_bit_field_ref(), omp_extract_for_data(), crc_optimization::optimize_crc_loop(), optimize_range_tests_diff(), optimize_range_tests_xor(), output_constant(), output_constructor(), prepare_instrumented_value(), vn_walk_cb_data::push_partial_def(), signed_or_unsigned_type_for(), simd_clone_adjust(), simplify_using_ranges::simplify_float_conversion_using_ranges(), simplify_permutation(), simplify_vector_constructor(), supportable_indirect_convert_operation(), ubsan_encode_value(), ubsan_type_descriptor(), vect_convert_input(), vect_create_partial_epilog(), vect_gather_scatter_fn_p(), vect_get_vector_types_for_stmt(), vect_is_simple_cond(), vect_joust_widened_integer(), vect_joust_widened_type(), vect_recog_abd_pattern(), vect_recog_average_pattern(), vect_recog_bool_pattern(), vect_recog_divmod_pattern(), vect_recog_mulhs_pattern(), vect_recog_over_widening_pattern(), vect_recog_widen_op_pattern(), vect_truncate_gather_scatter_offset(), vect_verify_full_masking(), vect_verify_full_masking_avx512(), vect_verify_loop_lens(), vector_vector_composition_type(), vectorizable_conversion(), vectorizable_live_operation(), vectorizable_live_operation_1(), vectorizable_operation(), vectorizable_simd_clone_call(), vectorizable_store(), and vn_reference_lookup_3().
Similar except don't specify the TREE_TYPE and leave the TREE_SIDE_EFFECTS as 0. It is permissible for arguments to be null, or even garbage if their values do not matter.
References gcc_assert, i, make_node(), tcc_vl_exp, TREE_CODE_CLASS, TREE_CODE_LENGTH, and TREE_OPERAND.
Referenced by stabilize_reference(), and stabilize_reference_1().
Similar to build_nt, but for creating a CALL_EXPR object with a tree vec.
References build_vl_exp(), CALL_EXPR_ARG, CALL_EXPR_FN, CALL_EXPR_STATIC_CHAIN, FOR_EACH_VEC_SAFE_ELT, NULL_TREE, and vec_safe_length().
Construct, lay out and return the type of offsets to a value of type TYPE, within an object of type BASETYPE. If a suitable offset type exists already, reuse it.
References build_offset_type(), COMPLETE_TYPE_P, gcc_unreachable, type_hash::hash, layout_type(), make_node(), SET_TYPE_STRUCTURAL_EQUALITY, TREE_TYPE, type(), TYPE_CANONICAL, type_hash_canon(), type_hash_canon_hash(), TYPE_MAIN_VARIANT, TYPE_OFFSET_BASETYPE, and TYPE_STRUCTURAL_EQUALITY_P.
Referenced by build_offset_type(), and reconstruct_complex_type().
tree build_omp_clause | ( | location_t | loc, |
enum omp_clause_code | code ) |
Build an OMP clause with code CODE. LOC is the location of the clause.
References ggc_internal_alloc(), OMP_CLAUSE_LOCATION, omp_clause_num_ops, OMP_CLAUSE_SET_CODE, record_node_allocation_statistics(), and TREE_SET_CODE.
Referenced by add_async_clauses_and_wait(), add_parent_or_loop_num_clause(), add_taskreg_looptemp_clauses(), adjust_nested_loop_clauses(), build_omp_struct_comp_nodes(), convert_gimple_call(), convert_local_reference_stmt(), convert_nonlocal_reference_stmt(), convert_tramp_reference_stmt(), create_parallel_loop(), decompose_kernels_region_body(), gimplify_adjust_omp_clauses(), gimplify_adjust_omp_clauses_1(), gimplify_call_expr(), gimplify_oacc_declare_1(), gimplify_omp_depend(), gimplify_omp_for(), gimplify_omp_loop(), gimplify_omp_taskloop_expr(), lower_depend_clauses(), lower_lastprivate_conditional_clauses(), lower_omp_for(), lower_omp_for_scan(), lower_omp_scope(), lower_omp_sections(), lower_rec_input_clauses(), make_region_seq(), maybe_build_inner_data_region(), oacc_verify_routine_clauses(), omp_accumulate_sibling_list(), omp_oacc_kernels_decompose_1(), omp_resolve_clause_dependencies(), optimize_target_teams(), scan_omp_parallel(), scan_omp_simd(), scan_omp_simd_scan(), streamer_alloc_tree(), and transform_kernels_loop_clauses().
Return a constant of arithmetic type TYPE which is the multiplicative identity of the set TYPE.
References ALL_SCALAR_ACCUM_MODE_P, build_complex(), build_fixed(), build_int_cst(), build_one_cst(), build_real(), build_vector_from_val(), build_zero_cst(), dconst1, FCONST1, gcc_assert, gcc_unreachable, TREE_CODE, TREE_TYPE, and TYPE_MODE.
Referenced by branch_fixup(), build_each_one_cst(), build_one_cst(), edge_info::derive_equivalences(), determine_exit_conditions(), eliminate_unnecessary_stmts(), execute_omp_device_lower(), expand_omp_for_init_counts(), expand_omp_for_init_vars(), expand_omp_sections(), expand_omp_simd(), expr_expected_value_1(), fold_binary_loc(), fold_negate_expr_1(), fold_plusminus_mult_expr(), gen_counter_update(), gen_log2(), gen_pow2p(), gimple_add_padding_init_for_auto_var(), gimple_fold_call(), strlen_pass::handle_builtin_memset(), insert_reciprocals(), lower_omp_for_scan(), lower_omp_task_reductions(), lower_omp_teams(), neutral_op_for_reduction(), omp_apply_tile(), omp_extract_for_data(), powi_as_mults(), rewrite_reciprocal(), simd_clone_adjust(), avail_exprs_stack::simplify_binary_operation(), simplify_using_ranges::simplify_switch_using_ranges(), spaceship_replacement(), tree_optimize_tail_calls_1(), try_transform_to_exit_first_loop_alt(), undistribute_bitref_for_vector(), vect_create_nonlinear_iv_init(), vect_do_peeling(), vect_gen_vector_loop_niters(), vect_recog_average_pattern(), vect_set_loop_condition_partial_vectors(), vect_set_loop_condition_partial_vectors_avx512(), vect_transform_loop(), and vectorizable_live_operation_1().
tree build_opaque_vector_type | ( | tree | innertype, |
poly_int64 | nunits ) |
Like build_vector_type, but builds a variant type with TYPE_VECTOR_OPAQUE set.
References build_distinct_type_copy(), check_qualified_type(), make_vector_type(), TYPE_ALIAS_SET, TYPE_CANONICAL, TYPE_MAIN_VARIANT, TYPE_NEXT_VARIANT, TYPE_QUALS, and TYPE_VECTOR_OPAQUE.
tree build_optimization_node | ( | struct gcc_options * | opts, |
struct gcc_options * | opts_set ) |
Build an OPTIMIZATION_NODE based on the options in OPTS and OPTS_SET.
References cl_optimization_node, cl_option_hash_table, make_node(), and TREE_OPTIMIZATION.
Referenced by inline_call(), lto_input_ts_function_decl_tree_pointers(), and process_options().
By default build pointers in ptr_mode.
References build_pointer_type_for_mode().
Referenced by add_taskreg_looptemp_clauses(), apply_pass_by_reference_rules(), asan_init_shadow_ptr_types(), assign_parms_augmented_arg_list(), assumption_copy_decl(), build_call_expr_loc_array(), build_call_nofold_loc(), build_common_builtin_nodes(), build_common_tree_nodes(), build_cxa_atexit_decl(), build_fn_info_type(), build_fold_addr_expr_loc(), build_gcov_info_var_registration(), build_info_type(), build_init_ctor(), build_method_type_directly(), build_ref_for_offset(), build_string_literal(), canonicalize_addr_expr(), rt_bb_visited::check(), clear_padding_type(), copy_reference_ops_from_ref(), coverage_obj_init(), create_mem_ref_raw(), create_task_copyfn(), decl_attributes(), distinctify_node_type(), dummy_object(), eliminate_local_variables_1(), emit_library_call_value_1(), expand_builtin_cexpi(), expand_call(), expand_call_inline(), expand_call_stmt(), expand_debug_expr(), expand_function_end(), expand_ifn_atomic_compare_exchange_into_call(), find_interesting_uses_address(), finish_taskreg_scan(), fixup_child_record_type(), fold_binary_loc(), fold_builtin_sincos(), force_expr_to_var_cost(), gen_emutls_addr(), get_alias_set(), get_chain_decl(), get_chain_field(), get_mem_refs_of_builtin_call(), get_trampoline_type(), get_use_type(), gimple_call_set_fndecl(), gimple_fold_builtin_clear_padding(), gimple_gen_ic_profiler(), gimple_init_gcov_profiler(), gimple_lower_bitint(), gimplify_addr(), gimplify_adjust_omp_clauses_1(), gimplify_bind_expr(), gimplify_cond_expr(), gimplify_parameters(), gimplify_va_arg_expr(), gimplify_vla_decl(), init_eh(), init_ic_make_global_vars(), initialize_sanitizer_builtins(), install_var_field(), instrument_bool_enum_load(), instrument_mem_ref(), instrument_object_size(), ipa_read_jump_function(), lookup_field_for_decl(), lower_copyprivate_clauses(), lower_coro_builtin(), lower_lastprivate_conditional_clauses(), lower_omp_for(), lower_omp_for_scan(), lower_omp_scope(), lower_omp_sections(), lower_omp_single_copy(), lower_omp_target(), lower_omp_task_reductions(), lower_private_allocate(), lower_rec_input_clauses(), lower_rec_simd_input_clauses(), lower_reduction_clauses(), maybe_diag_incompatible_alias(), maybe_instrument_pointer_overflow(), maybe_optimize_ubsan_ptr_ifn(), move_hint_to_base(), omp_resolve_clause_dependencies(), ompdevlow_adjust_simt_enter(), output_gimple_stmt(), prepare_call_arguments(), prepare_target_mem_ref_lvalue(), reference_alias_ptr_type(), rewrite_use_address(), rt_bb_visited::rt_bb_visited(), scan_omp_parallel(), separate_decls_in_region(), simd_clone_init_simd_arrays(), stabilize_va_list_loc(), std_gimplify_va_arg_expr(), thunk_adjust(), ubsan_create_data(), ubsan_get_source_location_type(), vect_create_addr_base_for_vector_ref(), and wrap_refs().
Constructors for pointer, array and function types. (RECORD_TYPE, UNION_TYPE and ENUMERAL_TYPE nodes are constructed by language-dependent code, not here.)
Construct, lay out and return the type of pointers to TO_TYPE with mode MODE. If MODE is VOIDmode, a pointer mode for the address space of TO_TYPE will be picked. If CAN_ALIAS_ALL is TRUE, indicate this type can reference all of memory. If such a type has already been constructed, reuse it.
References build_pointer_type_for_mode(), error_mark_node, layout_type(), lookup_attribute(), make_node(), SET_TYPE_MODE, SET_TYPE_STRUCTURAL_EQUALITY, targetm, TREE_CODE, TREE_TYPE, TYPE_ADDR_SPACE, TYPE_ATTRIBUTES, TYPE_CANONICAL, TYPE_MODE, TYPE_NEXT_PTR_TO, TYPE_POINTER_TO, TYPE_REF_CAN_ALIAS_ALL, and TYPE_STRUCTURAL_EQUALITY_P.
Referenced by build_pointer_type(), build_pointer_type_for_mode(), expand_builtin_sincos(), expand_omp_atomic_mutex(), expand_omp_atomic_pipeline(), fold_builtin_memcmp(), gimple_fold_builtin_memory_op(), gimple_load_first_char(), strlen_pass::handle_builtin_memcmp(), reconstruct_complex_type(), remap_type_1(), and vect_create_data_ref_ptr().
tree build_poly_int_cst | ( | tree | type, |
const poly_wide_int_ref & | values ) |
Build a POLY_INT_CST node with type TYPE and with the elements in VALUES. The elements must also have type TYPE.
References inchash::hash::add_int(), inchash::hash::add_wide_int(), build_new_poly_int_cst(), poly_int< N, C >::coeffs, tree_poly_int_cst::coeffs, comp, inchash::hash::end(), poly_int< N, C >::from(), gcc_assert, i, NULL_TREE, NUM_POLY_INT_COEFFS, poly_int_cst_hash_table, SIGNED, TYPE_PRECISION, TYPE_UID, and wide_int_to_tree_1().
Referenced by bits_from_bytes(), fold_convert_const(), and wide_int_to_tree().
Like get_qualified_type, but creates the type if it does not exist. This function never returns NULL_TREE.
References build_qualified_type(), build_variant_type_copy(), find_atomic_core_type(), get_qualified_type(), PASS_MEM_STAT, SET_TYPE_ALIGN, set_type_quals(), SET_TYPE_STRUCTURAL_EQUALITY, TYPE_ALIGN, TYPE_CANONICAL, TYPE_QUAL_ATOMIC, and TYPE_STRUCTURAL_EQUALITY_P.
Referenced by build_complex_type(), build_fn_info_type(), build_info_type(), build_qualified_type(), build_ref_for_offset(), build_type_attribute_qual_variant(), canonicalize_component_ref(), coverage_obj_finish(), coverage_obj_init(), create_access_replacement(), decl_attributes(), fixup_child_record_type(), fold_binary_loc(), get_related_vectype_for_scalar_type(), initialize_sanitizer_builtins(), install_var_field(), install_var_field(), instrument_bool_enum_load(), move_hint_to_base(), oacc_rewrite_var_decl(), rt_bb_visited::rt_bb_visited(), tree_profiling(), ubsan_get_source_location_type(), and ubsan_type_descriptor().
Wrapper around build_range_type_1 with SHARED set to true.
References build_range_type_1().
Referenced by build_index_type(), build_printable_array_type(), get_memory_rtx(), scan_sharing_clauses(), and ubsan_get_type_descriptor_type().
Create a range of some discrete type TYPE (an INTEGER_TYPE, ENUMERAL_TYPE or BOOLEAN_TYPE) with low bound LOWVAL and high bound HIGHVAL. If SHARED is true, reuse such a type that has already been constructed.
References fold_convert, type_hash::hash, make_node(), NULL, SET_TYPE_ALIGN, SET_TYPE_MODE, SET_TYPE_STRUCTURAL_EQUALITY, SET_TYPE_WARN_IF_NOT_ALIGN, TREE_CODE, TREE_TYPE, type(), TYPE_ALIGN, type_hash_canon(), type_hash_canon_hash(), TYPE_MAX_VALUE, TYPE_MIN_VALUE, TYPE_MODE, TYPE_PRECISION, TYPE_SIZE, TYPE_SIZE_UNIT, TYPE_USER_ALIGN, and TYPE_WARN_IF_NOT_ALIGN.
Referenced by build_nonshared_range_type(), and build_range_type().
tree build_real | ( | tree | type, |
REAL_VALUE_TYPE | d ) |
Return a new REAL_CST node whose type is TYPE and value is D.
References dconst0, dconst1, dconst2, dconsthalf, dconstm1, DECIMAL_FLOAT_MODE_P, decimal_real_from_string(), real_format::emin, gcc_unreachable, make_node(), real_format::p, REAL_MODE_FORMAT, REAL_VALUE_TYPE, rvc_normal, rvc_zero, TREE_OVERFLOW, TREE_REAL_CST_PTR, TREE_TYPE, type(), and TYPE_MODE.
Referenced by scev_dfs::add_to_evolution(), scev_dfs::add_to_evolution_1(), build_complex_inf(), build_minus_one_cst(), build_one_cst(), build_real_from_int_cst(), build_real_from_wide(), build_real_truncate(), build_zero_cst(), chrec_fold_multiply_poly_poly(), chrec_fold_plus_1(), chrec_fold_plus_poly_poly(), const_binop(), decrement_power(), do_mpc_ckconv(), do_mpfr_ckconv(), exact_inverse(), expand_builtin_cexpi(), expand_builtin_signbit(), expand_omp_for_init_vars(), expand_pow_as_sqrts(), fold_abs_const(), fold_builtin_fpclassify(), fold_builtin_frexp(), fold_builtin_inf(), fold_builtin_interclass_mathfn(), fold_builtin_modf(), fold_const_builtin_nan(), fold_const_call_1(), fold_const_call_1(), fold_const_call_1(), fold_convert_const_real_from_fixed(), fold_convert_const_real_from_real(), fold_negate_const(), get_component_ssa_name(), gimple_expand_builtin_pow(), frange::lbound(), make_tree(), native_interpret_real(), neutral_op_for_reduction(), omp_reduction_init_op(), powi_as_mults(), frange::singleton_p(), frange::ubound(), ubsan_instrument_float_cast(), vect_build_all_ones_mask(), and vect_build_zero_merge_argument().
tree build_real_from_int_cst | ( | tree | type, |
const_tree | i ) |
Given a tree representing an integer constant I, return a tree representing the same value as a floating-point constant of type TYPE.
References build_real(), i, real_value_from_int_cst(), and TREE_OVERFLOW.
Referenced by chrec_apply(), expr_expected_value_1(), fold_convert_const(), gen_one_condition(), and get_upper_bound_based_on_builtin_expr_with_prob().
tree build_real_from_wide | ( | tree | type, |
const wide_int_ref & | i, | ||
signop | sgn ) |
Return a new REAL_CST node whose type is TYPE and whose value is the integer value I which has sign SGN.
References build_real(), i, real_from_integer(), REAL_VALUE_TYPE, and TYPE_MODE.
Referenced by vectorizable_induction().
tree build_real_truncate | ( | tree | type, |
REAL_VALUE_TYPE | d ) |
Like build_real, but first truncate D to the type.
References build_real(), real_value_truncate(), and TYPE_MODE.
Referenced by gimple_expand_builtin_cabs(), and strip_float_extensions().
Build the node for the type of references-to-TO_TYPE by default in ptr_mode.
Referenced by build_ref_type_for(), fixup_child_record_type(), and get_alias_set().
Same as build_pointer_type_for_mode, but for REFERENCE_TYPE.
References build_reference_type_for_mode(), error_mark_node, layout_type(), lookup_attribute(), make_node(), SET_TYPE_MODE, SET_TYPE_STRUCTURAL_EQUALITY, targetm, TREE_CODE, TREE_TYPE, TYPE_ADDR_SPACE, TYPE_ATTRIBUTES, TYPE_CANONICAL, TYPE_MODE, TYPE_NEXT_REF_TO, TYPE_REF_CAN_ALIAS_ALL, TYPE_REFERENCE_TO, and TYPE_STRUCTURAL_EQUALITY_P.
Referenced by build_reference_type_for_mode(), reconstruct_complex_type(), and remap_type_1().
Build a constant of integer type TYPE, made of VALUE's bits replicated every WIDTH bits to fit TYPE's precision.
References a, wide_int_storage::from_array(), gcc_assert, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT_1U, i, TYPE_PRECISION, WIDE_INT_MAX_INL_ELTS, and wide_int_to_tree().
Referenced by do_negate(), do_plus_minus(), and vectorizable_operation().
Build a simple MEM_REF tree with the sematics of a plain INDIRECT_REF on the pointer PTR.
References build2(), build_fold_addr_expr, build_int_cst(), poly_int< N, C >::force_shwi(), gcc_assert, get_addr_base_and_unit_offset(), handled_component_p(), is_gimple_min_invariant(), is_gimple_reg(), mem_ref_offset(), offset, SET_EXPR_LOCATION, TREE_CODE, TREE_OPERAND, and TREE_TYPE.
Referenced by build_va_arg_indirect_ref(), create_task_copyfn(), expand_omp_for_generic(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), gimplify_cond_expr(), gimplify_modify_expr(), gimplify_modify_expr_rhs(), lower_copyprivate_clauses(), lower_lastprivate_clauses(), lower_omp_for_scan(), lower_omp_scan(), lower_omp_task_reductions(), lower_rec_input_clauses(), and lower_reduction_clauses().
tree build_string | ( | unsigned | len, |
const char * | str ) |
Return a newly constructed STRING_CST node whose value is the LEN characters at STR when STR is nonnull, or all zeros otherwise. Note that for a C string literal, LEN should include the trailing NUL. The TREE_TYPE is not initialized.
References ggc_internal_alloc(), offsetof, record_node_allocation_statistics(), TREE_CONSTANT, TREE_SET_CODE, and TREE_STRING_LENGTH.
Referenced by asan_pp_string(), build_info(), build_string_literal(), default_asm_output_ident_directive(), detach_value(), expand_asm_stmt(), gimplify_asm_expr(), make_attribute(), resolve_addr_in_expr(), resolve_asm_operand_names(), set_call_expr_flags(), streamer_read_string_cst(), attr_access::to_external_string(), attr_access::to_internal_string(), ubsan_source_location(), ubsan_type_descriptor(), and rt_bb_visited::vset().
tree build_string_literal | ( | unsigned | len, |
const char * | str, | ||
tree | eltype, | ||
unsigned HOST_WIDE_INT | size ) |
Create a new constant string literal of type ELTYPE[SIZE] (or LEN if SIZE == -1) and return a tree node representing char* pointer to it as an ADDR_EXPR (ARRAY_REF (ELTYPE, ...)). When STR is nonnull the STRING_CST value is the LEN bytes at STR (the representation of the string, which may be wide). Otherwise it's all zeros.
References build1(), build4(), build_array_type(), build_index_type(), build_pointer_type(), build_string(), build_type_variant, HOST_WIDE_INT_M1U, integer_zero_node, NULL_TREE, size_int, TREE_CONSTANT, TREE_READONLY, TREE_STATIC, TREE_TYPE, and type().
Referenced by build_string_literal(), build_string_literal(), constant_byte_string(), fold_builtin_FILE(), fold_builtin_FUNCTION(), gimple_add_init_for_auto_var(), gimple_fold_builtin_printf(), simplify_builtin_call(), and verify_bb_vtables().
tree build_target_option_node | ( | struct gcc_options * | opts, |
struct gcc_options * | opts_set ) |
Build a TARGET_OPTION_NODE based on the options in OPTS and OPTS_SET.
References cl_option_hash_table, cl_target_option_node, make_node(), and TREE_TARGET_OPTION.
Referenced by decl_attributes().
Builds a new translation-unit decl with name NAME, queues it in the global list of translation-unit decls and returns it.
References all_translation_units, build_decl(), lang_hooks::name, NULL_TREE, TRANSLATION_UNIT_LANGUAGE, UNKNOWN_LOCATION, and vec_safe_push().
Return a newly created TREE_LIST node whose purpose and value fields are PARM and VALUE.
References make_node(), PASS_MEM_STAT, TREE_PURPOSE, and TREE_VALUE.
Referenced by attr_access::array_as_string(), build_common_tree_nodes(), build_tree_list_vec(), decl_attributes(), detach_value(), gimplify_asm_expr(), gimplify_bind_expr(), lookup_element_for_decl(), rt_bb_visited::rt_bb_visited(), scan_sharing_clauses(), set_call_expr_flags(), split_complex_types(), and rt_bb_visited::vset().
Build a chain of TREE_LIST nodes from a vector.
References build_tree_list(), FOR_EACH_VEC_SAFE_ELT, i, NULL, NULL_TREE, PASS_MEM_STAT, and TREE_CHAIN.
Build a vector type that holds one boolean result for each element of vector type VECTYPE. The public interface for this operation is truth_type_for.
References build_nonstandard_boolean_type(), build_truth_vector_type_for_mode(), make_vector_type(), targetm, tree_to_poly_uint64(), TYPE_MODE, TYPE_SIZE, TYPE_VECTOR_SUBPARTS(), vector_element_size, and VECTOR_MODE_P.
Referenced by truth_type_for().
tree build_truth_vector_type_for_mode | ( | poly_uint64 | nunits, |
machine_mode | mask_mode ) |
Build a truth vector with NUNITS units, giving it mode MASK_MODE.
References build_nonstandard_boolean_type(), gcc_assert, GET_MODE_PRECISION(), make_vector_type(), vector_element_size, and VECTOR_MODE_P.
Referenced by build_truth_vector_type_for(), vect_double_mask_nunits(), and vect_halve_mask_nunits().
If TYPE is not a vector type, just return SC, otherwise return build_vector_from_val (TYPE, SC).
References build_vector_from_val(), sc, and VECTOR_TYPE_P.
Referenced by bitmask_inv_cst_vector_p().
Build a variable argument function type. RETURN_TYPE is the type returned by the function. The function takes N named arguments, the types of which are provided in ARG_TYPES.
References build_function_type_array_1().
Build a variable argument function type. The RETURN_TYPE is the type returned by the function. If additional arguments are provided, they are additional argument types. The list of argument types must always be terminated by NULL_TREE.
References build_function_type_list_1().
Referenced by create_assumption_fn().
Create a new variant of TYPE, equivalent but distinct. This is so the caller can modify it. TYPE_CANONICAL for the return type will be equivalent to TYPE_CANONICAL of TYPE, indicating that the types are considered equal by the language itself (or that both types require structural equality checks).
References build_distinct_type_copy(), PASS_MEM_STAT, TYPE_ALIAS_SET, TYPE_CANONICAL, TYPE_MAIN_VARIANT, and TYPE_NEXT_VARIANT.
Referenced by build_aligned_type(), build_atomic_base(), build_common_tree_nodes(), build_qualified_type(), decl_attributes(), remap_decl(), rt_bb_visited::rt_bb_visited(), and std_gimplify_va_arg_expr().
Build a vector series of type TYPE in which element I has the value BASE + I * STEP. The result is a constant if BASE and STEP are constant and a VEC_SERIES_EXPR otherwise.
References tree_vector_builder::build(), build2(), build_vector_from_val(), integer_zerop(), wi::to_wide(), TREE_CODE, TREE_TYPE, and wide_int_to_tree().
Referenced by const_binop().
Return a VECTOR_CST of type VEC_TYPE in which the first NUM_A elements are A and the rest are B.
References a, b, tree_vector_builder::build(), count, gcc_assert, i, known_le, and TYPE_VECTOR_SUBPARTS().
Referenced by fold_while_ult().
tree build_vector_from_ctor | ( | tree | type, |
const vec< constructor_elt, va_gc > * | v ) |
Return a new VECTOR_CST node whose type is TYPE and whose values are extracted from V, a vector of CONSTRUCTOR_ELT.
References build_zero_cst(), FOR_EACH_CONSTRUCTOR_VALUE, gcc_assert, i, TREE_CODE, TREE_TYPE, TYPE_VECTOR_SUBPARTS(), vec_safe_length(), VECTOR_CST_ELT, and VECTOR_CST_NELTS.
Referenced by expand_vector_condition(), expand_vector_conversion(), expand_vector_piecewise(), fold(), fold_gimple_assign(), gimplify_init_constructor(), lower_vec_perm(), and rtl_for_decl_init().
Build a vector of type VECTYPE where all the elements are SCs.
References tree_vector_builder::build(), build_constructor(), CONSTANT_CLASS_P, CONSTRUCTOR_APPEND_ELT, error_mark_node, fold_build1, gcc_checking_assert, i, NULL_TREE, sc, TREE_TYPE, TYPE_MAIN_VARIANT, TYPE_VECTOR_SUBPARTS(), types_compatible_p(), and vec_alloc().
Referenced by build_minus_one_cst(), build_one_cst(), build_uniform_cst(), build_vec_series(), build_zero_cst(), build_zero_vector(), const_unop(), constant_boolean_node(), expand_vector_operations_1(), gimple_build_vector_from_val(), sign_mask_for(), vect_build_all_ones_mask(), vect_build_zero_merge_argument(), vect_create_epilog_for_reduction(), vect_create_nonlinear_iv_vec_step(), vect_emulate_mixed_dot_prod(), vect_expand_fold_left(), vect_init_vector(), vect_transform_cycle_phi(), vectorizable_induction(), vectorizable_recurr(), and vectorizable_simd_clone_call().
tree build_vector_type | ( | tree | innertype, |
poly_int64 | nunits ) |
Similarly, but takes the inner type and number of units, which must be a power of two.
References make_vector_type().
Referenced by build_index_vector(), build_word_mode_vector_type(), do_vec_conversion(), do_vec_narrow_conversion(), duplicate_and_interleave(), execute_update_addresses_taken(), expand_vector_conversion(), expand_vector_divmod(), non_rewritable_lvalue_p(), signed_or_unsigned_type_for(), simd_clone_adjust_argument_types(), simd_clone_adjust_return_type(), simplify_permutation(), simplify_vector_constructor(), vect_create_nonlinear_iv_init(), vect_create_partial_epilog(), vect_gen_perm_mask_any(), vect_transform_cycle_phi(), vect_update_nonlinear_iv(), vect_verify_full_masking_avx512(), vector_vector_composition_type(), and vectorizable_store().
Returns a vector tree node given a mode (integer, vector, or BLKmode) and the inner type.
References as_a(), gcc_assert, gcc_unreachable, GET_MODE_BITSIZE(), GET_MODE_CLASS, GET_MODE_NUNITS(), make_vector_type(), TREE_INT_CST_LOW, and TYPE_SIZE.
Referenced by bitwise_type_for_mode(), get_related_vectype_for_scalar_type(), omp_clause_aligned_alignment(), signed_or_unsigned_type_for(), supportable_widening_operation(), type_for_widest_vector_mode(), undistribute_bitref_for_vector(), vect_transform_cycle_phi(), vectorizable_load(), vectorizable_store(), and vectorized_internal_fn_supported_p().
Build a tcc_vl_exp object with code CODE and room for LEN operands. LEN includes the implicit operand count in TREE_OPERAND 0, and so must be >= 1. Except for the CODE and operand count field, other storage for the object is initialized to zeros.
References build_int_cst(), gcc_assert, ggc_alloc_cleared_tree_node_stat(), PASS_MEM_STAT, record_node_allocation_statistics(), sizetype, tcc_vl_exp, TREE_CODE_CLASS, and TREE_SET_CODE.
Referenced by build_call_1(), build_nt_call_vec(), expand_call_stmt(), and streamer_alloc_tree().
Build 0 constant of type TYPE. This is used by constructor folding and thus the constant should be represented in memory by zero(es).
References AGGREGATE_TYPE_P, build_complex(), build_constructor(), build_fixed(), build_int_cst(), build_real(), build_vector_from_val(), build_zero_cst(), dconst0, FCONST0, fold_convert, integer_zero_node, NULL, TREE_CODE, TREE_TYPE, and TYPE_MODE.
Referenced by access_with_size_object_size(), analyze_and_compute_bitop_with_inv_effect(), analyze_and_compute_bitwise_induction_effect(), loop_cand::analyze_induction_var(), assign_vals_to_header_phis(), branch_fixup(), build_cltz_expr(), build_minus_one_cst(), build_one_cst(), build_vect_cond_expr(), build_vector_from_ctor(), build_zero_cst(), c_strlen(), clear_padding_flush(), cond_store_replacement(), convert_atomic_bit_not(), default_preferred_else_value(), edge_info::derive_equivalences(), do_compare(), eliminate_duplicate_pair(), eliminate_not_pairs(), eliminate_plus_minus_pair(), tree_switch_conversion::bit_test_cluster::emit(), evaluate_stmt(), execute_omp_device_lower(), expand_complex_asm(), expand_debug_expr(), expand_DEFERRED_INIT(), expand_expr_real_1(), expand_omp_atomic_cas(), expand_omp_for_init_counts(), expand_omp_for_init_vars(), expand_omp_for_ordered_loops(), expand_omp_ordered_sink(), expand_omp_ordered_source_sink(), expand_omp_simd(), expand_omp_target(), expand_teams_call(), expand_thunk(), expand_vector_comparison(), expand_vector_condition(), expand_vector_conversion(), expand_vector_divmod(), fold_array_ctor_reference(), fold_binary_loc(), fold_builtin_bit_query(), fold_cond_expr_with_comparison(), fold_const_aggregate_ref_1(), fold_mult_zconjz(), fold_nonarray_ctor_reference(), fold_read_from_vector(), fold_strstr_to_strncmp(), fold_while_ult(), force_value_to_type(), forward_propagate_into_gimple_cond(), fully_constant_vn_reference_p(), gen_counter_update(), generate_strlen_builtin_using_rawmemchr(), get_bool_state(), get_compare_parts(), scalar_cond_masked_key::get_cond_ops_from_tree(), get_default_value(), get_legacy_range(), get_range_strlen_dynamic(), get_symbol_constant_value(), gimple_cond_get_ops_from_tree(), gimple_fold_call(), gimple_fold_partial_load_store_mem_ref(), gimple_fold_stmt_to_constant_1(), gimple_lower_bitint(), gimplify_bind_expr(), gimplify_call_expr(), gimplify_expr(), gimplify_init_constructor(), gimplify_omp_affinity(), init_subtree_with_zero(), instrument_builtin(), instrument_builtin_call(), instrument_nonnull_arg(), instrument_nonnull_return(), instrument_si_overflow(), isolate_path(), lower_builtin_setjmp(), lower_lastprivate_clauses(), lower_omp_for_scan(), lower_omp_task_reductions(), lower_omp_teams(), lower_rec_input_clauses(), lower_reduction_clauses(), lower_vec_perm(), lto_input_ts_poly_tree_pointers(), make_range_step(), match_single_bit_test(), match_uaddc_usubc(), maybe_optimize_arith_overflow(), ipa_param_body_adjustments::modify_assignment(), native_encode_initializer(), native_interpret_vector_part(), neutral_op_for_reduction(), number_of_iterations_cltz(), number_of_iterations_cltz_complement(), number_of_iterations_popcount(), object_sizes_execute(), omp_extract_for_data(), omp_reduction_init_op(), optimize_atomic_bit_test_and(), optimize_mask_stores(), optimize_range_tests_to_bit_test(), optimize_range_tests_var_bound(), optimize_vector_constructor(), process_bb(), propagate_tree_value_into_stmt(), range_includes_zero_p(), ref_at_iteration(), remap_ssa_name(), replace_stmt_with_simplification(), rewrite_use_address(), simd_clone_adjust(), simplify_using_ranges::simplify_abs_using_ranges(), avail_exprs_stack::simplify_binary_operation(), simplify_builtin_call(), simplify_using_ranges::simplify_div_or_mod_using_ranges(), simplify_vector_constructor(), spaceship_replacement(), tree_optimize_tail_calls_1(), ubsan_encode_value(), ubsan_expand_null_ifn(), ubsan_expand_objsize_ifn(), ubsan_expand_vptr_ifn(), undistribute_bitref_for_vector(), undistribute_ops_list(), vect_build_one_gather_load_call(), vect_build_slp_tree_2(), vect_create_constant_vectors(), vect_create_epilog_for_reduction(), vect_create_nonlinear_iv_init(), vect_do_peeling(), vect_gen_loop_len_mask(), vect_gen_while(), vect_get_mask_load_else(), vect_get_strided_load_store_ops(), vect_init_vector(), vect_loop_versioning(), vect_peel_nonlinear_iv_init(), vect_recog_bitfield_ref_pattern(), vect_recog_bool_pattern(), vect_recog_ctz_ffs_pattern(), vect_recog_gather_scatter_pattern(), vect_remove_slp_scalar_calls(), vect_set_loop_condition_normal(), vect_set_loop_condition_partial_vectors(), vect_transform_loop(), vect_update_init_of_dr(), vector_element(), vectorizable_call(), vectorizable_early_exit(), vectorizable_live_operation(), vectorizable_load(), vectorizable_scan_store(), vectorizable_simd_clone_call(), vectorize_fold_left_reduction(), vn_reference_lookup_3(), warn_return_addr_local(), worker_single_copy(), and worker_single_simple().
tree builtin_decl_unreachable | ( | ) |
The built-in decl to use to mark code points believed to be unreachable. Typically __builtin_unreachable, but __builtin_trap if -fsanitize=unreachable -fsanitize-trap=unreachable. If only -fsanitize=unreachable, we rely on sanopt to replace calls with the appropriate ubsan function. When building a call directly, use {gimple_},build_builtin_unreachable instead.
References builtin_decl_explicit(), sanitize_flags_p(), and SANITIZE_UNREACHABLE.
Referenced by eliminate_dom_walker::eliminate_stmt(), gimple_get_virt_method_for_vtable(), ipa_impossible_devirt_target(), ipa_make_edge_direct_to_target(), redirect_to_unreachable(), walk_polymorphic_call_targets(), and walk_polymorphic_call_targets().
tree byte_position | ( | const_tree | field | ) |
Return the byte position of FIELD, in bytes from the start of the record. This is a tree of type sizetype.
References byte_from_pos(), DECL_FIELD_BIT_OFFSET, and DECL_FIELD_OFFSET.
Referenced by component_ref_size(), decl_init_size(), decode_addr_const(), field_at_offset(), field_byte_offset(), handle_component_ref(), handle_warn_if_not_align(), inbounds_memaccess_p(), int_byte_position(), ipa_get_stmt_member_ptr_load_param(), lower_omp_task_reductions(), and native_interpret_aggregate().
Insert INTEGER_CST T into a cache of integer constants. And return the cached constant (which may or may not be T). If MIGHT_DUPLICATE is false, and T falls into the type's 'smaller values' range, there cannot be an existing entry. Otherwise, if MIGHT_DUPLICATE is true, or the value is large, should an existing entry exist, it is returned (rather than inserting T).
References gcc_assert, gcc_checking_assert, gcc_unreachable, HOST_BITS_PER_WIDE_INT, int_cst_hash_table, integer_minus_onep(), integer_onep(), integer_zerop(), wi::ltu_p(), make_tree_vec(), wi::neg_p(), r, wi::to_wide(), TREE_CODE, TREE_INT_CST_ELT, TREE_OVERFLOW, tree_to_shwi(), tree_to_uhwi(), TREE_TYPE, TREE_VEC_ELT, TYPE_CACHED_VALUES, TYPE_CACHED_VALUES_P, TYPE_PRECISION, and TYPE_UNSIGNED.
|
inlinestatic |
Cache wide_int CST into the TYPE_CACHED_VALUES cache for TYPE. SLOT is the slot entry to store it in, and MAX_SLOTS is the maximum number of slots that can be cached for the type.
References build_new_int_cst(), gcc_checking_assert, make_tree_vec(), TREE_VEC_ELT, TYPE_CACHED_VALUES, and TYPE_CACHED_VALUES_P.
Referenced by wide_int_to_tree_1().
Returns element number IDX (zero-origin) of chain CHAIN, or NULL_TREE.
References TREE_CHAIN.
bool chain_member | ( | const_tree | elem, |
const_tree | chain ) |
Return true if ELEM is part of the chain CHAIN.
References DECL_CHAIN.
Concatenate two chains of nodes (chained through TREE_CHAIN) by modifying the last node in chain 1 to point to chain 2. This is the Lisp primitive `nconc'.
References gcc_assert, and TREE_CHAIN.
Referenced by decl_attributes(), declare_inline_vars(), declare_vars(), finalize_nesting_tree_1(), gimple_bind_append_vars(), gimplify_asm_expr(), maybe_canonicalize_argtypes(), scan_omp_for(), and self_referential_size().
|
static |
Returns true iff CAND is equivalent to BASE with ALIGN.
References attribute_list_equal(), check_lang_type(), TYPE_ALIGN, TYPE_ATTRIBUTES, TYPE_CONTEXT, TYPE_NAME, TYPE_QUALS, and TYPE_USER_ALIGN.
Referenced by build_aligned_type().
bool check_base_type | ( | const_tree | cand, |
const_tree | base ) |
Returns true iff unqualified CAND and BASE are equivalent.
References attribute_list_equal(), find_atomic_core_type(), TYPE_ALIGN, TYPE_ATTRIBUTES, TYPE_CONTEXT, TYPE_NAME, TYPE_QUAL_ATOMIC, TYPE_QUALS, and TYPE_USER_ALIGN.
Referenced by check_qualified_type(), get_nearest_type_subqualifiers(), and modified_type_die().
bool check_lang_type | ( | const_tree | cand, |
const_tree | base ) |
Returns true iff CAND and BASE have equivalent language-specific qualifiers.
References NULL, TREE_CODE, lang_hooks_for_types::type_hash_eq, and lang_hooks::types.
Referenced by check_aligned_type(), check_qualified_type(), and modified_type_die().
bool check_qualified_type | ( | const_tree | cand, |
const_tree | base, | ||
int | type_quals ) |
Returns true iff CAND is equivalent to BASE with TYPE_QUALS.
References check_base_type(), check_lang_type(), and TYPE_QUALS.
Referenced by build_opaque_vector_type(), and get_qualified_type().
void clean_symbol_name | ( | char * | p | ) |
P is a string that will be used in a symbol. Mask out any characters that are not valid in that context.
Referenced by compute_comp_unit_symbol(), create_loop_fn(), and get_file_function_name().
|
static |
References i, MAX_INT_CACHED_PREC, nonstandard_integer_type_cache, and NULL.
const char * combined_fn_name | ( | combined_fn | fn | ) |
Return the name of combined function FN, for debugging purposes.
References as_builtin_fn(), as_internal_fn(), builtin_decl_explicit(), builtin_fn_p(), DECL_NAME, IDENTIFIER_POINTER, and internal_fn_name().
Return true if CODE represents a ternary tree code for which the first two operands are commutative. Otherwise return false.
Return true if CODE represents a commutative tree code. Otherwise return false.
int compare_tree_int | ( | const_tree | t, |
unsigned HOST_WIDE_INT | u ) |
Compare the value of T, an INTEGER_CST, with U, an unsigned integer value. Return -1, 0, or 1 if the value of T is less than, equal to, or greater than U, respectively.
References tree_fits_uhwi_p(), TREE_INT_CST_LOW, and tree_int_cst_sgn().
Referenced by addr_object_size(), alloca_call_type(), analyze_siv_subscript_cst_affine(), check_for_plus_in_loops(), compare_nonzero_chars(), compare_nonzero_chars(), compute_builtin_object_size(), compute_trims(), decode_field_reference(), do_jump(), tree_switch_conversion::bit_test_cluster::emit(), emit_case_dispatch_table(), cgraph_node::expand(), expand_builtin_object_size(), expand_expr_real_1(), extract_bit_test_mask(), fold_binary_loc(), fold_builtin_object_size(), fold_read_from_constant_string(), get_bitfield_rep(), get_stridx_plus_constant(), gimple_fold_builtin_fputs(), gimple_fold_builtin_memory_op(), gimplify_parameters(), initialize_argument_information(), is_aligning_offset(), layout_decl(), layout_type(), maybe_optimize_mod_cmp(), non_rewritable_lvalue_p(), nonnull_arg_p(), normalize_offset(), operand_compare::operand_equal_p(), optimize_range_tests_to_bit_test(), plus_stmt_object_size(), predict_loops(), rtl_for_decl_init(), simplify_builtin_call(), size_for_offset(), ubsan_expand_null_ifn(), vect_analyze_data_ref_access(), vect_recog_divmod_pattern(), and verify_gimple_assign_single().
Return a tree representing the offset, in bytes, of the field referenced by EXP. This does not include any offset in DECL_FIELD_BIT_OFFSET.
References DECL_FIELD_OFFSET, DECL_OFFSET_ALIGN, exp(), EXPR_LOCATION, fold_convert_loc(), size_binop_loc(), size_int, sizetype, SUBSTITUTE_PLACEHOLDER_IN_EXPR, TREE_OPERAND, and TREE_TYPE.
Referenced by adjust_offset_for_component_ref(), compute_object_offset(), copy_reference_ops_from_ref(), dr_analyze_indices(), dump_generic_node(), eliminate_dom_walker::eliminate_stmt(), get_addr_base_and_unit_offset_1(), get_bitfield_rep(), get_inner_reference(), get_mem_align_offset(), get_ref_base_and_extent(), gimplify_compound_lval(), gimplify_scan_omp_clauses(), idx_find_step(), ref_at_iteration(), strip_offset_1(), and widen_memory_access().
special_array_member component_ref_sam_type | ( | tree | ref | ) |
Determines the special array member type for the array reference REF.
References array_ref_flexible_size_p(), DECL_SIZE_UNIT, int_0, int_n, integer_all_onesp(), integer_zerop(), none, wi::to_offset(), trail_0, trail_1, trail_n, TREE_CODE, tree_int_cst_lt(), TREE_OPERAND, TREE_TYPE, TYPE_DOMAIN, TYPE_MAX_VALUE, TYPE_MIN_VALUE, and TYPE_SIZE_UNIT.
Referenced by array_bounds_checker::check_array_ref(), and component_ref_size().
tree component_ref_size | ( | tree | ref, |
special_array_member * | sam ) |
Determines the size of the member referenced by the COMPONENT_REF REF, using its initializer expression if necessary in order to determine the size of an initialized flexible array member. If non-null, set *SAM to the type of special array member. Returns the size as sizetype (which might be zero for an object with an uninitialized flexible array member) or null if the size cannot be determined.
References byte_position(), component_ref_sam_type(), DECL_EXTERNAL, DECL_INITIAL, DECL_NOT_FLEXARRAY, DECL_P, DECL_SIZE_UNIT, error_mark_node, gcc_assert, get_addr_base_and_unit_offset(), get_initializer_for(), int_0, int_n, known_lt, NULL_TREE, size_zero_node, trail_n, TREE_CODE, tree_fits_poly_int64_p(), tree_int_cst_equal(), TREE_OPERAND, tree_to_poly_int64(), TREE_TYPE, TYPE_SIZE_UNIT, useless_type_conversion_p(), VAR_P, and wide_int_to_tree().
Referenced by decl_init_size(), get_up_bounds_for_array_ref(), and set_component_ref_size().
bool contains_bitfld_component_ref_p | ( | const_tree | ref | ) |
Return true if REF has a COMPONENT_REF with a bit-field field declaration somewhere in it.
References DECL_BIT_FIELD, handled_component_p(), TREE_CODE, and TREE_OPERAND.
Referenced by analyze_agg_content_value(), decompose_param_expr(), load_from_unmodified_param_or_agg(), and sra_modify_assign().
bool contains_placeholder_p | ( | const_tree | exp | ) |
Return true if EXP contains a PLACEHOLDER_EXPR, i.e. if it represents a size or offset that depends on a field within a record.
References CONTAINS_PLACEHOLDER_P, exp(), FOR_EACH_CONST_CALL_EXPR_ARG, tcc_binary, tcc_comparison, tcc_exceptional, tcc_expression, tcc_reference, tcc_unary, tcc_vl_exp, TREE_CHAIN, TREE_CODE, TREE_CODE_CLASS, TREE_CODE_LENGTH, TREE_OPERAND, and TREE_VALUE.
Referenced by save_expr().
Return a copy of a chain of nodes, chained through the TREE_CHAIN field. For example, this can copy a list made of TREE_LIST nodes.
References copy_node(), and TREE_CHAIN.
Referenced by create_omp_child_function(), decl_attributes(), expand_omp_target(), init_attr_rdwr_indices(), and split_complex_types().
Return a new node with the same contents as NODE except that its TREE_CHAIN, if it has one, is zero and it has a fresh uid.
References allocate_decl_uid(), CODE_CONTAINS_STRUCT, DECL_HAS_DEBUG_EXPR_P, DECL_HAS_INIT_PRIORITY_P, DECL_HAS_VALUE_EXPR_P, DECL_INIT_PRIORITY, DECL_PT_UID, DECL_PT_UID_SET_P, DECL_STRUCT_FUNCTION, DECL_UID, DECL_VALUE_EXPR, gcc_assert, ggc_alloc(), ggc_alloc_tree_node_stat(), next_debug_decl_uid, next_type_uid, NULL, NULL_TREE, PASS_MEM_STAT, record_node_allocation_statistics(), SET_DECL_INIT_PRIORITY, SET_DECL_PT_UID, SET_DECL_VALUE_EXPR, tcc_declaration, tcc_type, TREE_ASM_WRITTEN, TREE_CHAIN, TREE_CODE, TREE_CODE_CLASS, TREE_OPTIMIZATION, tree_size(), TREE_TARGET_OPTION, TREE_VISITED, TYPE_CACHED_VALUES, TYPE_CACHED_VALUES_P, TYPE_SYMTAB_ADDRESS, TYPE_SYMTAB_DIE, TYPE_UID, and VAR_P.
Referenced by build_distinct_type_copy(), copy_list(), drop_tree_overflow(), substitute_in_expr(), and substitute_placeholder_in_expr().
unsigned crc32_string | ( | unsigned | chksum, |
const char * | string ) |
Generate a crc32 of a string.
References crc32_byte().
Referenced by coverage_checksum_string(), get_file_function_name(), and set_random_seed().
unsigned crc32_unsigned_n | ( | unsigned | chksum, |
unsigned | value, | ||
unsigned | bytes ) |
Generate a crc32 of the low BYTES bytes of VALUE.
References SYNDROME.
Referenced by crc32_byte(), and crc32_unsigned().
tree create_artificial_label | ( | location_t | loc | ) |
Create a nameless artificial label and put it in the current function context. The label has a location of LOC. Returns the newly created label.
References build_decl(), current_function_decl, DECL_ARTIFICIAL, DECL_CONTEXT, DECL_IGNORED_P, NULL_TREE, and void_type_node.
Referenced by adjust_assumption_stmt_r(), build_and_jump(), build_instrumentation_call(), clear_padding_emit_loop(), convert_nl_goto_reference(), emit_post_landing_pad(), frob_into_branch_around(), tree_switch_conversion::switch_conversion::gen_inbound_check(), gimple_block_label(), gimplify_cond_expr(), gimplify_init_ctor_eval_range(), gimplify_loop_expr(), gimplify_omp_affinity(), gimplify_omp_depend(), gimplify_omp_dispatch(), gimplify_omp_loop_xform(), gimplify_switch_expr(), handle_abnormal_edges(), lower_builtin_posix_memalign(), lower_builtin_setjmp(), lower_catch(), lower_eh_filter(), lower_gimple_return(), lower_lastprivate_clauses(), lower_omp_1(), lower_omp_for_scan(), lower_omp_ordered(), lower_omp_single_copy(), lower_omp_single_simple(), lower_omp_target(), lower_omp_task_reductions(), lower_omp_teams(), lower_rec_input_clauses(), lower_reduction_clauses(), lower_transaction(), lower_try_finally_copy(), lower_try_finally_fallthru_label(), lower_try_finally_nofallthru(), lower_try_finally_onedest(), lower_try_finally_switch(), maybe_add_implicit_barrier_cancel(), new_label_mapper(), omp_apply_tile(), omp_copy_decl(), replace_goto_queue_cond_clause(), scan_omp_simd(), and sjlj_emit_dispatch_table().
bool cst_and_fits_in_hwi | ( | const_tree | x | ) |
Checks that X is integer constant that can be expressed in (unsigned) HOST_WIDE_INT without loss of precision.
References TREE_CODE, tree_fits_shwi_p(), and tree_fits_uhwi_p().
Referenced by add_autoinc_candidates(), adjust_nested_loop_clauses(), classify_builtin_st(), dump_mem_details(), find_or_create_group(), force_expr_to_var_cost(), gather_memory_references_ref(), idx_analyze_ref(), initialize_matrix_A(), int_cst_value(), inverse(), issue_prefetch_ref(), iv_elimination_compare_lt(), prune_ref_by_group_reuse(), prune_ref_by_self_reuse(), ptr_difference_const(), ptrdiff_tree_p(), should_issue_prefetch_p(), and strip_offset_1().
Return the values of the elements of a CONSTRUCTOR as a vector of trees.
References CONSTRUCTOR_ELTS, CONSTRUCTOR_NELTS, FOR_EACH_CONSTRUCTOR_VALUE, and vec_alloc().
bool decl_address_invariant_p | ( | const_tree | op | ) |
Return whether OP is a DECL whose address is function-invariant.
References current_function_decl, DECL_CONTEXT, DECL_EXTERNAL, decl_function_context(), DECL_THREAD_LOCAL_P, TREE_CODE, and TREE_STATIC.
Referenced by gimple_fold_stmt_to_constant_1(), is_gimple_invariant_address(), is_gimple_mem_ref_addr(), transaction_invariant_address_p(), and tree_invariant_p_1().
bool decl_address_ip_invariant_p | ( | const_tree | op | ) |
Return whether OP is a DECL whose address is interprocedural-invariant.
References DECL_DLLIMPORT_P, DECL_EXTERNAL, DECL_THREAD_LOCAL_P, TREE_CODE, and TREE_STATIC.
Referenced by is_gimple_ip_invariant_address(), and loc_list_from_tree_1().
The name of the object as the assembler will see it (but before any translations made by ASM_OUTPUT_LABELREF). Often this is the same as DECL_NAME. It is an IDENTIFIER_NODE.
References DECL_ASSEMBLER_NAME_RAW, DECL_ASSEMBLER_NAME_SET_P, and lang_hooks::set_decl_assembler_name.
Referenced by assign_assembler_name_if_needed(), and get_function_name().
tree decl_comdat_group | ( | const_tree | node | ) |
When the target supports COMDAT groups, this indicates which group the DECL is associated with. This can be either an IDENTIFIER_NODE or a decl, in which case its DECL_ASSEMBLER_NAME identifies the group.
References symtab_node::get(), symtab_node::get_comdat_group(), and NULL.
tree decl_comdat_group_id | ( | const_tree | node | ) |
Likewise, but make sure it's been reduced to an IDENTIFIER_NODE.
References symtab_node::get(), symtab_node::get_comdat_group_id(), and NULL.
Referenced by ipa_tm_create_version_alias(), and write_symbol().
Insert a mapping FROM->empty vector of debug arguments in the value expression hashtable.
References hash_table< Descriptor, Lazy, Allocator >::create_ggc(), debug_args_for_decl, decl_debug_args_lookup(), DECL_HAS_DEBUG_ARGS_P, DECL_UID, ggc_alloc(), and NULL.
Referenced by input_function(), ipa_param_adjustments::modify_call(), and tree_function_versioning().
Lookup a vector of debug arguments for FROM, and return it if we find one.
References debug_args_for_decl, DECL_HAS_DEBUG_ARGS_P, DECL_UID, gcc_checking_assert, and NULL.
Referenced by copy_debug_stmt(), decl_debug_args_insert(), expand_call_stmt(), expand_debug_source_expr(), output_function(), prepare_call_arguments(), split_function(), and tree_function_versioning().
Insert a mapping FROM->TO in the debug expression hashtable.
References debug_expr_for_decl, DECL_UID, and ggc_alloc().
Lookup a debug expression for FROM, and return it if we find one.
References debug_expr_for_decl, DECL_UID, and NULL_TREE.
void decl_fini_priority_insert | ( | tree | decl, |
priority_type | priority ) |
Set the finalization priority for DECL to PRIORITY.
References DEFAULT_INIT_PRIORITY, cgraph_node::get(), cgraph_node::get_create(), and cgraph_node::set_fini_priority().
Referenced by cgraph_build_static_cdtor_1().
priority_type decl_fini_priority_lookup | ( | tree | decl | ) |
Return the finalization priority for DECL.
References DEFAULT_INIT_PRIORITY, cgraph_node::get(), and cgraph_node::get_fini_priority().
Referenced by rest_of_handle_final().
tree decl_function_context | ( | const_tree | decl | ) |
Return the innermost context enclosing DECL that is a FUNCTION_DECL, or zero if none.
References BLOCK_SUPERCONTEXT, DECL_CONTEXT, DECL_VIRTUAL_P, get_containing_scope(), TREE_CODE, TREE_TYPE, TREE_VALUE, TYPE_ARG_TYPES, and TYPE_MAIN_VARIANT.
Referenced by analyze_functions(), can_implement_as_sibling_call_p(), computable_teams_clause(), convert_gimple_call(), convert_local_omp_clauses(), convert_local_reference_op(), convert_local_reference_stmt(), convert_nl_goto_reference(), convert_nonlocal_omp_clauses(), convert_nonlocal_reference_op(), convert_nonlocal_reference_stmt(), convert_tramp_reference_op(), copy_tree_body_r(), decl_address_invariant_p(), expand_expr_real_1(), expand_goto(), force_label_rtx(), get_nonlocal_debug_decl(), gimple_verify_flow_info(), gimplify_expr(), gimplify_label_expr(), gimplify_modify_expr(), gimplify_var_or_parm_decl(), instrument_derefs(), instrument_object_size(), lookup_field_for_decl(), new_die(), note_nonlocal_vla_type(), omp_copy_decl(), remap_gimple_op_r(), remap_vla_decls(), rest_of_decl_compilation(), tree_is_indexable(), type_all_derivations_known_p(), and verify_expr_location_1().
void decl_init_priority_insert | ( | tree | decl, |
priority_type | priority ) |
Set the initialization priority for DECL to PRIORITY.
References DEFAULT_INIT_PRIORITY, symtab_node::get(), cgraph_node::get_create(), varpool_node::get_create(), symtab_node::set_init_priority(), and VAR_P.
Referenced by cgraph_build_static_cdtor_1().
priority_type decl_init_priority_lookup | ( | tree | decl | ) |
Return the initialization priority for DECL.
References DEFAULT_INIT_PRIORITY, symtab_node::get(), and symtab_node::get_init_priority().
Referenced by rest_of_handle_final().
const char * decl_section_name | ( | const_tree | node | ) |
When the target supports named section, return its name as IDENTIFIER_NODE or NULL if it is in no section.
References symtab_node::get(), symtab_node::get_section(), and NULL.
enum tls_model decl_tls_model | ( | const_tree | node | ) |
Return TLS model of a variable NODE.
References varpool_node::get(), varpool_node::tls_model, and TLS_MODEL_NONE.
Referenced by function_and_variable_visibility().
tree decl_type_context | ( | const_tree | decl | ) |
Return the innermost context enclosing DECL that is a RECORD_TYPE, UNION_TYPE or QUAL_UNION_TYPE, or zero if none. TYPE_DECLs and FUNCTION_DECLs are transparent to this function.
References BLOCK_SUPERCONTEXT, DECL_CONTEXT, gcc_unreachable, NULL_TREE, and TREE_CODE.
Referenced by rest_of_decl_compilation().
Insert a mapping FROM->TO in the value expression hashtable.
References DECL_UID, ggc_alloc(), protected_set_expr_location_unshare(), UNKNOWN_LOCATION, and value_expr_for_decl.
Lookup a value expression for FROM, and return it if we find one.
References DECL_UID, NULL_TREE, and value_expr_for_decl.
bool default_is_empty_record | ( | const_tree | type | ) |
Implement TARGET_EMPTY_RECORD_P. Return true if TYPE is an empty type that shouldn't be passed via stack.
References abi_version_at_least, error_mark_node, is_empty_type(), TREE_ADDRESSABLE, and TYPE_MAIN_VARIANT.
tree double_int_to_tree | ( | tree | type, |
double_int | cst ) |
Constructs tree in type TYPE from with value given by CST. Signedness of CST is assumed to be the same as the signedness of TYPE.
References TYPE_SIGN, and wide_int_to_tree().
Referenced by native_encode_fixed().
Drops the TREE_OVERFLOW flag from T.
References tree_vector_builder::build(), copy_node(), count, drop_tree_overflow(), vector_builder< T, Shape, Derived >::encoded_nelts(), gcc_checking_assert, i, vector_builder< T, Shape, Derived >::new_unary_operation(), poly_int_tree_p(), wi::to_poly_wide(), TREE_CODE, TREE_IMAGPART, TREE_OVERFLOW, TREE_REALPART, TREE_TYPE, VECTOR_CST_ELT, and wide_int_to_tree().
Referenced by canonicalize_constructor_val(), canonicalize_value(), drop_tree_overflow(), factor_out_conditional_operation(), fold_builtin_arith_overflow(), fold_const_call(), fold_const_call(), get_single_symbol(), range_query::get_tree_range(), gimple_fold_call(), gimple_resimplify1(), gimple_resimplify2(), gimple_resimplify3(), gimplify_expr(), maybe_optimize_arith_overflow(), set_ssa_name_value(), and split_tree().
void dump_tree_statistics | ( | void | ) |
Print debugging information about tree nodes generated during the compile, and any language-specific information.
References all_kinds, get_tree_code_name(), i, MAX_TREE_CODES, phinodes_print_statistics(), mem_usage::print_dash_line(), print_debug_expr_statistics(), print_type_hash_statistics(), print_value_expr_statistics(), PRIu64, SIZE_AMOUNT, ssanames_print_statistics(), tree_code_counts, tree_codes_cmp(), TREE_MEM_USAGE_SPACES, tree_node_counts, tree_node_kind_names, tree_node_sizes, and tree_nodes_cmp().
Referenced by dump_memory_report().
machine_mode element_mode | ( | const_tree | t | ) |
Return the machine mode of T. For vectors, returns the mode of the inner type. The main use case is to feed the result to HONOR_NANS, avoiding the BLKmode that a direct TYPE_MODE (T) might return.
References TREE_CODE, TREE_TYPE, TYPE_MODE, TYPE_P, and VECTOR_TYPE_P.
Referenced by default_vectorize_related_mode(), HONOR_INFINITIES(), HONOR_NANS(), HONOR_SIGN_DEPENDENT_ROUNDING(), HONOR_SIGNED_ZEROS(), HONOR_SNANS(), record_edge_info(), related_vector_mode(), sign_mask_for(), tree_expr_finite_p(), try_special_add_to_ops(), vect_truncate_gather_scatter_offset(), verify_gimple_assign_binary(), verify_gimple_assign_ternary(), and verify_gimple_assign_unary().
unsigned int element_precision | ( | const_tree | type | ) |
Return the precision of the type, or for a complex or vector type the precision of the type of its elements.
References TREE_CODE, TREE_TYPE, TYPE_P, and TYPE_PRECISION.
Referenced by convert_to_integer_1(), convert_to_real_1(), divmod_candidate_p(), fold_binary_loc(), fold_negate_expr_1(), get_known_nonzero_bits_1(), get_nonzero_bits_1(), hashable_expr_equal_p(), loop_exits_before_overflow(), movement_possibility_1(), negate_expr_p(), operand_compare::operand_equal_p(), strip_float_extensions(), and verify_gimple_assign_unary().
Error out with an identifier which was marked 'unavailable'.
References DECL_ATTRIBUTES, DECL_NAME, DECL_P, DECL_SOURCE_LOCATION, error(), inform(), lookup_attribute(), msg, NULL_TREE, TREE_CODE, TREE_STRING_POINTER, TREE_TYPE, TREE_VALUE, TYPE_ATTRIBUTES, TYPE_NAME, TYPE_P, and TYPE_STUB_DECL.
tree excess_precision_type | ( | tree | type | ) |
If TYPE is a real or complex floating-point type and the target does not directly support arithmetic on TYPE then return the wider type to be used for arithmetic on TYPE. Otherwise, return NULL_TREE.
References bfloat16_type_node, complex_double_type_node, complex_float_type_node, complex_long_double_type_node, double_type_node, EXCESS_PRECISION_FAST, EXCESS_PRECISION_FLOAT16, EXCESS_PRECISION_TYPE_FAST, EXCESS_PRECISION_TYPE_FLOAT16, EXCESS_PRECISION_TYPE_STANDARD, float16_type_node, float_type_node, FLT_EVAL_METHOD_PROMOTE_TO_DOUBLE, FLT_EVAL_METHOD_PROMOTE_TO_FLOAT, FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16, FLT_EVAL_METHOD_PROMOTE_TO_LONG_DOUBLE, FLT_EVAL_METHOD_UNPREDICTABLE, gcc_assert, gcc_unreachable, long_double_type_node, NULL_TREE, targetm, TREE_CODE, TREE_TYPE, and TYPE_MODE.
Return true if an expression with CODE has to have the same result type as its first operand.
Referenced by ipa_get_jf_arith_result().
|
static |
This function checks to see if TYPE matches the size one of the built-in atomic types, and returns that core atomic type.
References atomicDI_type_node, atomicHI_type_node, atomicQI_type_node, atomicSI_type_node, atomicTI_type_node, NULL_TREE, tree_fits_uhwi_p(), tree_to_uhwi(), and TYPE_SIZE.
Referenced by build_qualified_type(), and check_base_type().
Given a tree EXP, find all occurrences of references to fields in a PLACEHOLDER_EXPR and place them in vector REFS without duplicates. Also record VAR_DECLs and CONST_DECLs. Note that we assume here that EXP contains only arithmetic expressions or CALL_EXPRs with PLACEHOLDER_EXPRs occurring only in their argument list.
References exp(), FIND_PLACEHOLDER_IN_EXPR, gcc_unreachable, i, push_without_duplicates(), REFERENCE_CLASS_P, refs, tcc_binary, tcc_comparison, tcc_constant, tcc_declaration, tcc_exceptional, tcc_expression, tcc_reference, tcc_unary, tcc_vl_exp, TREE_CHAIN, TREE_CODE, TREE_CODE_CLASS, TREE_CODE_LENGTH, TREE_OPERAND, TREE_OPERAND_LENGTH, TREE_STATIC, and TREE_VALUE.
Referenced by self_referential_size().
Subprogram of following function. Called by walk_tree. Return *TP if it is an automatic variable or parameter of the function passed in as DATA.
References auto_var_in_fn_p(), DECL_P, NULL_TREE, and TYPE_P.
tree first_field | ( | const_tree | type | ) |
Returns the first FIELD_DECL in the TYPE_FIELDS of the RECORD_TYPE or UNION_TYPE TYPE, or NULL_TREE if none.
References TREE_CHAIN, TREE_CODE, and TYPE_FIELDS.
Referenced by aggregate_value_p(), assign_parm_find_data_types(), get_vec_alignment_for_record_type(), initialize_argument_information(), load_register_parameters(), and pass_by_reference().
bool fixed_zerop | ( | const_tree | expr | ) |
Return true if EXPR is the fixed-point constant zero, or a location wrapper for such a constant.
References STRIP_ANY_LOCATION_WRAPPER, TREE_CODE, and TREE_FIXED_CST.
Referenced by initializer_zerop(), operation_could_trap_helper_p(), some_nonzerop(), and zerop().
bool flexible_array_type_p | ( | const_tree | type | ) |
Determine whether TYPE is a structure with a flexible array member, or a union containing such a structure (possibly recursively).
References DECL_CHAIN, flexible_array_type_p(), last, NULL_TREE, TREE_CODE, TREE_TYPE, TYPE_DOMAIN, TYPE_FIELDS, TYPE_MAX_VALUE, and TYPE_SIZE.
Referenced by fixup_child_record_type(), flexible_array_type_p(), and lower_omp_target().
unsigned fndecl_dealloc_argno | ( | tree | fndecl | ) |
Return the zero-based number corresponding to the argument being deallocated if FNDECL is a deallocation function or an out-of-bounds value if it isn't.
References BUILT_IN_NORMAL, DECL_ASSEMBLER_NAME, DECL_ATTRIBUTES, DECL_FUNCTION_CODE(), DECL_IS_OPERATOR_DELETE_P, DECL_IS_REPLACEABLE_OPERATOR, fndecl_built_in_p(), id_equal(), lookup_attribute(), TREE_CHAIN, TREE_INT_CST_LOW, TREE_VALUE, and UINT_MAX.
tree force_fit_type | ( | tree | type, |
const poly_wide_int_ref & | cst, | ||
int | overflowable, | ||
bool | overflowed ) |
We force the wide_int CST to the range of the type TYPE by sign or zero extending it. OVERFLOWABLE indicates if we are interested in overflow of the value, when >0 we are only interested in signed overflow, for <0 we are interested in any overflow. OVERFLOWED indicates whether overflow has already occurred. CONST_OVERFLOWED indicates whether constant overflow has already occurred. We force T's value to be within range of T's type (by setting to 0 or 1 all the bits outside the type's range). We set TREE_OVERFLOWED if, OVERFLOWED is nonzero, or OVERFLOWABLE is >0 and signed overflow occurs or OVERFLOWABLE is <0 and any overflow occurs We return a new tree node for the extended wide_int. The node is shared if no overflow flags are set.
References build_new_int_cst(), build_new_poly_int_cst(), poly_int< N, C >::coeffs, tree_poly_int_cst::coeffs, wi::fits_to_tree_p(), poly_int< N, C >::from(), i, poly_int< N, C >::is_constant(), NUM_POLY_INT_COEFFS, SIGNED, TREE_OVERFLOW, TYPE_PRECISION, TYPE_SIGN, and wide_int_to_tree().
Referenced by const_binop(), fold_abs_const(), fold_convert_const_int_from_fixed(), fold_convert_const_int_from_int(), fold_convert_const_int_from_real(), fold_div_compare(), fold_negate_const(), fold_not_const(), fold_unary_loc(), int_const_binop(), and round_up_loc().
void free_node | ( | tree | node | ) |
Free tree node.
References BINFO_BASE_ACCESSES, BLOCK_NONLOCALIZED_VARS, CODE_CONTAINS_STRUCT, CONSTRUCTOR_ELTS, gcc_checking_assert, get_stats_node_kind(), ggc_free(), TREE_CODE, tree_code_counts, tree_node_counts, tree_node_sizes, TREE_OPTIMIZATION, tree_size(), TREE_TARGET_OPTION, and vec_free().
Referenced by type_hash_canon().
If EXPR refers to a character array or pointer declared attribute nonstring, return a decl for that array or pointer and set *REF to the referenced enclosing object or pointer. Otherwise return null.
References DECL_ATTRIBUTES, DECL_P, expr, get_attr_nonstring_decl(), gimple_assign_rhs1(), gimple_assign_rhs_code(), is_gimple_assign(), lookup_attribute(), NULL_TREE, SSA_NAME_DEF_STMT, SSA_NAME_VAR, TREE_CODE, and TREE_OPERAND.
Referenced by get_attr_nonstring_decl(), gimple_fold_builtin_strncpy(), maybe_diag_stxncpy_trunc(), and maybe_warn_nonstring_arg().
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(), TREE_CODE, and TREE_OPERAND.
Referenced by nontrapping_dom_walker::add_or_mark_expr(), adjust_references_in_caller(), ao_ref_init_from_ptr_and_range(), array_ref_flexible_size_p(), avoid_type_punning_on_regs(), base_object_writable(), build_access_from_call_arg(), build_access_from_expr_1(), can_escape(), can_sm_ref_p(), canonicalize_constructor_val(), check_op(), compute_live_vars_visit(), cond_if_else_store_replacement_1(), copy_ref_info(), create_specialized_node(), cgraph_node::create_virtual_clone(), declare_return_variable(), dest_safe_for_nrv_p(), detect_type_change_from_memory_writes(), determine_base_object_1(), discover_nonconstant_array_refs(), discover_nonconstant_array_refs_r(), disqualify_base_of_expr(), dr_analyze_alias(), eliminate_local_variables_1(), eliminated_by_inlining_prob(), execute_fixup_cfg(), execute_update_addresses_taken(), expand_call_inline(), find_func_aliases(), gather_memory_references_ref(), get_base_decl(), ipa_polymorphic_call_context::get_dynamic_type(), get_memory_rtx(), get_range_strlen_tree(), get_references_in_stmt(), gimple_duplicate_bb(), gimple_ior_addresses_taken_1(), gimple_range_base_of_assignment(), gimplify_asm_expr(), gimplify_init_constructor(), gimplify_scan_omp_clauses(), handle_lhs_call(), initialize_argument_information(), instrument_null(), is_addr_local(), is_asan_mark_p(), load_from_dereferenced_name(), load_or_store_of_ptr_parameter(), lower_omp_1(), lower_omp_target(), mark_address(), mark_address_taken(), mark_load(), mark_nonssa_use(), mark_store(), maybe_remove_writeonly_store(), maybe_set_strlen_range(), maybe_warn_operand(), mem_dies_at_call(), non_rewritable_mem_ref_base(), oacc_entry_exit_ok_1(), omp_notice_variable(), param_change_prob(), parm_preserved_before_stmt_p(), points_to_possible_sra_candidate_p(), ptr_deref_may_alias_decl_p(), ptr_derefs_may_alias_p(), ptrs_compare_unequal(), readonly_data_expr(), ref_can_have_store_data_races(), ref_may_alias_global_p(), refs_local_or_readonly_memory_p(), remove_unused_locals(), scan_sharing_clauses(), scan_visit_addr(), self_inlining_addr_expr(), set_mem_attributes_minus_bitpos(), sra_modify_call_arg(), strdup_object_size(), test_nonssa_use(), tls_mem_loc_descriptor(), tree_single_nonzero_warnv_p(), unadjusted_ptr_and_unit_offset(), va_list_counter_bump(), va_list_counter_struct_op(), vect_analyze_data_refs(), vect_bb_slp_scalar_cost(), vect_get_datarefs_in_loop(), vectorizable_store(), visit_conflict(), visit_op(), visit_ref_for_mod_analysis(), and visit_reference_op_call().
tree get_binfo_at_offset | ( | tree | binfo, |
poly_int64 | offset, | ||
tree | expected_type ) |
Try to find a base info of BINFO that would have its field decl at offset OFFSET within the BINFO type and which is of EXPECTED_TYPE. If it can be found, return, otherwise return NULL_TREE.
References BINFO_BASE_ITERATE, BINFO_OFFSET, BINFO_TYPE, DECL_ARTIFICIAL, DECL_CHAIN, DECL_SIZE, i, int_bit_position(), lookup_binfo_at_offset(), NULL, NULL_TREE, offset, TREE_CODE, tree_to_shwi(), tree_to_uhwi(), TREE_TYPE, TYPE_FIELDS, and types_same_for_odr().
Referenced by possible_polymorphic_call_targets(), record_target_from_binfo(), record_targets_from_bases(), and ipa_polymorphic_call_context::restrict_to_inner_class().
combined_fn get_call_combined_fn | ( | const_tree | call | ) |
If CALL_EXPR CALL calls a normal built-in function or an internal function, return the associated function code, otherwise return CFN_LAST.
References as_combined_fn(), BUILT_IN_NORMAL, CALL_EXPR_FN, CALL_EXPR_IFN, DECL_FUNCTION_CODE(), fndecl_built_in_p(), gcc_assert, get_callee_fndecl(), tree_builtin_call_types_compatible_p(), and TREE_CODE.
Referenced by expression_expensive_p(), fold_negate_expr_1(), integer_valued_real_p(), negate_expr_p(), tree_expr_finite_p(), tree_expr_maybe_nan_p(), tree_expr_maybe_real_minus_zero_p(), tree_expr_maybe_signaling_nan_p(), and tree_invalid_nonnegative_warnv_p().
tree get_callee_fndecl | ( | const_tree | call | ) |
CALL is a CALL_EXPR. Return the declaration for the function called, or NULL_TREE if the called function cannot be determined.
References CALL_EXPR_FN, DECL_INITIAL, DECL_P, error_mark_node, gcc_assert, NULL_TREE, STRIP_NOPS, TREE_CODE, TREE_OPERAND, TREE_READONLY, and TREE_THIS_VOLATILE.
Referenced by get_call_combined_fn().
tree get_containing_scope | ( | const_tree | t | ) |
Given a DECL or TYPE, return the scope in which it was declared, or NULL_TREE if there is no containing scope.
References DECL_CONTEXT, TYPE_CONTEXT, and TYPE_P.
Referenced by decl_function_context(), and get_ultimate_context().
tree get_file_function_name | ( | const char * | type | ) |
Generate a name for a special-purpose function. The generated name may need to be unique across the whole link. Changes to this function may also require corresponding changes to xstrdup_mask_random. TYPE is some string to identify the purpose of this function to the linker or collect2; it must start with an uppercase letter, one of: I - for constructors D - for destructors N - for C++ anonymous namespaces F - for DWARF unwind frame information.
References alloca, clean_symbol_name(), crc32_string(), FILE_FUNCTION_FORMAT, first_global_object_name, get_identifier(), get_random_seed(), HOST_WIDE_INT_PRINT_HEX, input_location, LOCATION_FILE, startswith(), targetm, and weak_global_object_name.
Referenced by cgraph_build_static_cdtor_1(), self_referential_size(), and switch_to_eh_frame_section().
Given the initializer INIT, return the initializer for the field DECL if it exists, otherwise null. Used to obtain the initializer for a flexible array member and determine its size.
References CONSTRUCTOR_ELTS, FOR_EACH_CONSTRUCTOR_ELT, get_initializer_for(), i, NULL_TREE, STRIP_NOPS, and TREE_CODE.
Referenced by component_ref_size(), and get_initializer_for().
Return the value that TREE_INT_CST_EXT_NUNITS should have for an INTEGER_CST with value CST and type TYPE.
References gcc_checking_assert, wide_int_storage::get_len(), wide_int_storage::get_precision(), HOST_BITS_PER_WIDE_INT, wi::neg_p(), TYPE_PRECISION, and TYPE_UNSIGNED.
Referenced by build_new_int_cst(), and wide_int_to_tree_1().
const char * get_name | ( | tree | t | ) |
Given a tree, try to return a useful variable name that we can use to prefix a temporary that is being assigned the value of the tree. I.E. given <temp> = &A, return A.
References DECL_NAME, DECL_P, get_name(), IDENTIFIER_POINTER, NULL, SSA_NAME_IDENTIFIER, STRIP_NOPS, TREE_CODE, and TREE_OPERAND.
Referenced by alias_get_name(), create_tmp_from_val(), dt_operand::gen(), dt_simplify::gen(), dt_operand::gen_gimple_expr(), gen_lsm_tmp_name(), get_name(), gimplify_bind_expr(), gimplify_omp_for(), gimplify_parameters(), gimplify_vla_decl(), handle_simd_reference(), internal_get_tmp_var(), lower_omp_target(), lower_rec_input_clauses(), separate_decls_in_region_name(), take_address_of(), update_phi_components(), vect_create_addr_base_for_vector_ref(), vect_create_data_ref_ptr(), and vect_create_destination_var().
Return OP or a simpler expression for a narrower value which can be sign-extended or zero-extended to give back OP. Store in *UNSIGNEDP_PTR either 1 if the value should be zero-extended or 0 if the value should be sign-extended.
References build2_loc(), DECL_BIT_FIELD, DECL_SIZE, DECL_UNSIGNED, EXPR_LOCATION, fold_convert, FOR_EACH_VEC_ELT_REVERSE, get_narrower(), i, INTEGRAL_TYPE_P, TREE_CODE, tree_fits_uhwi_p(), TREE_OPERAND, tree_to_uhwi(), TREE_TYPE, lang_hooks_for_types::type_for_size, TYPE_PRECISION, TYPE_UNSIGNED, and lang_hooks::types.
Referenced by get_narrower().
bitmap get_nonnull_args | ( | const_tree | fntype | ) |
Return a bitmap with a bit set corresponding to each argument in a function call type FNTYPE declared with attribute nonnull, or null if none of the function's argument are nonnull. The caller must free the bitmap.
References attrs, BITMAP_ALLOC, bitmap_clear(), bitmap_set_bit, lookup_attribute(), NULL, NULL_TREE, TREE_CHAIN, TREE_CODE, TREE_INT_CST_LOW, TREE_VALUE, and TYPE_ATTRIBUTES.
Referenced by gimple_infer_range::gimple_infer_range(), and validate_arglist().
Return a version of the TYPE, qualified as indicated by the TYPE_QUALS, if one exists. If no qualified version exists yet, return NULL_TREE.
References check_qualified_type(), NULL_TREE, type(), TYPE_MAIN_VARIANT, TYPE_NEXT_VARIANT, and TYPE_QUALS.
Referenced by build_atomic_base(), build_qualified_type(), and modified_type_die().
int get_range_pos_neg | ( | tree | arg | ) |
Return 1 if ARG interpreted as signed in its precision is known to be always non-negative or 2 if ARG is known to be always negative, or 3 if ARG may be non-negative or negative.
References CONVERT_EXPR_CODE_P, CONVERT_EXPR_P, error_mark_node, g, get_global_range_query(), gimple_assign_rhs1(), gimple_assign_rhs_code(), INTEGRAL_TYPE_P, is_gimple_assign(), wi::neg_p(), r, wi::sext(), SIGNED, SSA_NAME_DEF_STMT, wi::to_wide(), TREE_CODE, TREE_OPERAND, TREE_TYPE, TYPE_PRECISION, and TYPE_UNSIGNED.
Referenced by expand_addsub_overflow(), expand_arith_overflow(), expand_expr_divmod(), expand_mul_overflow(), get_min_precision(), maybe_optimize_mod_cmp(), maybe_optimize_pow2p_mod_cmp(), and ubsan_expand_ptr_ifn().
Get the corresponding reference from the call to a .ACCESS_WITH_SIZE. * i.e the first argument of this call. Return NULL_TREE otherwise.
References CALL_EXPR_ARG, is_access_with_size_p(), and NULL_TREE.
|
static |
Return tree node kind based on tree CODE.
References b_kind, binfo_kind, c_kind, constr_kind, d_kind, e_kind, gcc_unreachable, id_kind, omp_clause_kind, r_kind, s_kind, ssa_name_kind, t_kind, tcc_binary, tcc_comparison, tcc_constant, tcc_declaration, tcc_exceptional, tcc_expression, tcc_reference, tcc_statement, tcc_type, tcc_unary, tcc_vl_exp, TREE_CODE_CLASS, vec_kind, and x_kind.
Referenced by free_node(), and record_node_allocation_statistics().
int get_target_clone_attr_len | ( | tree | arglist | ) |
Return length of attribute names string, if arglist chain > 1, -1 otherwise.
References TARGET_CLONES_ATTR_SEPARATOR, TREE_CHAIN, TREE_STRING_POINTER, and TREE_VALUE.
Referenced by expand_target_clones().
const char * get_tree_code_name | ( | enum tree_code | code | ) |
Wrapper for tree_code_name to ensure that tree code is valid
References MAX_TREE_CODES, and tree_code_name.
Referenced by crc_optimization::can_not_be_crc_stmt(), dequeue_and_dump(), DFS::DFS(), do_niy(), dump_binary_rhs(), dump_condition(), dump_generic_node(), dump_gimple_assign(), dump_gimple_cond(), dump_gimple_omp_for(), dump_ternary_rhs(), dump_tree_statistics(), dump_unary_rhs(), crc_symbolic_execution::execute_assign_statement(), ipa_dump_jump_function(), lto_tag_name(), lto_write_tree(), oacc_privatization_candidate_p(), expr_hash_elt::print(), print_lto_report(), print_node(), print_node_brief(), print_pre_expr(), print_vn_reference_ops(), split_at_bb_p(), vect_build_slp_tree_2(), vect_create_data_ref_ptr(), verify_gimple_assign_binary(), verify_gimple_assign_single(), verify_gimple_assign_ternary(), verify_gimple_assign_unary(), verify_types_in_gimple_reference(), and vn_nary_op_insert_pieces_predicated().
void get_type_static_bounds | ( | const_tree | type, |
mpz_t | min, | ||
mpz_t | max ) |
Stores bounds of an integer TYPE in MIN and MAX. If TYPE has non-constant bounds or is a POINTER_TYPE, the maximum and/or minimum values that can be represented (assuming two's-complement arithmetic) within the bit precision of the type are returned instead.
References wi::max_value(), wi::min_value(), POINTER_TYPE_P, SIGNED, wi::to_mpz(), wi::to_wide(), TREE_CODE, TYPE_MAX_VALUE, TYPE_MIN_VALUE, TYPE_PRECISION, TYPE_SIGN, and TYPE_UNSIGNED.
Referenced by determine_value_range(), wi::from_mpz(), mpz_get_double_int(), and refine_value_range_using_guard().
tree get_typenode_from_name | ( | const char * | name | ) |
Return a typenode for the "standard" C type with a given name.
References char_type_node, gcc_unreachable, integer_type_node, long_integer_type_node, long_long_integer_type_node, long_long_unsigned_type_node, long_unsigned_type_node, NULL, NULL_TREE, short_integer_type_node, short_unsigned_type_node, signed_char_type_node, unsigned_char_type_node, and unsigned_type_node.
const_tree get_ultimate_context | ( | const_tree | decl | ) |
Returns the ultimate TRANSLATION_UNIT_DECL context of DECL or NULL.
References BLOCK_SUPERCONTEXT, get_containing_scope(), and TREE_CODE.
Referenced by asan_add_global(), is_cxx(), and is_fortran().
Return OP, stripped of any conversions to wider types as much as is safe. Converting the value back to OP's type makes a value equivalent to OP. If FOR_TYPE is nonzero, we return a value which, if converted to type FOR_TYPE, would be equivalent to converting OP to type FOR_TYPE. OP must have integer, real or enumeral type. Pointers are not allowed! There are some cases where the obvious value we could return would regenerate to OP if converted to OP's type, but would not extend like OP to wider types. If FOR_TYPE indicates such extension is contemplated, we eschew such values. For example, if OP is (unsigned short)(signed char)-1, we avoid returning (signed char)-1 if FOR_TYPE is int, even though extending that to an unsigned short would regenerate OP, since the result of extending (signed char)-1 to (int) is different from (int) OP.
References CONVERT_EXPR_P, fold_convert, MAX, wi::min_precision(), wi::to_wide(), TREE_CODE, TREE_OPERAND, TREE_TYPE, lang_hooks_for_types::type_for_size, TYPE_PRECISION, TYPE_SIGN, TYPE_UNSIGNED, and lang_hooks::types.
Referenced by backtrace_base_for_ref(), canonicalize_component_ref(), and convert_to_integer_1().
bool gimple_canonical_types_compatible_p | ( | const_tree | t1, |
const_tree | t2, | ||
bool | trust_type_canonical ) |
Return true iff T1 and T2 are structurally identical for what TBAA is concerned. This function is used both by lto.cc canonical type merging and by the verifier. If TRUST_TYPE_CANONICAL we do not look into structure of types that have TYPE_CANONICAL defined and assume them equivalent. This is useful only for LTO because only in these cases TYPE_CANONICAL equivalence correspond to one defined by gimple_canonical_types_compatible_p.
References canonical_type_used_p(), COMPLETE_TYPE_P, DECL_NONADDRESSABLE_P, DECL_SIZE, f1, f2, FIXED_POINT_TYPE_P, gcc_assert, gcc_checking_assert, gimple_canonical_types_compatible_p(), gimple_compare_field_offset(), i1, i2, integer_zerop(), INTEGRAL_TYPE_P, NULL_TREE, odr_based_tbaa_p(), odr_type_p(), operand_equal_p(), POINTER_TYPE_P, RECORD_OR_UNION_TYPE_P, SCALAR_FLOAT_TYPE_P, TREE_CHAIN, TREE_CODE, tree_code_for_canonical_type_merging(), TREE_TYPE, TREE_VALUE, TYPE_ADDR_SPACE, TYPE_ARG_TYPES, TYPE_CANONICAL, TYPE_DOMAIN, TYPE_FIELDS, TYPE_MAIN_VARIANT, TYPE_MAX_VALUE, TYPE_MIN_VALUE, TYPE_MODE, TYPE_NO_NAMED_ARGS_STDARG_P, TYPE_NONALIASED_COMPONENT, TYPE_PRECISION_RAW, TYPE_REVERSE_STORAGE_ORDER, TYPE_STRING_FLAG, TYPE_UNSIGNED, type_with_alias_set_p(), type_with_interoperable_signedness(), VECTOR_TYPE_P, and VOID_TYPE_P.
Referenced by gimple_canonical_types_compatible_p(), verify_type(), and verify_type_variant().
Grow a TREE_VEC node to new length LEN.
References gcc_assert, ggc_realloc(), PASS_MEM_STAT, record_node_allocation_statistics(), TREE_CODE, and TREE_VEC_LENGTH.
void gt_ggc_mx | ( | tree_raw_data * | x | ) |
void gt_pch_nx | ( | tree_raw_data * | x | ) |
void gt_pch_nx | ( | tree_raw_data * | x, |
gt_pointer_operator | op, | ||
void * | cookie ) |
For PCH we guarantee that RAW_DATA_CST's RAW_DATA_OWNER is a STRING_CST and RAW_DATA_POINTER points into it. We don't want to save/restore RAW_DATA_POINTER on its own but want to restore it pointing at the same offset of the STRING_CST as before.
References gcc_checking_assert, tree_raw_data::length, NULL, tree_raw_data::owner, tree_raw_data::str, TREE_CODE, TREE_STRING_LENGTH, TREE_STRING_POINTER, tree_typed::type, and tree_raw_data::typed.
void init_ttree | ( | void | ) |
Init tree.cc.
References cl_optimization_node, cl_option_hash_table, cl_target_option_node, hash_table< Descriptor, Lazy, Allocator >::create_ggc(), debug_expr_for_decl, lang_hooks::init_ts, initialize_tree_contains_struct(), int_cst_hash_table, int_cst_node, make_int_cst(), make_node(), poly_int_cst_hash_table, TYPE_HASH_INITIAL_SIZE, type_hash_table, and value_expr_for_decl.
Referenced by general_init().
|
static |
Initialize tree_contains_struct to describe the hierarchy of tree nodes.
References gcc_assert, gcc_unreachable, i, MARK_TS_BASE, MARK_TS_COMMON, MARK_TS_DECL_COMMON, MARK_TS_DECL_MINIMAL, MARK_TS_DECL_NON_COMMON, MARK_TS_DECL_WITH_VIS, MARK_TS_DECL_WRTL, MARK_TS_TYPE_COMMON, MARK_TS_TYPE_WITH_LANG_SPECIFIC, MARK_TS_TYPED, tree_contains_struct, and tree_node_structure_for_code().
Referenced by init_ttree().
bool initializer_each_zero_or_onep | ( | const_tree | expr | ) |
Return true if EXPR is an initializer expression in which every element is a constant that is numerically equal to 0 or 1. The elements do not need to be equal to each other.
References i, initializer_each_zero_or_onep(), integer_onep(), integer_zerop(), real_onep(), real_zerop(), STRIP_ANY_LOCATION_WRAPPER, TREE_CODE, TREE_TYPE, TYPE_VECTOR_SUBPARTS(), vector_cst_elt(), vector_cst_encoded_nelts(), and VECTOR_CST_STEPPED_P.
Referenced by initializer_each_zero_or_onep().
bool initializer_zerop | ( | const_tree | init, |
bool * | nonzero ) |
Given an initializer INIT, return TRUE if INIT is zero or some aggregate of zeros. Otherwise return FALSE. If NONZERO is not null, set *NONZERO if and only if INIT is known not to be all zeros. The combination of return value of false and *NONZERO false implies that INIT may but need not be all zeros. Other combinations indicate definitive answers.
References CONSTRUCTOR_ELTS, fixed_zerop(), FOR_EACH_CONSTRUCTOR_VALUE, gcc_assert, i, initializer_zerop(), INT_MAX, integer_zerop(), offset, RAW_DATA_LENGTH, RAW_DATA_POINTER, REAL_VALUE_MINUS_ZERO, real_zerop(), STRIP_NOPS, TREE_CLOBBER_P, TREE_CODE, tree_fits_uhwi_p(), TREE_IMAGPART, TREE_OPERAND, TREE_REAL_CST, TREE_REALPART, TREE_STRING_LENGTH, TREE_STRING_POINTER, tree_to_uhwi(), VECTOR_CST_DUPLICATE_P, VECTOR_CST_ENCODED_ELT, and VECTOR_CST_NPATTERNS.
Referenced by all_zeros_p(), assemble_variable_contents(), bss_initializer_p(), categorize_ctor_elements_1(), categorize_decl_for_section(), const_vector_from_tree(), constant_byte_string(), dse_optimize_redundant_stores(), dse_optimize_stmt(), gimplify_init_ctor_eval(), strlen_pass::handle_store(), initializer_zerop(), lower_rec_input_clauses(), lower_vec_perm(), mostly_zeros_p(), scan_store_can_perm_p(), and store_constructor().
HOST_WIDE_INT int_byte_position | ( | const_tree | field | ) |
Likewise, but return as an integer. It must be representable in that way (since it could be a signed value, we don't have the option of returning -1 like int_size_in_byte can.
References byte_position(), and tree_to_shwi().
Referenced by clear_padding_type(), field_at_offset(), loc_list_from_tree_1(), native_encode_initializer(), native_interpret_aggregate(), and output_constructor_regular_field().
HOST_WIDE_INT int_cst_value | ( | const_tree | x | ) |
Return value of a constant X and sign-extend it.
References cst_and_fits_in_hwi(), gcc_assert, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT_M1U, TREE_INT_CST_LOW, TREE_TYPE, and TYPE_PRECISION.
Referenced by add_autoinc_candidates(), add_multivariate_self_dist(), adjust_nested_loop_clauses(), analyze_subscript_affine_affine(), build_classic_dist_vector_1(), classify_builtin_st(), compute_overlap_steps_for_affine_1_2(), dump_mem_details(), find_or_create_group(), force_expr_to_var_cost(), gen_generic_params_dies(), get_misalign_in_elems(), get_shiftadd_cost(), idx_analyze_ref(), infer_loop_bounds_from_pointer_arith(), initialize_matrix_A(), inverse(), issue_prefetch_ref(), iv_elimination_compare_lt(), prune_ref_by_group_reuse(), prune_ref_by_self_reuse(), ptr_difference_const(), ptrdiff_tree_p(), record_group_use(), should_issue_prefetch_p(), strip_offset_1(), vect_gen_prolog_loop_niters(), and vector_alignment_reachable_p().
bool int_fits_type_p | ( | const_tree | c, |
const_tree | type ) |
Return true if integer constant C has a value that is permissible for TYPE, an integral type.
References wi::fits_to_boolean_p(), wi::fits_to_tree_p(), GET_MODE_PRECISION(), wi::neg_p(), SCALAR_INT_TYPE_MODE, SIGNED, wi::to_wide(), TREE_CODE, tree_int_cst_lt(), TREE_TYPE, TYPE_MAX_VALUE, TYPE_MIN_VALUE, TYPE_PRECISION, TYPE_SIGN, TYPE_UNSIGNED, UNSIGNED, and wi::zext().
Referenced by chrec_apply(), chrec_convert_1(), edge_info::derive_equivalences(), early_object_sizes_execute_one(), expand_case(), expand_expr_real_2(), factor_out_conditional_operation(), fold_builtin_object_size(), idx_infer_loop_bounds(), is_widening_mult_p(), make_range_step(), vn_walk_cb_data::push_partial_def(), simplify_using_ranges::simplify_casted_compare(), simplify_gimple_switch(), and vn_reference_lookup_3().
HOST_WIDE_INT int_size_in_bytes | ( | const_tree | type | ) |
Return the size of TYPE (in bytes) as a wide integer or return -1 if the size can vary or is larger than an integer.
References error_mark_node, tree_fits_uhwi_p(), TREE_INT_CST_LOW, TYPE_MAIN_VARIANT, and TYPE_SIZE_UNIT.
Referenced by add_decls_addresses_to_decl_constructor(), nontrapping_dom_walker::add_or_mark_expr(), analyze_ref(), arg_int_size_in_bytes(), array_elt_at_offset(), assign_parm_adjust_entry_rtl(), assign_parm_setup_block(), assign_parm_setup_stack(), assign_parms(), assign_parms_unsplit_complex(), base_type_die(), clear_padding_type(), clear_type_padding_in_mask(), compare_constant(), const_hash_1(), constant_byte_string(), copy_blkmode_from_reg(), strlen_pass::count_nonzero_bytes(), default_function_arg_padding(), dw_loc_list_1(), ipa_icf::sem_variable::equals(), estimate_move_cost(), expand_assignment(), expand_call(), expand_expr_real_1(), expand_function_end(), expand_function_start(), expand_omp_atomic_cas(), expand_omp_atomic_pipeline(), expand_value_return(), finalize_must_preallocate(), flexible_array_member_p(), fold_builtin_atomic_compare_exchange(), fold_view_convert_expr(), get_constant_size(), get_mem_ref_of_assignment(), gimple_fold_builtin_clear_padding(), gimplify_init_constructor(), gimplify_scalar_mode_aggregate_compare(), go_output_typedef(), strlen_pass::handle_store(), has_stmt_been_instrumented_p(), initialize_argument_information(), instrument_derefs(), instrument_expr(), instrument_object_size(), is_handled_procedure_type(), load_register_parameters(), loc_list_for_address_of_addr_expr_of_indirect_ref(), loc_list_from_tree_1(), maybe_emit_group_store(), mergeable_string_section(), must_pass_in_stack_var_size_or_pad(), native_encode_initializer(), native_interpret_aggregate(), offset_within_block_p(), omp_shared_to_firstprivate_optimizable_decl_p(), operand_compare::operand_equal_p(), optimize_atomic_compare_exchange_p(), output_constant(), output_constructor_array_range(), output_constructor_regular_field(), precompute_register_parameters(), function_arg_info::promoted_size_in_bytes(), rtx_addr_can_trap_p_1(), sjlj_build_landing_pads(), split_constant_offset_1(), store_constructor(), store_expr(), store_field(), store_one_arg(), store_unaligned_arguments_into_pseudos(), subrange_type_die(), subrange_type_for_debug_p(), tree_add_const_value_attribute(), and function_arg_info::type_size_in_bytes().
bool integer_all_onesp | ( | const_tree | expr | ) |
Return true if EXPR is an integer containing all 1's in as much precision as it contains, or a complex or vector whose subparts are such integers, or a location wrapper for such a constant.
References integer_all_onesp(), wi::max_value(), STRIP_ANY_LOCATION_WRAPPER, wi::to_wide(), TREE_CODE, TREE_IMAGPART, TREE_REALPART, TREE_TYPE, TYPE_PRECISION, UNSIGNED, VECTOR_CST_DUPLICATE_P, VECTOR_CST_ENCODED_ELT, and VECTOR_CST_NPATTERNS.
Referenced by absorbing_element_p(), check_access(), chrec_apply(), component_ref_sam_type(), convert_to_integer_1(), do_store_flag(), eliminate_using_constants(), expand_builtin_memory_chk(), fold_ternary_loc(), strlen_pass::get_len_or_size(), get_maxval_strlen(), get_range_strlen(), get_range_strlen_phi(), get_range_strlen_tree(), gimple_fold_builtin_memory_chk(), gimple_fold_builtin_snprintf_chk(), gimple_fold_builtin_sprintf_chk(), gimple_fold_builtin_strcat_chk(), gimple_fold_builtin_strncat_chk(), gimple_fold_builtin_stxcpy_chk(), gimple_fold_builtin_stxncpy_chk(), gimple_fold_call(), gimple_fold_partial_load_store_mem_ref(), integer_all_onesp(), integer_minus_onep(), integer_truep(), maybe_diag_stxncpy_trunc(), maybe_emit_sprintf_chk_warning(), maybe_trim_memstar_call(), maybe_warn_nonstring_arg(), neutral_element_p(), number_of_iterations_lt(), optimize_range_tests_cmp_bitwise(), optimize_spaceship(), ovce_extract_ops(), size_initval_p(), size_unknown_p(), tree_predict_by_opcode(), ubsan_expand_objsize_ifn(), and visit_nary_op().
bool integer_each_onep | ( | const_tree | expr | ) |
Return true if EXPR is the integer constant one. For complex and vector, return true if every piece is the integer constant one. Also return true for location wrappers for such a constant.
References integer_onep(), STRIP_ANY_LOCATION_WRAPPER, TREE_CODE, TREE_IMAGPART, and TREE_REALPART.
bool integer_minus_onep | ( | const_tree | expr | ) |
Return true if EXPR is the integer constant minus one, or a location wrapper for such a constant.
References integer_all_onesp(), integer_zerop(), STRIP_ANY_LOCATION_WRAPPER, TREE_CODE, TREE_IMAGPART, and TREE_REALPART.
Referenced by bb_no_side_effects_p(), cache_integer_cst(), const_vector_mask_from_tree(), copy_reference_ops_from_ref(), do_warn_nonnull_compare(), execute_oacc_device_lower(), execute_omp_oacc_neuter_broadcast(), expand_omp_ordered_sink(), expand_POPCOUNT(), extract_muldiv_1(), gimple_expand_vec_cond_expr(), is_empty_type(), lower_oacc_head_mark(), oacc_xform_loop(), omp_adjust_for_condition(), reassociate_bb(), spaceship_replacement(), ssa_defined_by_minus_one_stmt_p(), try_transform_to_exit_first_loop_alt(), valueize_refs_1(), and zero_one_operation().
bool integer_nonzerop | ( | const_tree | expr | ) |
Return true if EXPR is an integer constant other than zero or a complex constant other than zero, or a location wrapper for such a constant.
References integer_nonzerop(), STRIP_ANY_LOCATION_WRAPPER, wi::to_wide(), TREE_CODE, TREE_IMAGPART, and TREE_REALPART.
Referenced by _loop_vec_info::_loop_vec_info(), and_comparisons_1(), and_var_with_comparison_1(), assert_loop_rolls_lt(), assert_no_overflow_lt(), canonicalize_bool(), const_binop(), copy_reference_ops_from_ref(), derive_constant_upper_bound_ops(), determine_exit_conditions(), eliminate_unnecessary_stmts(), evaluate_bbs(), expand_complex_div_wide(), expand_omp_for(), expand_omp_simd(), find_loop_niter(), gimple_infer_range::gimple_infer_range(), gimplify_cond_expr(), infer_nonnull_range_by_attribute(), instrument_builtin(), instrument_builtin_call(), integer_nonzerop(), ipa_get_stmt_member_ptr_load_param(), loop_exits_before_overflow(), lower_omp_target(), minmax_replacement(), n_of_executions_at_most(), native_encode_vector_part(), number_of_iterations_cond(), number_of_iterations_exit(), number_of_iterations_exit_assumptions(), number_of_iterations_le(), number_of_iterations_lt(), number_of_iterations_lt_to_ne(), number_of_iterations_ne(), number_of_iterations_until_wrap(), number_of_latch_executions(), omp_context_selector_matches(), omp_extract_for_data(), omp_has_nocontext(), omp_has_novariants(), or_comparisons_1(), or_var_with_comparison_1(), same_bool_comparison_p(), simplify_loop_version(), simplify_using_initial_conditions(), suitable_reference_p(), tree_simplify_using_condition_1(), tree_transform_and_unroll_loop(), validate_arglist(), vec_init_loop_exit_info(), and vect_get_loop_niters().
bool integer_onep | ( | const_tree | expr | ) |
Return true if EXPR is the integer constant one or the corresponding complex constant, or a location wrapper for such a constant.
References wi::eq_p(), integer_onep(), integer_zerop(), STRIP_ANY_LOCATION_WRAPPER, wi::to_widest(), TREE_CODE, TREE_IMAGPART, TREE_REALPART, VECTOR_CST_DUPLICATE_P, VECTOR_CST_ENCODED_ELT, and VECTOR_CST_NPATTERNS.
Referenced by addr_for_mem_ref(), adjust_accumulator_values(), strlen_pass::adjust_last_stmt(), adjust_simduid_builtins(), autofdo::afdo_propagate_circuit(), and_comparisons_1(), and_var_with_comparison_1(), associate_equivalences_with_edges(), backtrace_base_for_ref(), build_range_check(), cache_integer_cst(), crc_optimization::can_be_crc_shift(), cand_value_at(), canonicalize_cond_expr_cond(), chrec_fold_multiply(), compare_values_warnv(), compute_invariantness(), crc_optimization::cond_true_is_checked_for_bit_one(), const_vector_mask_from_tree(), constant_byte_string(), convert_to_fixed(), create_mem_ref(), create_mul_imm_cand(), create_mul_ssa_cand(), edge_info::derive_equivalences(), do_jump(), do_store_flag(), edge_forwards_cmp_to_conditional_jump_through_empty_bb_p(), eliminate_using_constants(), evaluate_conditions_for_known_args(), crc_optimization::exists_shift_for_opp_xor_shift(), expand_expr_real_1(), expand_gimple_cond(), expand_ifn_atomic_bit_test_and(), expand_oacc_collapse_init(), expand_omp_for_generic(), expand_omp_for_init_counts(), expand_omp_for_init_vars(), expand_omp_for_ordered_loops(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_ordered_sink(), expand_omp_ordered_source_sink(), expand_omp_simd(), find_case_label_range(), fold_binary_loc(), fold_builtin_atomic_compare_exchange(), fold_comparison(), fold_negate_expr_1(), fold_stmt_1(), fold_ternary_loc(), fold_to_nonsharp_ineq_using_bound(), fold_truth_andor_1(), fold_truth_not_expr(), forward_propagate_into_gimple_cond(), get_stridx(), gimple_fold_call(), gimple_fold_stmt_to_constant_1(), gimplify_bind_expr(), strlen_pass::handle_builtin_memcpy(), init_range_entry(), initializer_each_zero_or_onep(), integer_each_onep(), integer_onep(), integer_truep(), ipa_analyze_indirect_call_uses(), is_lshift_by_1(), is_rshift_by_1(), is_true_predicate(), iv_elimination_compare_lt(), lower_rec_input_clauses(), make_range(), match_single_bit_test(), maybe_optimize_guarding_check(), maybe_optimize_range_tests(), merge_ranges(), negate_expr_p(), neutral_element_p(), number_of_iterations_lt(), number_of_iterations_ne(), number_of_iterations_ne_max(), number_of_iterations_until_wrap(), oacc_xform_loop(), omp_adjust_for_condition(), simplify_using_ranges::op_with_boolean_value_range_p(), optimize_atomic_bit_test_and(), optimize_atomic_compare_exchange_p(), optimize_range_tests_1(), optimize_range_tests_var_bound(), optimize_spaceship(), dom_opt_dom_walker::optimize_stmt(), or_comparisons_1(), or_var_with_comparison_1(), predict_extra_loop_exits(), range_entry_cmp(), recognize_single_bit_test(), record_control_iv(), record_edge_info(), remove_redundant_iv_tests(), return_prediction(), scan_sharing_clauses(), avail_exprs_stack::simplify_binary_operation(), simplify_using_ranges::simplify_div_or_mod_using_ranges(), size_binop_loc(), slsr_process_phi(), spaceship_replacement(), split_loop(), suitable_cond_bb(), dom_opt_dom_walker::test_for_singularity(), loop_distribution::transform_reduction_loop(), tree_predict_by_opcode(), update_range_test(), vect_analyze_loop(), vect_analyze_loop_form(), vect_create_constant_vectors(), vect_create_loop_vinfo(), vect_do_peeling(), vect_recog_average_pattern(), vect_recog_mulhs_pattern(), vect_set_loop_condition_normal(), vect_transform_loop(), and vectorizable_reduction().
bool integer_pow2p | ( | const_tree | expr | ) |
Return true if EXPR is an integer constant that is a power of 2 (i.e., has only one bit on), or a location wrapper for such a constant.
References integer_pow2p(), integer_zerop(), wi::popcount(), STRIP_ANY_LOCATION_WRAPPER, wi::to_wide(), TREE_CODE, TREE_IMAGPART, and TREE_REALPART.
Referenced by divmod_candidate_p(), do_store_flag(), expand_mul_overflow(), expand_vector_divmod(), expression_expensive_p(), fold_binary_loc(), fold_ternary_loc(), force_expr_to_var_cost(), get_debug_computation_at(), integer_pow2p(), maybe_optimize_mod_cmp(), multiple_of_p(), number_of_iterations_cltz(), optimize_range_tests_diff(), optimize_range_tests_xor(), recognize_single_bit_test(), simplify_using_ranges::simplify_div_or_mod_using_ranges(), and vect_recog_divmod_pattern().
bool integer_truep | ( | const_tree | expr | ) |
Return true if EXPR is the integer constant one. For vector, return true if every piece is the integer constant minus one (representing the value TRUE). Also return true for location wrappers for such a constant.
References integer_all_onesp(), integer_onep(), STRIP_ANY_LOCATION_WRAPPER, and TREE_CODE.
Referenced by can_interpret_as_conditional_op_p(), convert_mult_to_fma(), simplify_1b(), and visit_phi().
bool integer_zerop | ( | const_tree | expr | ) |
Return true if EXPR is the integer constant zero or a complex constant of zero, or a location wrapper for such a constant.
References integer_zerop(), STRIP_ANY_LOCATION_WRAPPER, wi::to_wide(), TREE_CODE, TREE_IMAGPART, TREE_REALPART, VECTOR_CST_DUPLICATE_P, VECTOR_CST_ENCODED_ELT, and VECTOR_CST_NPATTERNS.
Referenced by _loop_vec_info::_loop_vec_info(), absorbing_element_p(), add_iv_candidate_for_bivs(), add_iv_candidate_for_doloop(), add_iv_candidate_for_use(), addr_for_mem_ref(), strlen_pass::adjust_last_stmt(), adjust_pointer_diff_expr(), autofdo::afdo_propagate_circuit(), affine_function_constant_p(), affine_function_zero_p(), alloca_call_type(), analyze_siv_subscript_cst_affine(), analyze_ziv_subscript(), and_comparisons_1(), and_var_with_comparison_1(), apply_binop_and_append_stmt(), arith_overflow_check_p(), array_type_nelts_minus_one(), asan_mem_ref_get_end(), assert_no_overflow_lt(), associate_equivalences_with_edges(), associate_trees(), bound_difference(), build2(), build_fold_addr_expr_with_type_loc(), build_printable_array_type(), build_range_check(), build_user_friendly_ref_for_offset(), build_vec_series(), cache_integer_cst(), canonicalize_bool(), canonicalize_cond_expr_cond(), canonicalize_loop_induction_variables(), check_access(), check_bounds_or_overlap(), check_for_plus_in_loops(), check_for_plus_in_loops_1(), check_forbidden_calls(), check_omp_nesting_restrictions(), check_retval_uses(), check_scan_store(), checks_return_value_of_removable_allocation_p(), chrec_fold_minus(), chrec_fold_multiply(), chrec_fold_plus(), chrec_zerop(), component_ref_sam_type(), component_ref_to_zero_sized_trailing_array_p(), compute_complex_ancestor_jump_func(), compute_object_offset(), compute_objsize_r(), compute_overlap_steps_for_affine_1_2(), compute_record_mode(), cond_removal_in_builtin_zero_pattern(), crc_optimization::cond_true_is_checked_for_bit_one(), const_unop(), const_vector_mask_from_tree(), const_with_all_bytes_same(), constant_byte_string(), convert_to_fixed(), convert_to_integer_1(), create_component_ref_by_pieces_1(), create_intersect_range_checks_index(), create_mem_ref(), create_mem_ref_raw(), ctor_single_nonzero_element(), default_goacc_reduction(), edge_info::derive_equivalences(), derive_simple_iv_with_niters(), determine_exit_conditions(), determine_group_iv_cost_cond(), pcom_worker::determine_offset(), determine_value_range(), do_jump(), do_jump_1(), do_store_flag(), do_warn_nonnull_compare(), dr_alignment(), dr_analyze_indices(), dr_analyze_innermost(), dr_known_forward_stride_p(), dr_may_alias_p(), dse_optimize_call(), dse_optimize_redundant_stores(), dse_optimize_stmt(), dump_affine_iv(), dump_array_domain(), dump_generic_node(), dump_mem_ref(), edge_forwards_cmp_to_conditional_jump_through_empty_bb_p(), eliminate_unnecessary_stmts(), eliminate_using_constants(), evaluate_conditions_for_known_args(), execute_update_addresses_taken(), expand_arith_overflow(), expand_builtin_memset_args(), expand_call_mem_ref(), expand_complex_div_wide(), expand_DEFERRED_INIT(), expand_expr_addr_expr_1(), expand_expr_real_1(), expand_gimple_cond(), expand_oacc_collapse_init(), expand_oacc_for(), expand_omp_for_init_counts(), expand_omp_for_init_vars(), expand_omp_ordered_sink(), expand_omp_simd(), expand_parallel_call(), expand_POPCOUNT(), expand_UBSAN_CHECK_SUB(), expand_vector_divmod(), expand_vector_ubsan_overflow(), extr_type_from_vtbl_ptr_store(), extract_bit_test_mask(), extract_cond_operands(), extract_mem_content(), extract_muldiv_1(), finalize_record_size(), find_bivs(), find_conditions(), find_deriving_biv_for_expr(), find_func_aliases_for_builtin_call(), find_implicit_erroneous_behavior(), find_induction_variables(), find_interesting_uses_address(), find_interesting_uses_op(), find_interesting_uses_stmt(), find_loop_niter(), find_taken_edge_cond_expr(), finish_bitfield_layout(), flexible_array_member_p(), fold_binary_loc(), fold_build_cond_expr(), fold_builtin_1(), fold_builtin_constant_p(), fold_builtin_memcmp(), fold_builtin_next_arg(), fold_comparison(), fold_cond_expr_with_comparison(), fold_convert_loc(), fold_gimple_assign(), fold_read_from_constant_string(), fold_relational_const(), ccp_folder::fold_stmt(), fold_stmt_1(), fold_ternary_loc(), fold_truth_andor_1(), fold_truth_andor_for_ifcombine(), fold_truth_not_expr(), forward_propagate_addr_expr_1(), forward_propagate_into_gimple_cond(), generate_strlen_builtin_1(), get_addr_base_and_unit_offset_1(), get_address_cost(), get_address_description(), get_computation_cost(), get_constraint_for_1(), get_constraint_for_component_ref(), get_inner_reference(), get_range_strlen_phi(), get_range_strlen_tree(), get_ref_base_and_extent(), get_up_bounds_for_array_ref(), get_upper_bound_based_on_builtin_expr_with_prob(), gimple_boolify(), gimple_call_addr_fndecl(), gimple_canonical_types_compatible_p(), gimple_expand_vec_cond_expr(), gimple_fold_builtin_memchr(), gimple_fold_builtin_memory_op(), gimple_fold_builtin_memset(), gimple_fold_builtin_snprintf_chk(), gimple_fold_builtin_sprintf_chk(), gimple_fold_builtin_stpcpy(), gimple_fold_builtin_strchr(), gimple_fold_builtin_strcpy(), gimple_fold_builtin_strncat(), gimple_fold_builtin_strncat_chk(), gimple_fold_builtin_strncpy(), gimple_fold_builtin_stxcpy_chk(), gimple_fold_call(), gimple_fold_stmt_to_constant_1(), gimple_get_virt_method_for_vtable(), gimple_infer_range::gimple_infer_range(), gimple_lower_bitint(), gimplify_addr_expr(), gimplify_call_expr(), gimplify_cond_expr(), gimplify_omp_dispatch(), handle_array_ref(), strlen_pass::handle_builtin_memcpy(), strlen_pass::handle_builtin_memset(), strlen_pass::handle_builtin_strchr(), strlen_pass::handle_builtin_strcpy(), strlen_pass::handle_builtin_string_cmp(), strlen_pass::handle_builtin_strlen(), handle_printf_call(), operand_compare::hash_operand(), idx_find_step(), idx_infer_loop_bounds(), idx_within_array_bound(), infer_nonnull_range_by_attribute(), init_range_entry(), initializer_constant_valid_p_1(), initializer_each_zero_or_onep(), initializer_zerop(), input_gimple_stmt(), insert_predicates_for_cond(), instrument_bool_enum_load(), instrument_mem_region_access(), integer_minus_onep(), integer_onep(), integer_pow2p(), integer_zerop(), ipa_analyze_indirect_call_uses(), ipa_load_from_parm_agg(), is_comparison_with_loop_invariant_p(), is_exit_with_zero_arg(), is_false_predicate(), is_neq_zero_form_p(), iv_can_overflow_p(), layout_decl(), layout_type(), simplify_using_ranges::legacy_fold_cond_overflow(), loc_list_from_tree_1(), loop_exits_before_overflow(), loop_niter_by_eval(), lower_omp_for_lastprivate(), lower_omp_target(), lower_omp_task_reductions(), lower_rec_input_clauses(), lower_reduction_clauses(), lto_input_ts_poly_tree_pointers(), make_fancy_name_1(), make_range_step(), malloc_candidate_p_1(), may_eliminate_iv(), maybe_canonicalize_comparison_1(), maybe_canonicalize_mem_ref_addr(), maybe_fold_tmr(), maybe_instrument_pointer_overflow(), maybe_optimize_asan_check_ifn(), maybe_optimize_guarding_check(), maybe_optimize_mod_cmp(), maybe_optimize_pow2p_mod_cmp(), maybe_optimize_range_tests(), maybe_optimize_sub_cmp_0(), maybe_optimize_ubsan_null_ifn(), maybe_optimize_ubsan_ptr_ifn(), maybe_rewrite_mem_ref_base(), maybe_set_nonzero_bits(), maybe_set_strlen_range(), merge_ranges(), access_ref::merge_ref(), minmax_replacement(), modref_may_conflict(), move_computations_worker(), multiple_of_p(), native_encode_initializer(), neutral_element_p(), non_rewritable_lvalue_p(), non_rewritable_mem_ref_base(), nonoverlapping_refs_since_match_p(), predicate::normalize(), number_of_iterations_cltz(), number_of_iterations_cltz_complement(), number_of_iterations_cond(), number_of_iterations_exit_assumptions(), number_of_iterations_le(), number_of_iterations_lt(), number_of_iterations_lt_to_ne(), number_of_iterations_popcount(), number_of_iterations_until_wrap(), number_of_latch_executions(), oacc_do_neutering(), oacc_fn_attrib_level(), oacc_xform_loop(), oacc_xform_tile(), omp_accumulate_sibling_list(), omp_adjust_chunk_size(), omp_context_selector_matches(), omp_context_selector_props_compare(), omp_extract_for_data(), omp_get_base_pointer(), omp_has_nocontext(), omp_has_novariants(), omp_index_mapping_groups_1(), omp_mapped_by_containing_struct(), omp_oacc_kernels_decompose_1(), omp_addr_tokenizer::omp_parse_pointer(), omp_addr_tokenizer::omp_parse_ref(), simplify_using_ranges::op_with_boolean_value_range_p(), operand_equal_for_value_replacement(), operand_compare::operand_equal_p(), operation_could_trap_helper_p(), optimize_atomic_bit_test_and(), optimize_atomic_compare_exchange_p(), optimize_atomic_op_fetch_cmp_0(), optimize_bit_field_compare(), optimize_count_trailing_zeroes(), optimize_memcpy_to_memset(), optimize_range_tests_cmp_bitwise(), optimize_range_tests_var_bound(), optimize_spaceship(), dom_opt_dom_walker::optimize_stmt(), optimize_va_list_gpr_fpr_size(), or_comparisons_1(), or_var_with_comparison_1(), ovce_extract_ops(), overflow_comparison_p_1(), place_field(), points_to_local_or_readonly_memory_p(), predict_extra_loop_exits(), predict_loops(), print_call_name(), propagate_with_phi(), ptrs_compare_unequal(), push_fields_onto_fieldstack(), range_check_type(), recognize_bits_test(), recognize_single_bit_test(), record_biv_for_address_use(), record_edge_info(), record_nonwrapping_iv(), ref_at_iteration(), refine_bounds_using_guard(), refine_value_range_using_guard(), remove_redundant_iv_tests(), remove_unused_ivs(), replace_stmt_with_simplification(), return_prediction(), rewrite_bittest(), rewrite_use_address(), rewrite_use_nonlinear_expr(), rtl_for_decl_init(), same_addr_size_stores_p(), same_bool_comparison_p(), scan_sharing_clauses(), scev_probably_wraps_p(), set_cond_stmt_execution_predicate(), should_interchange_loops(), simd_clone_clauses_extract(), simple_iv_with_niters(), simplify_1b(), simplify_using_ranges::simplify_abs_using_ranges(), simplify_const_binop(), simplify_using_ranges::simplify_min_or_max_using_ranges(), simplify_using_ranges::simplify_truth_ops_using_ranges(), simplify_using_initial_conditions(), single_nonzero_element(), size_binop_loc(), size_for_offset(), size_initval_p(), size_must_be_zero_p(), size_unknown_p(), skip_in_fields_list_p(), slsr_process_mul(), some_nonzerop(), spaceship_replacement(), split_at_bb_p(), split_constant_offset_1(), std_gimplify_va_arg_expr(), store_expr(), strip_offset_1(), strip_zero_offset_components(), suitable_cond_bb(), suitable_reference_p(), loop_distribution::transform_reduction_loop(), tree_fold_divides_p(), tree_int_cst_min_precision(), tree_mem_ref_addr(), tree_predict_by_opcode(), tree_simplify_using_condition_1(), tree_single_nonzero_warnv_p(), type_has_padding_at_level_p(), uaddc_ne0(), ubsan_expand_null_ifn(), ubsan_expand_ptr_ifn(), ubsan_instrument_float_cast(), unroll_jam_possible_p(), update_alignment_for_field(), use_in_zero_equality(), pcom_worker::valid_initializer_p(), validate_arglist(), vec_init_loop_exit_info(), vect_analyze_data_ref_access(), vect_analyze_data_ref_dependence(), vect_analyze_loop_2(), vect_analyze_loop_form(), vect_check_gather_scatter(), vect_compute_data_ref_alignment(), vect_create_constant_vectors(), vect_create_data_ref_ptr(), vect_find_stmt_data_reference(), vect_get_loop_niters(), vect_init_vector(), vect_preserves_scalar_order_p(), vect_recog_divmod_pattern(), vect_recog_rotate_pattern(), vect_relevant_for_alignment_p(), vect_set_loop_condition_normal(), vect_simd_lane_linear(), vect_slp_check_for_roots(), vect_synth_mult_by_constant(), vect_transform_cycle_phi(), vectorizable_induction(), vectorizable_live_operation_1(), vectorizable_load(), vectorizable_reduction(), vectorizable_store(), visit_nary_op(), vn_nary_op_insert_pieces_predicated(), vn_reference_lookup_2(), vn_reference_lookup_3(), walk_ssa_copies(), zero_length_string_p(), and zerop().
bool is_access_with_size_p | ( | const_tree | call | ) |
Return true if the given node CALL is a call to a .ACCESS_WITH_SIZE function.
References CALL_EXPR_IFN, and TREE_CODE.
Referenced by get_ref_from_access_with_size().
bool is_empty_type | ( | const_tree | type | ) |
Returns true if TYPE is a type where it and all of its subobjects (recursively) are of structure, union, or array type.
References array_type_nelts_minus_one(), DECL_CHAIN, DECL_PADDING_P, integer_minus_onep(), is_empty_type(), NULL_TREE, RECORD_OR_UNION_TYPE_P, TREE_CODE, TREE_TYPE, TYPE_DOMAIN, and TYPE_FIELDS.
Referenced by clear_padding_type(), default_is_empty_record(), find_tail_calls(), gimplify_expr(), gimplify_init_constructor(), gimplify_init_ctor_eval(), gimplify_modify_expr(), is_empty_type(), is_var_need_auto_init(), maybe_warn_operand(), native_interpret_aggregate(), and setup_one_parameter().
- For VECTOR_TYPEs: - The truth type must be a VECTOR_BOOLEAN_TYPE. - The number of elements must match (known_eq). - targetm.vectorize.get_mask_mode exists, and exactly the same mode as the truth type. - Otherwise, the truth type must be a BOOLEAN_TYPE or useless_type_conversion_p to BOOLEAN_TYPE.
References boolean_type_node, known_eq, targetm, TREE_CODE, TYPE_MODE, TYPE_VECTOR_SUBPARTS(), useless_type_conversion_p(), and VECTOR_BOOLEAN_TYPE_P.
Referenced by fold_binary_loc().
tree last_field | ( | const_tree | type | ) |
Returns the last FIELD_DECL in the TYPE_FIELDS of the RECORD_TYPE or UNION_TYPE TYPE, or NULL_TREE if none.
References last, NULL_TREE, TREE_CHAIN, TREE_CODE, and TYPE_FIELDS.
Referenced by array_ref_flexible_size_p(), and decl_init_size().
tree lhd_gcc_personality | ( | void | ) |
Return the GCC personality function decl.
References build_personality_function(), and gcc_eh_personality_decl.
int list_length | ( | const_tree | t | ) |
Return the length of a chain of nodes chained through TREE_CHAIN. We expect a null pointer to mark the end of the chain. This is the Lisp primitive `length'.
References gcc_assert, and TREE_CHAIN.
Referenced by assemble_asm(), build_constructor_from_list(), can_strub_internally_p(), decl_attributes(), expand_call(), function_to_dwarf_procedure(), gimplify_asm_expr(), gimplify_omp_for(), global_decl_processing(), merge_attributes(), omp_construct_selector_matches(), omp_context_compute_score(), omp_context_selector_compare(), omp_context_selector_matches(), omp_context_selector_set_compare(), omp_extract_for_data(), and prepare_call_arguments().
|
static |
A subroutine of build_common_builtin_nodes. Define a builtin function.
References add_builtin_function(), BUILT_IN_NORMAL, NULL_TREE, set_builtin_decl(), and set_call_expr_flags().
Referenced by build_common_builtin_nodes().
Lookup sub-BINFO of BINFO of TYPE at offset POS.
References b, BINFO_BASE_ITERATE, BINFO_OFFSET, i, lookup_binfo_at_offset(), NULL, tree_to_shwi(), TREE_TYPE, and types_same_for_odr().
Referenced by get_binfo_at_offset(), and lookup_binfo_at_offset().
Returns the smallest value obtainable by casting something in INNER type to OUTER type.
References build_int_cst(), wi::mask(), TYPE_PRECISION, TYPE_UNSIGNED, and wide_int_to_tree().
Referenced by derive_simple_iv_with_niters(), determine_exit_conditions(), infer_loop_bounds_from_pointer_arith(), infer_loop_bounds_from_signedness(), loop_exits_before_overflow(), and scev_var_range_cant_overflow().
tree make_anon_name | ( | ) |
Create a unique anonymous identifier. The identifier is still a valid assembly label.
References anon_cnt, gcc_checking_assert, get_identifier_with_length(), and IDENTIFIER_ANON_P.
tree make_int_cst | ( | int | len, |
int ext_len | MEM_STAT_DECL ) |
Build a newly constructed INTEGER_CST node. LEN and EXT_LEN are the values of TREE_INT_CST_NUNITS and TREE_INT_CST_EXT_NUNITS respectively. The latter determines the length of the HOST_WIDE_INT vector.
References gcc_assert, ggc_alloc_cleared_tree_node_stat(), PASS_MEM_STAT, record_node_allocation_statistics(), TREE_CONSTANT, TREE_INT_CST_EXT_NUNITS, TREE_INT_CST_NUNITS, and TREE_SET_CODE.
Referenced by build_new_int_cst(), init_ttree(), streamer_alloc_tree(), and wide_int_to_tree_1().
Return a newly allocated node of code CODE. For decl and type nodes, some other fields are initialized. The rest of the node is initialized to zero. This function cannot be used for TREE_VEC, INTEGER_CST or OMP_CLAUSE nodes, which is enforced by asserts in tree_code_size. Achoo! I got a code in the node.
References allocate_decl_uid(), CODE_CONTAINS_STRUCT, DECL_SOURCE_LOCATION, DECL_UID, FUNCTION_ALIGNMENT, ggc_alloc_cleared_tree_node_stat(), ggc_cleared_alloc(), input_location, LABEL_DECL_UID, next_debug_decl_uid, next_type_uid, NULL_TREE, PASS_MEM_STAT, record_node_allocation_statistics(), SET_DECL_ALIGN, SET_DECL_MODE, SET_DECL_PT_UID, SET_TYPE_ALIGN, targetm, tcc_constant, tcc_declaration, tcc_exceptional, tcc_expression, tcc_statement, tcc_type, TREE_CODE, TREE_CODE_CLASS, tree_code_size(), TREE_CONSTANT, TREE_OPTIMIZATION, TREE_SET_CODE, TREE_SIDE_EFFECTS, TREE_TARGET_OPTION, TYPE_ALIAS_SET, TYPE_ATTRIBUTES, TYPE_CANONICAL, TYPE_MAIN_VARIANT, TYPE_UID, and TYPE_USER_ALIGN.
Referenced by alloc_node(), alloc_stmt_list(), asan_global_struct(), build0(), build2(), build3(), build_array_type_1(), build_bitint_type(), build_block(), build_case_label(), build_common_tree_nodes(), build_complex(), build_complex_type(), build_constructor(), build_debug_expr_decl(), build_decl(), build_fixed(), build_function_type(), build_method_type_directly(), build_nonstandard_boolean_type(), build_nonstandard_integer_type(), build_nt(), build_offset_type(), build_optimization_node(), build_pointer_type_for_mode(), build_printable_array_type(), build_range_type_1(), build_real(), build_reference_type_for_mode(), build_target_option_node(), build_tree_list(), cgraph_build_static_cdtor_1(), create_assumption_fn(), create_field_for_decl(), function_reader::create_function(), create_loop_fn(), create_omp_child_function(), decompose_kernels_region_body(), expand_call_inline(), expand_omp_target(), expand_thunk(), finalize_nesting_tree_1(), get_chain_field(), get_descriptor_type(), get_frame_type(), get_nl_goto_field(), get_trampoline_type(), gimplify_omp_for(), gimplify_omp_loop(), init_lowered_empty_function(), init_ttree(), initialize_sizetypes(), lhd_make_node(), lookup_field_for_decl(), lower_omp_critical(), lower_omp_dispatch(), lower_omp_for(), lower_omp_master(), lower_omp_ordered(), lower_omp_scope(), lower_omp_sections(), lower_omp_single(), lower_omp_target(), lower_omp_taskgroup(), lower_omp_taskreg(), lower_omp_teams(), make_accum_type(), make_debug_expr_from_rtl(), make_fract_type(), make_region_loop_nest(), make_region_seq(), make_signed_type(), make_ssa_name_fn(), make_unsigned_type(), make_vector_type(), maybe_build_inner_data_region(), remap_block(), self_referential_size(), spaceship_replacement(), start_bitfield_representative(), streamer_alloc_tree(), thunk_adjust(), ubsan_create_data(), ubsan_get_source_location_type(), and ubsan_get_type_descriptor_type().
|
static |
Create or reuse an accum type by SIZE, UNSIGNEDP, and SATP.
References accum_type_node, ACCUM_TYPE_SIZE, long_accum_type_node, LONG_ACCUM_TYPE_SIZE, long_long_accum_type_node, LONG_LONG_ACCUM_TYPE_SIZE, make_accum_type(), sat_accum_type_node, sat_long_accum_type_node, sat_long_long_accum_type_node, sat_short_accum_type_node, sat_unsigned_accum_type_node, sat_unsigned_long_accum_type_node, sat_unsigned_long_long_accum_type_node, sat_unsigned_short_accum_type_node, short_accum_type_node, SHORT_ACCUM_TYPE_SIZE, unsigned_accum_type_node, unsigned_long_accum_type_node, unsigned_long_long_accum_type_node, and unsigned_short_accum_type_node.
|
static |
Create or reuse a fract type by SIZE, UNSIGNEDP, and SATP.
References fract_type_node, FRACT_TYPE_SIZE, long_fract_type_node, LONG_FRACT_TYPE_SIZE, long_long_fract_type_node, LONG_LONG_FRACT_TYPE_SIZE, make_fract_type(), sat_fract_type_node, sat_long_fract_type_node, sat_long_long_fract_type_node, sat_short_fract_type_node, sat_unsigned_fract_type_node, sat_unsigned_long_fract_type_node, sat_unsigned_long_long_fract_type_node, sat_unsigned_short_fract_type_node, short_fract_type_node, SHORT_FRACT_TYPE_SIZE, unsigned_fract_type_node, unsigned_long_fract_type_node, unsigned_long_long_fract_type_node, and unsigned_short_fract_type_node.
|
static |
Referenced by build_common_tree_nodes().
tree make_tree_binfo | ( | unsigned base_binfos | MEM_STAT_DECL | ) |
Build a BINFO with LEN language slots.
References BINFO_BASE_BINFOS, ggc_alloc_tree_node_stat(), offsetof, PASS_MEM_STAT, record_node_allocation_statistics(), and TREE_SET_CODE.
Referenced by streamer_alloc_tree().
tree make_tree_vec | ( | int len | MEM_STAT_DECL | ) |
Build a newly constructed TREE_VEC node of length LEN.
References ggc_alloc_cleared_tree_node_stat(), PASS_MEM_STAT, record_node_allocation_statistics(), TREE_SET_CODE, and TREE_VEC_LENGTH.
Referenced by cache_integer_cst(), cache_wide_int_in_type_cache(), lower_omp_target(), omp_apply_tile(), omp_extract_for_data(), omp_maybe_apply_loop_xforms(), phi_dynamic_object_size(), simplify_using_ranges::simplify_switch_using_ranges(), and streamer_alloc_tree().
tree make_vector | ( | unsigned | log2_npatterns, |
unsigned int nelts_per_pattern | MEM_STAT_DECL ) |
Build a newly constructed VECTOR_CST with the given values of (VECTOR_CST_)LOG2_NPATTERNS and (VECTOR_CST_)NELTS_PER_PATTERN.
References gcc_assert, ggc_alloc_cleared_tree_node_stat(), IN_RANGE, PASS_MEM_STAT, record_node_allocation_statistics(), TREE_CONSTANT, TREE_SET_CODE, VECTOR_CST_LOG2_NPATTERNS, and VECTOR_CST_NELTS_PER_PATTERN.
Referenced by tree_vector_builder::build(), and streamer_alloc_tree().
|
static |
Create a new vector type node holding NUNITS units of type INNERTYPE, and mapped to the machine mode MODE. Initialize its fields and build the information necessary for debugging output.
References build_type_attribute_qual_variant(), type_hash::hash, layout_type(), make_node(), make_vector_type(), SET_TYPE_MODE, SET_TYPE_STRUCTURAL_EQUALITY, SET_TYPE_VECTOR_SUBPARTS(), TREE_TYPE, TYPE_ATTRIBUTES, TYPE_CANONICAL, type_hash_canon(), type_hash_canon_hash(), TYPE_MAIN_VARIANT, TYPE_QUALS, TYPE_STRUCTURAL_EQUALITY_P, and VECTOR_BOOLEAN_TYPE_P.
Referenced by build_opaque_vector_type(), build_truth_vector_type_for(), build_truth_vector_type_for_mode(), build_vector_type(), build_vector_type_for_mode(), and make_vector_type().
HOST_WIDE_INT max_int_size_in_bytes | ( | const_tree | type | ) |
Return the maximum size of TYPE (in bytes) as a wide integer or return -1 if the size can vary or is larger than an integer.
References lang_hooks_for_types::max_size, TREE_CODE, tree_fits_uhwi_p(), tree_to_uhwi(), TYPE_ARRAY_MAX_SIZE, and lang_hooks::types.
Referenced by assign_temp(), expand_asm_stmt(), force_constant_size(), gimplify_parameters(), gimplify_vla_decl(), and initialize_argument_information().
tree max_object_size | ( | void | ) |
Return the maximum object size.
References ptrdiff_type_node, and TYPE_MAX_VALUE.
Referenced by alloca_call_type(), check_access(), access_ref::dump(), pass_walloca::execute(), strlen_pass::get_len_or_size(), access_ref::get_ref(), get_size_range(), gimple_fold_builtin_strlen(), handle_ssa_name(), maybe_warn_for_bound(), maybe_warn_nonstring_arg(), strlen_pass::maybe_warn_overflow(), access_ref::merge_ref(), access_ref::set_max_size_range(), access_ref::size_remaining(), and warn_string_no_nul().
tree maybe_build_call_expr_loc | ( | location_t | loc, |
combined_fn | fn, | ||
tree | type, | ||
int | n, | ||
... ) |
Return a function call to FN, if the target is guaranteed to support it, or null otherwise. N is the number of arguments, passed in the "...", and TYPE is the type of the return value.
References ap, as_builtin_fn(), as_internal_fn(), build_call_expr_internal_loc_array(), build_call_expr_loc_array(), builtin_decl_implicit(), direct_internal_fn_p(), direct_internal_fn_supported_p(), direct_internal_fn_types(), i, internal_fn_p(), NULL_TREE, and OPTIMIZE_FOR_BOTH.
|
static |
Computes the canonical argument types from the argument type list ARGTYPES. Upon return, *ANY_STRUCTURAL_P will be true iff either it was true on entry to this function, or if any of the ARGTYPES are structural. Upon return, *ANY_NONCANONICAL_P will be true iff either it was true on entry to this function, or if any of the ARGTYPES are non-canonical. Returns a canonical argument list, which may be ARGTYPES when the canonical argument list is unneeded (i.e., *ANY_STRUCTURAL_P is true) or would not differ from ARGTYPES.
References chainon(), error_mark_node, nreverse(), NULL_TREE, TREE_CHAIN, tree_cons(), TREE_PURPOSE, TREE_VALUE, TYPE_CANONICAL, TYPE_STRUCTURAL_EQUALITY_P, and void_list_node.
Referenced by build_function_type(), and build_method_type_directly().
Return EXPR, potentially wrapped with a node expression LOC, if !CAN_HAVE_LOCATION_P (expr). NON_LVALUE_EXPR is used for wrapping constants, apart from STRING_CST. VIEW_CONVERT_EXPR is used for wrapping non-constants and STRING_CST. Wrapper nodes can be identified using location_wrapper_p.
References build1_loc(), CAN_HAVE_LOCATION_P, CONSTANT_CLASS_P, DECL_ARTIFICIAL, DECL_IGNORED_P, DECL_P, error_operand_p(), EXCEPTIONAL_CLASS_P, expr, EXPR_LOCATION_WRAPPER_P, gcc_assert, NULL, suppress_location_wrappers, TREE_CODE, TREE_STATIC, TREE_TYPE, and UNKNOWN_LOCATION.
Referenced by preserve_any_location_wrapper().
poly_offset_int mem_ref_offset | ( | const_tree | t | ) |
Return the constant offset of a MEM_REF or TARGET_MEM_REF tree T.
References poly_int< N, C >::from(), SIGNED, wi::to_poly_wide(), and TREE_OPERAND.
Referenced by address_compare(), adjust_offsets_for_equal_base_address(), build_simple_mem_ref_loc(), array_bounds_checker::check_addr_expr(), compute_complex_assign_jump_func(), compute_object_offset(), constant_pointer_difference(), copy_reference_ops_from_ref(), decode_addr_const(), dr_analyze_innermost(), mem_ref_hasher::equal(), execute_update_addresses_taken(), expand_expr_real_1(), expand_simple_operations(), forward_propagate_addr_expr_1(), gather_mem_refs_stmt(), get_addr_base_and_unit_offset_1(), get_ancestor_addr_info(), get_base_constructor(), get_constraint_for_component_ref(), get_inner_reference(), get_object_alignment_2(), get_range_strlen_tree(), get_ref_base_and_extent(), gimple_fold_builtin_memory_op(), indirect_ref_may_alias_decl_p(), indirect_refs_may_alias_p(), ipa_polymorphic_call_context::ipa_polymorphic_call_context(), isra_get_ref_base_and_offset(), jump_function_from_stmt(), maybe_canonicalize_mem_ref_addr(), maybe_rewrite_mem_ref_base(), non_rewritable_lvalue_p(), non_rewritable_mem_ref_base(), fold_using_range::range_of_address(), restructure_reference(), scan_operand_equal_p(), store_kills_ref_p(), tree_could_trap_p(), unadjusted_ptr_and_unit_offset(), vect_check_gather_scatter(), vn_reference_lookup_3(), and vn_reference_maybe_forwprop_address().
Return true if DECL may need an assembler name to be set.
References BUILT_IN_FRONTEND, DECL_ABSTRACT_P, DECL_ASSEMBLER_NAME_SET_P, DECL_BUILT_IN_CLASS, DECL_EXTERNAL, DECL_NAME, fndecl_built_in_p(), cgraph_node::get(), HAS_DECL_ASSEMBLER_NAME_P, NULL, NULL_TREE, TREE_CODE, TREE_PUBLIC, TREE_STATIC, TREE_TYPE, TREE_USED, TYPE_ARTIFICIAL, TYPE_CXX_ODR_P, TYPE_MAIN_VARIANT, TYPE_NAME, type_with_linkage_p(), VAR_OR_FUNCTION_DECL_P, VAR_P, and variably_modified_type_p().
Referenced by assign_assembler_name_if_needed().
bool needs_to_live_in_memory | ( | const_tree | t | ) |
Return true if T (assumed to be a DECL) must be assigned a memory location.
References aggregate_value_p(), current_function_decl, DECL_BY_REFERENCE, is_global_var(), TREE_ADDRESSABLE, and TREE_CODE.
Referenced by gimplify_modify_expr_rhs(), gimplify_target_expr(), is_gimple_reg(), and requires_barrier().
bool nonnull_arg_p | ( | const_tree | arg | ) |
Return true if ARG is marked with the nonnull attribute in the current function signature.
References attrs, cfun, compare_tree_int(), DECL_ARGUMENTS, DECL_CHAIN, gcc_assert, lookup_attribute(), NULL_TREE, POINTER_TYPE_P, TREE_CHAIN, TREE_CODE, TREE_TYPE, TREE_VALUE, and TYPE_ATTRIBUTES.
Referenced by do_warn_nonnull_compare(), gimple_range_global(), and VN_INFO().
Reverse the order of elements in the chain T, and return the new head of the chain (old last element).
References gcc_checking_assert, TREE_CHAIN, and TREE_CODE.
Referenced by build_adjusted_function_type(), build_function_type_list_1(), rt_bb_visited::check(), declare_vars(), fixup_child_record_type(), init_attr_rdwr_indices(), initialize_inlined_parameters(), layout_type(), maybe_canonicalize_argtypes(), omp_oacc_kernels_decompose_1(), remap_decls(), remap_type_1(), scan_omp_target(), self_referential_size(), simd_clone_adjust_argument_types(), and task_copyfn_remap_type().
tree num_ending_zeros | ( | const_tree | x | ) |
Returns number of zeros at the end of binary representation of X.
References build_int_cst(), wi::ctz(), wi::to_wide(), and TREE_TYPE.
Referenced by iv_period(), and number_of_iterations_ne().
bool operand_equal_for_phi_arg_p | ( | const_tree | arg0, |
const_tree | arg1 ) |
Return true if two operands that are suitable for PHI nodes are necessarily equal. Specifically, both ARG0 and ARG1 must be either SSA_NAME or invariant. Note that this is strictly an optimization. That is, callers of this function can directly call operand_equal_p and get the same result, only slower.
References operand_equal_p(), and TREE_CODE.
Referenced by connect_loop_phis(), factor_out_conditional_operation(), match_simplify_replacement(), minmax_replacement(), operand_equal_for_value_replacement(), phi_alternatives_equal(), record_equivalences_from_phis(), rhs_is_fed_for_value_replacement(), same_phi_alternatives_1(), simplify_rotate(), single_non_singleton_phi_for_edges(), tree_transform_and_unroll_loop(), and value_replacement().
Returns true if CODE can overflow.
Referenced by parloops_needs_fold_left_reduction_p(), and vectorize_slp_instance_root_stmt().
Returns true if CODE operating on operands of type TYPE doesn't overflow, or ftrapv doesn't generate trapping insns for CODE.
References ANY_INTEGRAL_TYPE_P, gcc_checking_assert, INTEGRAL_TYPE_P, and TYPE_OVERFLOW_TRAPS.
Referenced by find_trapping_overflow(), needs_fold_left_reduction_p(), and parloops_needs_fold_left_reduction_p().
The DECL_ASSEMBLER_NAME_RAW of DECL is being explicitly set to NAME (either of which may be NULL). Inform the FE, if this changes the name.
References DECL_ASSEMBLER_NAME_RAW, and lang_hooks::overwrite_decl_assembler_name.
void prepare_target_option_nodes_for_pch | ( | void | ) |
Clear TREE_TARGET_GLOBALS of all TARGET_OPTION_NODE trees, so that they aren't saved during PCH writing.
References cl_option_hash_table, NULL, TREE_CODE, and TREE_TARGET_GLOBALS.
|
static |
Print out the statistics for the DECL_DEBUG_EXPR hash table.
References debug_expr_for_decl, fmt_size_t, and HOST_SIZE_T_PRINT_DEC.
Referenced by dump_tree_statistics().
|
static |
Referenced by dump_tree_statistics().
|
static |
Print out the statistics for the DECL_VALUE_EXPR hash table.
References fmt_size_t, HOST_SIZE_T_PRINT_DEC, and value_expr_for_decl.
Referenced by dump_tree_statistics().
|
static |
Set various status flags when building a CALL_EXPR object T.
References call_expr_flags(), CONSTANT_CLASS_P, ECF_CONST, ECF_LOOPING_CONST_OR_PURE, ECF_PURE, i, TREE_OPERAND, TREE_OPERAND_LENGTH, TREE_READONLY, and TREE_SIDE_EFFECTS.
Referenced by build_call_array_loc(), build_call_expr_internal_loc_array(), build_call_valist(), build_call_vec(), substitute_in_expr(), and substitute_placeholder_in_expr().
void protected_set_expr_location | ( | tree | t, |
location_t | loc ) |
Like SET_EXPR_LOCATION, but make sure the tree can have a location. LOC is the location to use in tree T.
References CAN_HAVE_LOCATION_P, expr_single(), SET_EXPR_LOCATION, and TREE_CODE.
Referenced by gimplify_arg(), protected_set_expr_location_if_unset(), and stabilize_reference().
void protected_set_expr_location_if_unset | ( | tree | t, |
location_t | loc ) |
Like PROTECTED_SET_EXPR_LOCATION, but only do that if T has UNKNOWN_LOCATION.
References EXPR_HAS_LOCATION, expr_single(), and protected_set_expr_location().
bool prototype_p | ( | const_tree | fntype | ) |
Return true if TYPE has a prototype.
References gcc_assert, NULL_TREE, TYPE_ARG_TYPES, and TYPE_NO_NAMED_ARGS_STDARG_P.
Referenced by ipa_param_adjustments::adjust_decl(), ipa_param_adjustments::build_new_function_type(), go_format_type(), maybe_diag_incompatible_alias(), odr_types_equivalent_p(), useless_type_conversion_p(), and warn_types_mismatch().
bool ptrdiff_tree_p | ( | const_tree | t, |
poly_int64 * | value ) |
Return true if T holds a polynomial pointer difference, storing it in *VALUE if so. A true return means that T's precision is no greater than 64 bits, which is the largest address space we support, so *VALUE never loses precision. However, the signedness of the result does not necessarily match the signedness of T: sometimes an unsigned type like sizetype is used to encode a value that is actually negative.
References poly_int< N, C >::coeffs, cst_and_fits_in_hwi(), i, int_cst_value(), NUM_POLY_INT_COEFFS, POLY_INT_CST_COEFF, POLY_INT_CST_P, and TREE_CODE.
Referenced by ao_ref_init_from_ptr_and_range(), get_address_cost(), strip_offset_1(), and unadjusted_ptr_and_unit_offset().
tree purpose_member | ( | const_tree | elem, |
tree | list ) |
Return first list element whose TREE_PURPOSE is ELEM. Return 0 if ELEM is not in LIST.
References NULL_TREE, TREE_CHAIN, and TREE_PURPOSE.
Push tree EXP onto vector QUEUE if it is not already present.
References exp(), FOR_EACH_VEC_ELT, i, queue, and simple_cst_equal().
Referenced by find_placeholder_in_expr().
bool real_maybe_zerop | ( | const_tree | expr | ) |
Return true if T could be a floating point zero.
References count, dconst0, i, real_equal(), real_maybe_zerop(), TREE_CODE, TREE_IMAGPART, TREE_REAL_CST, TREE_REALPART, VECTOR_CST_ENCODED_ELT, and vector_cst_encoded_nelts().
Referenced by real_maybe_zerop(), and record_edge_info().
bool real_minus_onep | ( | const_tree | expr | ) |
Return true if EXPR is the real constant minus one. Trailing zeroes matter for decimal float constants, so don't return true for them. Also return true for location wrappers around such a constant.
References dconstm1, DECIMAL_FLOAT_MODE_P, real_equal(), real_minus_onep(), real_zerop(), STRIP_ANY_LOCATION_WRAPPER, TREE_CODE, TREE_IMAGPART, TREE_REAL_CST, TREE_REALPART, TREE_TYPE, TYPE_MODE, VECTOR_CST_DUPLICATE_P, VECTOR_CST_ENCODED_ELT, and VECTOR_CST_NPATTERNS.
Referenced by constant_type(), fold_binary_loc(), real_minus_onep(), reassociate_bb(), tree_predict_by_opcode(), and zero_one_operation().
bool real_onep | ( | const_tree | expr | ) |
Return true if EXPR is the real constant one in real or complex form. Trailing zeroes matter for decimal float constants, so don't return true for them. Also return true for location wrappers around such a constant.
References dconst1, DECIMAL_FLOAT_MODE_P, real_equal(), real_onep(), real_zerop(), STRIP_ANY_LOCATION_WRAPPER, TREE_CODE, TREE_IMAGPART, TREE_REAL_CST, TREE_REALPART, TREE_TYPE, TYPE_MODE, VECTOR_CST_DUPLICATE_P, VECTOR_CST_ENCODED_ELT, and VECTOR_CST_NPATTERNS.
Referenced by constant_type(), eliminate_using_constants(), fold_binary_loc(), initializer_each_zero_or_onep(), is_copysign_call_with_1(), real_onep(), and tree_predict_by_opcode().
REAL_VALUE_TYPE real_value_from_int_cst | ( | const_tree | type, |
const_tree | i ) |
Return a new REAL_CST node whose type is TYPE and whose value is the integer value of the INTEGER_CST node I.
References i, real_from_integer(), REAL_VALUE_TYPE, wi::to_wide(), TREE_TYPE, TYPE_MODE, and TYPE_SIGN.
Referenced by build_real_from_int_cst(), and fold_convert_const_int_from_real().
bool real_zerop | ( | const_tree | expr | ) |
Return true if EXPR is the real constant zero. Trailing zeroes matter for decimal float constants, so don't return true for them. Also return true for location wrappers around such a constant.
References count, dconst0, DECIMAL_FLOAT_MODE_P, i, real_equal(), real_zerop(), STRIP_ANY_LOCATION_WRAPPER, TREE_CODE, TREE_IMAGPART, TREE_REAL_CST, TREE_REALPART, TREE_TYPE, TYPE_MODE, VECTOR_CST_ENCODED_ELT, and vector_cst_encoded_nelts().
Referenced by const_with_all_bytes_same(), ctor_single_nonzero_element(), eliminate_using_constants(), fold_binary_loc(), fold_cond_expr_with_comparison(), fold_real_zero_addition_p(), gimple_expand_builtin_cabs(), operand_compare::hash_operand(), initializer_each_zero_or_onep(), initializer_zerop(), operand_compare::operand_equal_p(), real_minus_onep(), real_onep(), real_zerop(), single_nonzero_element(), tree_predict_by_opcode(), and zerop().
bool really_constant_p | ( | const_tree | exp | ) |
True if EXP is a constant or a cast of a constant.
References CONVERT_EXPR_P, exp(), TREE_CODE, TREE_CONSTANT, and TREE_OPERAND.
Referenced by expand_expr_real_2().
void recompute_constructor_flags | ( | tree | c | ) |
Something has messed with the elements of CONSTRUCTOR C after it was built; calculate TREE_CONSTANT and TREE_SIDE_EFFECTS.
References CONSTRUCTOR_ELTS, FOR_EACH_CONSTRUCTOR_VALUE, i, side_effects_p(), TREE_CONSTANT, and TREE_SIDE_EFFECTS.
Referenced by build_constructor(), and gimplify_init_constructor().
void recompute_tree_invariant_for_addr_expr | ( | tree | t | ) |
Low-level constructors for expressions.
A helper function for build1 and constant folders. Set TREE_CONSTANT, and TREE_SIDE_EFFECTS for an ADDR_EXPR.
References CONSTANT_CLASS_P, DECL_P, lang_hooks::expr_to_decl, gcc_assert, handled_component_p(), INDIRECT_REF_P, NULL_TREE, staticp(), TREE_CODE, TREE_CONSTANT, TREE_OPERAND, TREE_SIDE_EFFECTS, TREE_TYPE, and UPDATE_FLAGS.
Referenced by substitute_and_fold_dom_walker::before_dom_children(), build_invariant_address(), convert_local_reference_op(), convert_nonlocal_reference_op(), copy_tree_body_r(), eliminate_dom_walker::eliminate_stmt(), expand_omp_regimplify_p(), gimplify_addr_expr(), lower_omp_for(), lower_omp_regimplify_p(), maybe_canonicalize_mem_ref_addr(), dom_opt_dom_walker::optimize_stmt(), remap_gimple_op_r(), replace_uses_by(), tidy_after_forward_propagate_addr(), and verify_address().
HACK. GROSS. This is absolutely disgusting. I wish there was a better way. If we requested a pointer to a vector, build up the pointers that we stripped off while looking for the inner type. Similarly for return values from functions. The argument TYPE is the top of the chain, and BOTTOM is the new type which we will point to.
References build_array_type(), build_function_type(), build_method_type_directly(), build_offset_type(), build_pointer_type_for_mode(), build_reference_type_for_mode(), build_type_attribute_qual_variant(), reconstruct_complex_type(), TREE_CHAIN, TREE_CODE, TREE_TYPE, TREE_VALUE, TYPE_ARG_TYPES, TYPE_ATTRIBUTES, TYPE_DOMAIN, TYPE_MODE, TYPE_NO_NAMED_ARGS_STDARG_P, TYPE_OFFSET_BASETYPE, TYPE_QUALS, and TYPE_REF_CAN_ALIAS_ALL.
Referenced by reconstruct_complex_type().
|
static |
Record interesting allocation statistics for a tree node with CODE and LENGTH.
References get_stats_node_kind(), tree_code_counts, tree_node_counts, and tree_node_sizes.
Referenced by build_new_poly_int_cst(), build_omp_clause(), build_string(), build_vl_exp(), copy_node(), grow_tree_vec(), make_int_cst(), make_node(), make_tree_binfo(), make_tree_vec(), make_vector(), and tree_cons().
Wrap a SAVE_EXPR around EXPR, if appropriate. Do this to any expression which may be used in more than one place, but must be evaluated only once. Normally, expand_expr would reevaluate the expression each time. Calling save_expr produces something that is evaluated and recorded the first time expand_expr is called on it. Subsequent calls to expand_expr just reuse the recorded value. The call to expand_expr that generates code that actually computes the value is the first call *at compile time*. Subsequent calls *at compile time* generate code to use the saved value. This produces correct result provided that *at run time* control always flows through the insns made by the first expand_expr before reaching the other places where the save_expr was evaluated. You, the caller of save_expr, must make sure this is so. Constants, and certain read-only nodes, are returned with no SAVE_EXPR because that is safe. Expressions containing placeholders are not touched; see tree.def for an explanation of what these are used for.
References build1_loc(), contains_placeholder_p(), expr, EXPR_LOCATION, skip_simple_arithmetic(), TREE_CODE, tree_invariant_p_1(), TREE_SIDE_EFFECTS, and TREE_TYPE.
Referenced by builtin_save_expr(), c_strlen(), convert_to_complex_1(), convert_to_integer_1(), fold_binary_loc(), fold_builtin_addc_subc(), fold_builtin_arith_overflow(), fold_builtin_bit_query(), fold_builtin_expect(), fold_convert_loc(), fold_mult_zconjz(), fold_range_test(), gimplify_expr(), lower_reduction_clauses(), omp_apply_tile(), stabilize_reference_1(), stabilize_va_list_loc(), and variable_size().
location_t set_block | ( | location_t | loc, |
tree | block ) |
Combine LOC and BLOCK to a combined adhoc loc, retaining any range information.
References get_discriminator_from_loc(), get_pure_location(), and line_table.
Referenced by lto_location_cache::apply_location_cache(), gimple_set_block(), lto_location_cache::input_location_and_block(), move_block_to_fn(), and remap_location().
void set_call_expr_flags | ( | tree | decl, |
int | flags ) |
Modify DECL for given flags. TM_PURE attribute is set only on types, so the function will modify DECL's type when ECF_TM_PURE is used.
References apply_tm_attr(), build_string(), build_tree_list(), DECL_ATTRIBUTES, DECL_IS_MALLOC, DECL_IS_NOVOPS, DECL_IS_RETURNS_TWICE, DECL_LOOPING_CONST_OR_PURE_P, DECL_PURE_P, ECF_COLD, ECF_CONST, ECF_LEAF, ECF_LOOPING_CONST_OR_PURE, ECF_MALLOC, ECF_NORETURN, ECF_NOTHROW, ECF_NOVOPS, ECF_PURE, ECF_RET1, ECF_RETURNS_TWICE, ECF_TM_PURE, ECF_XTHROW, gcc_assert, get_identifier(), NULL, NULL_TREE, tree_cons(), TREE_NOTHROW, TREE_READONLY, and TREE_THIS_VOLATILE.
Referenced by build_cxa_atexit_decl(), and local_define_builtin().
void set_decl_section_name | ( | tree | decl, |
const_tree | other ) |
Set section name of NODE to match the section name of OTHER. set_decl_section_name (decl, other) is equivalent to set_decl_section_name (decl, DECL_SECTION_NAME (other)), but possibly more efficient.
References symtab_node::get(), cgraph_node::get_create(), varpool_node::get_create(), NULL, symtab_node::set_section(), and VAR_P.
void set_decl_section_name | ( | tree | node, |
const char * | value ) |
Set section name of NODE to VALUE (that is expected to be identifier node)
References symtab_node::get(), cgraph_node::get_create(), varpool_node::get_create(), NULL, symtab_node::set_section(), and VAR_P.
Referenced by build_gcov_info_var_registration(), default_unique_section(), get_emutls_init_templ_addr(), new_emutls_decl(), and omp_finish_file().
Set TLS model of variable NODE to MODEL.
References varpool_node::get(), varpool_node::get_create(), varpool_node::tls_model, and TLS_MODEL_NONE.
Referenced by function_and_variable_visibility(), init_ic_make_global_vars(), and new_emutls_decl().
location_t set_source_range | ( | tree | expr, |
location_t | start, | ||
location_t | finish ) |
location_t set_source_range | ( | tree | expr, |
source_range | src_range ) |
|
static |
Set the type qualifiers for TYPE to TYPE_QUALS, which is a bitmask of the various TYPE_QUAL values.
References DECODE_QUAL_ADDR_SPACE, TYPE_ADDR_SPACE, TYPE_ATOMIC, TYPE_QUAL_ATOMIC, TYPE_QUAL_CONST, TYPE_QUAL_RESTRICT, TYPE_QUAL_VOLATILE, TYPE_READONLY, TYPE_RESTRICT, and TYPE_VOLATILE.
Referenced by build_atomic_base(), and build_qualified_type().
If floating-point type TYPE has an IEEE-style sign bit, return an unsigned constant in which only the sign bit is set. Return null otherwise.
References as_a(), build_vector_from_val(), element_mode(), NULL_TREE, pow2p_hwi(), REAL_MODE_FORMAT, wi::set_bit_in_zero(), TREE_CODE, TREE_TYPE, unsigned_type_for(), VECTOR_TYPE_P, and wide_int_to_tree().
If TYPE is an integral or pointer type, return an integer type with the same precision which is unsigned iff UNSIGNEDP is true, or itself if TYPE is already an integer type of signedness UNSIGNEDP. If TYPE is a floating-point type, return an integer type with the same bitsize and with the signedness given by UNSIGNEDP; this is useful when doing bit-level operations on a floating-point value.
References ANY_INTEGRAL_TYPE_P, build_bitint_type(), build_complex_type(), build_nonstandard_integer_type(), build_vector_type(), build_vector_type_for_mode(), GET_MODE_BITSIZE(), INTEGRAL_TYPE_P, new_mode(), NULL_TREE, POINTER_TYPE_P, related_int_vector_mode(), SCALAR_TYPE_MODE, signed_or_unsigned_type_for(), TREE_CODE, TREE_TYPE, type(), TYPE_MODE, TYPE_PRECISION, TYPE_UNSIGNED, TYPE_VECTOR_SUBPARTS(), and VECTOR_MODE_P.
Referenced by signed_or_unsigned_type_for(), signed_type_for(), store_expr(), unsigned_type_for(), and vect_recog_dot_prod_pattern().
If TYPE is an integral or pointer type, return an integer type with the same precision which is signed, or itself if TYPE is already a signed integer type. If TYPE is a floating-point type, return a signed integer type with the same bitsize as TYPE.
References signed_or_unsigned_type_for().
Referenced by affine_fn_op(), build_range_check(), convert_mult_to_highpart(), do_narrow(), do_unop(), expand_oacc_for(), expand_omp_for_generic(), expand_omp_for_init_counts(), expand_omp_for_init_vars(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_simd(), expand_omp_taskloop_for_inner(), expand_omp_taskloop_for_outer(), expand_single_bit_test(), fold_binary_loc(), fold_negate_expr_1(), fold_ternary_loc(), get_computation_cost(), get_offset_range(), lower_rec_input_clauses(), make_tree(), omp_extract_for_data(), signed_type_for_types(), size_diffop_loc(), vect_create_cond_for_align_checks(), vect_emulate_mixed_dot_prod(), vect_recog_abd_pattern(), and vect_recog_dot_prod_pattern().
int simple_cst_equal | ( | const_tree | t1, |
const_tree | t2 ) |
Return truthvalue of whether T1 is the same tree structure as T2. Return 1 if they are the same. Return 0 if they are understandably different. Return -1 if either contains tree structure not understood by this function.
References CALL_EXPR_FN, call_expr_nargs, CONSTRUCTOR_ELTS, CONVERT_EXPR_CODE_P, DECL_NAME, DECL_RTL_SET_P, EXPR_LOCATION, first_const_call_expr_arg(), FIXED_VALUES_IDENTICAL, poly_int< NUM_POLY_INT_COEFFS, widest_int >::from(), i, known_eq, location_wrapper_p(), NULL_TREE, POLY_INT_CST_P, poly_int_cst_value(), real_identical(), simple_cst_equal(), tcc_binary, tcc_comparison, tcc_expression, tcc_reference, tcc_statement, tcc_unary, wi::to_widest(), TREE_CODE, TREE_CODE_CLASS, TREE_CODE_LENGTH, TREE_FIXED_CST, TREE_OPERAND, TREE_REAL_CST, TREE_STRING_LENGTH, TREE_STRING_POINTER, TREE_TYPE, TYPE_SIGN, and vec_safe_length().
Referenced by attribute_value_equal(), categorize_ctor_elements_1(), check_unique_operand_names(), complete_ctor_at_level_p(), count_type_elements(), decl_attributes(), finalize_record_size(), get_range_strlen_tree(), gimple_divmod_fixed_value_transform(), gimple_mod_pow2_value_transform(), gimplify_init_ctor_eval(), mode_for_array(), omp_construct_simd_compare(), omp_context_selector_props_compare(), omp_context_selector_set_compare(), omp_declare_simd_clauses_equal(), place_field(), push_without_duplicates(), restrict_type_identity_attributes_to(), simple_cst_equal(), simple_cst_list_equal(), type_has_padding_at_level_p(), and type_list_equal().
int single_nonzero_element | ( | const_tree | t | ) |
If VECTOR_CST T has a single nonzero element, return the index of that element, otherwise return -1.
References i, integer_zerop(), real_zerop(), vector_cst_elt(), vector_cst_encoded_nelts(), VECTOR_CST_NELTS, VECTOR_CST_NELTS_PER_PATTERN, and VECTOR_CST_NPATTERNS.
tree size_in_bytes_loc | ( | location_t | loc, |
const_tree | type ) |
Return the size nominally occupied by an object of type TYPE when it resides in memory. The value is measured in units of bytes, and its data type is that normally used for type sizes (which is the first type created by make_signed_type or make_unsigned_type).
References error_mark_node, lang_hooks_for_types::incomplete_type_error, integer_zero_node, NULL_TREE, size_zero_node, TYPE_MAIN_VARIANT, TYPE_SIZE_UNIT, and lang_hooks::types.
Referenced by size_in_bytes().
Look inside EXPR into any simple arithmetic operations. Return the outermost non-arithmetic or non-invariant node.
References BINARY_CLASS_P, expr, TREE_CODE, tree_invariant_p(), TREE_OPERAND, and UNARY_CLASS_P.
Referenced by save_expr(), and tree_invariant_p().
Look inside EXPR into simple arithmetic operations involving constants. Return the outermost non-arithmetic or non-constant node.
References BINARY_CLASS_P, expr, TREE_CODE, TREE_CONSTANT, TREE_OPERAND, and UNARY_CLASS_P.
Referenced by self_referential_size().
Stabilize a reference so that we can use it any number of times without causing its operands to be evaluated more than once. Returns the stabilized reference. This works by means of save_expr, so see the caveats in the comments about save_expr. Also allows conversion expressions whose operands are references. Any other kind of expression is returned unchanged.
References build_nt(), CASE_CONVERT, error_mark_node, EXPR_LOCATION, NULL_TREE, protected_set_expr_location(), REF_REVERSE_STORAGE_ORDER, stabilize_reference(), stabilize_reference_1(), TREE_CODE, TREE_OPERAND, TREE_READONLY, TREE_SIDE_EFFECTS, TREE_THIS_VOLATILE, and TREE_TYPE.
Referenced by stabilize_reference().
Subroutine of stabilize_reference; this is called for subtrees of references. Any expression with side-effects must be put in a SAVE_EXPR to ensure that it is only evaluated once. We don't put SAVE_EXPR nodes around everything, because assigning very simple expressions to temporaries causes us to miss good opportunities for optimizations. Among other things, the opportunity to fold in the addition of a constant into an addressing mode often gets lost, e.g. "y[i+1] += x;". In general, we take the approach that we should not make an assignment unless we are forced into it - i.e., that any non-side effect operator should be allowed, and that cse should take care of coalescing multiple utterances of the same expression should that prove fruitful.
References build_nt(), gcc_unreachable, save_expr(), stabilize_reference_1(), tcc_binary, tcc_comparison, tcc_constant, tcc_declaration, tcc_exceptional, tcc_expression, tcc_reference, tcc_statement, tcc_type, tcc_unary, tcc_vl_exp, TREE_CODE, TREE_CODE_CLASS, tree_invariant_p(), TREE_OPERAND, TREE_READONLY, TREE_SIDE_EFFECTS, TREE_THIS_VOLATILE, and TREE_TYPE.
Referenced by stabilize_reference(), and stabilize_reference_1().
If arg is static -- a reference to an object in static storage -- then return the object. This is not the same as the C meaning of `static'. If arg isn't static, return NULL.
References COMPOUND_LITERAL_EXPR_DECL, DECL_BIT_FIELD, DECL_DLLIMPORT_P, DECL_EXTERNAL, DECL_THREAD_LOCAL_P, gcc_assert, NULL, staticp(), TREE_CODE, TREE_CONSTANT, TREE_OPERAND, TREE_STATIC, TREE_TYPE, and TYPE_SIZE.
Referenced by initializer_constant_valid_p_1(), recompute_tree_invariant_for_addr_expr(), safe_from_p(), and staticp().
bool stdarg_p | ( | const_tree | fntype | ) |
Return true if TYPE has a variable argument list.
References FOREACH_FUNCTION_ARGS, NULL_TREE, TYPE_NO_NAMED_ARGS_STDARG_P, and void_type_node.
Referenced by allocate_struct_function(), check_argument_count(), compute_fn_summary(), expand_thunk(), fold_builtin_next_arg(), go_format_type(), ipa_icf::sem_function::merge(), and tree_profiling().
Avoid any floating point extensions from EXP.
References build_real_truncate(), CONVERT_EXPR_P, DECIMAL_FLOAT_TYPE_P, double_type_node, element_precision(), exact_real_truncate(), exp(), float_type_node, FLOAT_TYPE_P, NULL, REAL_VALUE_TYPE, strip_float_extensions(), TREE_CODE, TREE_OPERAND, TREE_REAL_CST, TREE_TYPE, TYPE_MODE, and TYPE_PRECISION.
Referenced by convert_to_integer_1(), convert_to_real_1(), fold_binary_loc(), fold_negate_expr_1(), fold_unary_loc(), negate_expr_p(), and strip_float_extensions().
const_tree strip_invariant_refs | ( | const_tree | op | ) |
Strip out all handled components that produce invariant offsets.
References handled_component_p(), is_gimple_constant(), NULL, NULL_TREE, TREE_CODE, and TREE_OPERAND.
Referenced by is_gimple_invariant_address(), is_gimple_ip_invariant_address(), is_gimple_min_lval(), and transaction_invariant_address_p().
Strip handled components with zero offset from OP.
References DECL_FIELD_BIT_OFFSET, DECL_FIELD_OFFSET, integer_zerop(), TREE_CODE, and TREE_OPERAND.
Referenced by vect_create_addr_base_for_vector_ref().
bool subrange_type_for_debug_p | ( | const_tree | type, |
tree * | lowval, | ||
tree * | highval ) |
Return true if the debug information for TYPE, a subtype, should be emitted as a subrange type. If so, set LOWVAL to the low bound and HIGHVAL to the high bound, respectively. Sometimes doing so unnecessarily obfuscates the debug info and doesn't reflect the source code.
References lang_hooks_for_types::get_subrange_bounds, int_size_in_bytes(), INTEGRAL_TYPE_P, TREE_CODE, tree_int_cst_equal(), TREE_TYPE, TYPE_IDENTIFIER, TYPE_MAX_VALUE, TYPE_MIN_VALUE, and lang_hooks::types.
Referenced by modified_type_die().
Given a tree EXP, a FIELD_DECL F, and a replacement value R, return a tree with all occurrences of references to F in a PLACEHOLDER_EXPR replaced by R. Also handle VAR_DECLs and CONST_DECLs. Note that we assume here that EXP contains only arithmetic expressions or CALL_EXPRs with PLACEHOLDER_EXPRs occurring only in their argument list.
References build4(), CONSTANT_CLASS_P, copy_node(), exp(), fold(), fold_build1, fold_build2, fold_build3, gcc_unreachable, i, maybe_inline_call_in_expr(), NULL_TREE, operand_equal_p(), process_call_operands(), r, REFERENCE_CLASS_P, SUBSTITUTE_IN_EXPR, tcc_binary, tcc_comparison, tcc_constant, tcc_declaration, tcc_exceptional, tcc_expression, tcc_reference, tcc_unary, tcc_vl_exp, TREE_CHAIN, TREE_CODE, TREE_CODE_CLASS, TREE_CODE_LENGTH, tree_cons(), TREE_OPERAND, TREE_OPERAND_LENGTH, TREE_PURPOSE, TREE_READONLY, TREE_THIS_NOTRAP, TREE_TYPE, and TREE_VALUE.
Referenced by self_referential_size().
Similar, but look for a PLACEHOLDER_EXPR in EXP and find a replacement for it within OBJ, a tree that is an object or a chain of references.
References BINARY_CLASS_P, build4(), copy_node(), exp(), EXPRESSION_CLASS_P, fold(), fold_build1, fold_build2, fold_build3, gcc_unreachable, i, NULL_TREE, POINTER_TYPE_P, process_call_operands(), REFERENCE_CLASS_P, SUBSTITUTE_PLACEHOLDER_IN_EXPR, tcc_binary, tcc_comparison, tcc_constant, tcc_declaration, tcc_exceptional, tcc_expression, tcc_reference, tcc_statement, tcc_unary, tcc_vl_exp, TREE_CHAIN, TREE_CODE, TREE_CODE_CLASS, TREE_CODE_LENGTH, tree_cons(), TREE_OPERAND, TREE_OPERAND_LENGTH, TREE_PURPOSE, TREE_READONLY, TREE_THIS_NOTRAP, TREE_TYPE, TREE_VALUE, TYPE_MAIN_VARIANT, UNARY_CLASS_P, and VL_EXP_CLASS_P.
References gcc_unreachable, IS_EXPR_CODE_CLASS, LOCATION_BLOCK, NULL, TREE_CODE, and TREE_CODE_CLASS.
Referenced by tree_code_size().
|
static |
Return true when STMTs arguments and return value match those of FNDECL, a decl of a builtin function.
References BUILT_IN_NORMAL, builtin_decl_explicit(), CALL_EXPR_ARG, call_expr_nargs, cfun, DECL_BUILT_IN_CLASS, DECL_FUNCTION_CODE(), gcc_checking_assert, i, integer_type_node, INTEGRAL_TYPE_P, NOT_BUILT_IN, POINTER_TYPE_P, PROP_gimple, targetm, TREE_CHAIN, tree_nop_conversion_p(), TREE_TYPE, TREE_VALUE, TYPE_ARG_TYPES, TYPE_MAIN_VARIANT, TYPE_PRECISION, TYPE_UNSIGNED, useless_type_conversion_p(), and VOID_TYPE_P.
Referenced by get_call_combined_fn().
void tree_cc_finalize | ( | void | ) |
Referenced by toplev::finalize().
size_t tree_code_size | ( | enum tree_code | code | ) |
Compute the number of bytes occupied by a tree with code CODE. This function cannot be used for nodes that have variable sizes, including TREE_VEC, INTEGER_CST, STRING_CST, and CALL_EXPR.
References gcc_checking_assert, gcc_unreachable, lang_hooks::identifier_size, NUM_TREE_CODES, tcc_binary, tcc_comparison, tcc_constant, tcc_declaration, tcc_exceptional, tcc_expression, tcc_reference, tcc_statement, tcc_type, tcc_unary, tree_block(), TREE_CODE_CLASS, TREE_CODE_LENGTH, and lang_hooks::tree_size.
Referenced by make_node(), and tree_size().
|
static |
Comparator of indices based on tree_code_counts.
Referenced by dump_tree_statistics().
Return a newly created TREE_LIST node whose purpose and value fields are PURPOSE and VALUE and whose TREE_CHAIN is CHAIN.
References ggc_alloc_tree_node_stat(), PASS_MEM_STAT, record_node_allocation_statistics(), TREE_CHAIN, TREE_PURPOSE, TREE_SET_CODE, and TREE_VALUE.
Referenced by add_detected_attribute_1(), apply_tm_attr(), asan_poison_variables(), assemble_external(), assign_filter_values(), build_adjusted_function_type(), build_function_type_array_1(), build_function_type_list_1(), build_method_type_directly(), tree_switch_conversion::switch_conversion::build_one_array(), rt_bb_visited::check(), common_function_versions(), copy_decl_for_dup_finish(), create_assumption_fn(), create_nesting_tree(), create_odr_indicator(), create_omp_child_function(), create_parallel_loop(), decl_attributes(), declare_weak(), do_assemble_alias(), expand_omp_target(), expand_simd_clones(), gen_eh_region_catch(), gimple_init_gcov_profiler(), gimplify_adjust_omp_clauses_1(), gimplify_bind_expr(), gimplify_oacc_declare(), lhd_simulate_enum_decl(), lower_assumption(), lower_omp_target(), lower_rec_simd_input_clauses(), make_attribute(), make_trait_property(), make_trait_selector(), make_trait_set_selector(), maybe_canonicalize_argtypes(), oacc_build_routine_dims(), oacc_replace_fn_attrib_attr(), oacc_set_fn_attrib(), oacc_validate_dims(), omp_discover_declare_target_tgt_fn_r(), omp_discover_declare_target_var_r(), omp_mark_declare_variant(), omp_resolve_declare_variant(), rt_bb_visited::push_rtcfg_pair(), remap_type_1(), remove_attributes_matching(), remove_named_attribute_unsharing(), scan_omp_for(), scan_sharing_clauses(), self_referential_size(), set_call_expr_flags(), simd_clone_adjust_argument_types(), split_bb_make_tm_edge(), strub_set_fndt_mode_to(), substitute_in_expr(), substitute_placeholder_in_expr(), and rt_bb_visited::visit().
unsigned int tree_ctz | ( | const_tree | expr | ) |
Return number of known trailing zero bits in EXPR, or, if the value of EXPR is known to be zero, the precision of it's type.
References CASE_CONVERT, CONST_CAST_TREE, wi::ctz(), ctz_hwi(), get_nonzero_bits(), get_pointer_alignment(), INTEGRAL_TYPE_P, MAX, MIN, POINTER_TYPE_P, wi::to_wide(), TREE_CODE, tree_ctz(), tree_fits_uhwi_p(), tree_int_cst_sgn(), tree_log2(), TREE_OPERAND, tree_to_uhwi(), TREE_TYPE, and TYPE_PRECISION.
Referenced by expand_builtin_memcmp(), expand_builtin_memory_copy_args(), expand_builtin_memset_args(), get_object_alignment_2(), get_pointer_alignment_1(), highest_pow2_factor(), may_be_unaligned_p(), tree_ctz(), and vect_need_peeling_or_partial_vectors_p().
unsigned int tree_decl_map_hash | ( | const void * | item | ) |
Hash a from tree in a tree_decl_map.
References DECL_UID.
Referenced by tree_decl_map_cache_hasher::hash().
bool tree_fits_poly_int64_p | ( | const_tree | t | ) |
Return true if T is an INTEGER_CST or POLY_INT_CST whose numerical value (extended according to TYPE_UNSIGNED) fits in a poly_int64.
References wi::fits_shwi_p(), i, NULL_TREE, NUM_POLY_INT_COEFFS, POLY_INT_CST_COEFF, POLY_INT_CST_P, wi::to_wide(), wi::to_widest(), and TREE_CODE.
Referenced by address_compare(), component_ref_size(), expand_asm_stmt(), fold_indirect_ref_1(), poly_int_tree_p(), tree_to_vec_perm_builder(), and vn_reference_lookup_3().
bool tree_fits_poly_uint64_p | ( | const_tree | t | ) |
Return true if T is an INTEGER_CST or POLY_INT_CST whose numerical value (extended according to TYPE_UNSIGNED) fits in a poly_uint64.
References wi::fits_uhwi_p(), i, NULL_TREE, NUM_POLY_INT_COEFFS, POLY_INT_CST_COEFF, POLY_INT_CST_P, wi::to_widest(), and TREE_CODE.
Referenced by compute_record_mode(), gimple_add_tmp_var(), gimple_add_tmp_var_fn(), gimplify_asm_expr(), and poly_int_tree_p().
bool tree_fits_shwi_p | ( | const_tree | t | ) |
Return true if T is an INTEGER_CST whose numerical value (extended according to TYPE_UNSIGNED) fits in a signed HOST_WIDE_INT.
References wi::fits_shwi_p(), NULL_TREE, wi::to_widest(), and TREE_CODE.
Referenced by acceptable_pow_call(), add_src_coords_attributes(), add_subscript_strides(), analyze_and_compute_bitwise_induction_effect(), analyze_increments(), asan_expand_check_ifn(), check_omp_nesting_restrictions(), check_stmt_for_type_change(), compute_builtin_object_size(), cond_removal_in_builtin_zero_pattern(), constant_byte_string(), strlen_pass::count_nonzero_bytes_addr(), create_intersect_range_checks_index(), cst_and_fits_in_hwi(), decode_field_reference(), dump_array_domain(), dump_generic_node(), dump_gimple_call_args(), expand_builtin_atomic_compare_exchange(), expand_builtin_eh_common(), expand_expr_real_2(), expr_with_var_bounded_array_refs_p(), extr_type_from_vtbl_ptr_store(), extract_muldiv_1(), field_at_offset(), fold_plusminus_mult_expr(), fortran_common(), fully_constant_vn_reference_p(), gcd_of_steps_may_divide_p(), get_stridx(), gimple_compare_field_offset(), gimple_fold_builtin_memory_op(), go_format_type(), go_output_typedef(), strlen_pass::handle_builtin_string_cmp(), has_mem_ref_been_instrumented(), instrument_mem_region_access(), int_expr_size(), is_comparison_with_loop_invariant_p(), is_lshift_by_1(), is_rshift_by_1(), loc_list_from_tree_1(), lower_omp_for_lastprivate(), make_bit_field_ref(), maybe_add_sra_candidate(), maybe_update_mem_ref_hash_table(), native_encode_constructor(), native_encode_initializer(), native_encode_string(), native_interpret_aggregate(), place_field(), possible_placement_new(), predict_iv_comparison(), prepare_call_arguments(), prepare_iteration_over_array_elts(), push_target_argument_according_to_value(), ipa_polymorphic_call_context::restrict_to_inner_class(), rtl_for_decl_init(), simd_clone_clauses_extract(), simplify_builtin_call(), simplify_rotate(), spaceship_replacement(), stmt_cost(), store_constructor(), strips_small_constant(), totally_scalarizable_type_p(), tree_add_const_value_attribute(), tree_to_shwi(), type_internals_preclude_sra_p_1(), vect_analyze_data_ref_accesses(), vect_analyze_group_access_1(), vect_analyze_loop_form(), vect_check_gather_scatter(), vect_recog_pow_pattern(), vect_simd_lane_linear(), vect_synth_mult_by_constant(), vectorizable_simd_clone_call(), vn_reference_fold_indirect(), vn_reference_lookup_3(), and vn_reference_maybe_forwprop_address().
bool tree_fits_uhwi_p | ( | const_tree | t | ) |
Return true if T is an INTEGER_CST whose numerical value (extended according to TYPE_UNSIGNED) fits in an unsigned HOST_WIDE_INT.
References wi::fits_uhwi_p(), NULL_TREE, wi::to_widest(), and TREE_CODE.
Referenced by add_abstract_origin_attribute(), add_data_member_location_attribute(), addr_object_size(), strlen_pass::adjust_last_stmt(), analyze_and_compute_bitop_with_inv_effect(), analyze_and_compute_bitwise_induction_effect(), asan_expand_mark_ifn(), bit_value_assume_aligned(), bitpos_of_field(), btf_datasec_add_var(), build_tm_load(), build_tm_store(), build_user_friendly_ref_for_offset(), c_strlen(), categorize_ctor_elements_1(), check_access(), check_all_va_list_escapes(), tree_switch_conversion::switch_conversion::check_range(), check_strncat_sizes(), compare_tree_int(), compute_alias_check_pairs(), constant_byte_string(), convert_mult_to_highpart(), strlen_pass::count_nonzero_bytes(), count_type_elements(), create_expression_by_pieces(), create_ifn_alias_checks(), create_variable_info_for_1(), cst_and_fits_in_hwi(), default_use_anchors_for_symbol_p(), default_vector_alignment(), determine_block_size(), determine_known_aggregate_parts(), dump_generic_node(), dw_sra_loc_expr(), early_object_sizes_execute_one(), evaluate_stmt(), tree_switch_conversion::switch_conversion::expand(), expand_builtin_eh_return_data_regno(), expand_builtin_frame_address(), expand_builtin_memory_chk(), expand_builtin_memset_args(), expand_builtin_strncpy(), expand_constructor(), expand_DEFERRED_INIT(), expand_expr_real_1(), expand_omp_scantemp_alloc(), expand_omp_simd(), expand_vector_divmod(), expr_expected_value_1(), field_at_offset(), final_value_replacement_loop(), find_atomic_core_type(), finish_bitfield_layout(), finish_bitfield_representative(), fold_builtin_alloca_with_align(), fold_builtin_memcmp(), fold_const_aggregate_ref_1(), fold_read_from_constant_string(), fold_ternary_loc(), fold_unary_loc(), get_block_for_decl(), get_constraint_for_1(), strlen_pass::get_len_or_size(), get_mem_align_offset(), get_narrower(), get_size_range(), get_stridx_plus_constant(), get_vec_alignment_for_record_type(), getbyterep(), gimple_fold_builtin_memchr(), gimple_fold_builtin_memory_op(), gimple_fold_builtin_memset(), gimple_fold_builtin_strcat_chk(), gimple_fold_builtin_string_compare(), gimple_fold_indirect_ref(), gimple_fold_partial_load_store_mem_ref(), gimplify_omp_loop_xform(), go_output_typedef(), strlen_pass::handle_builtin_memcmp(), strlen_pass::handle_builtin_memcpy(), strlen_pass::handle_pointer_plus(), handle_printf_call(), strlen_pass::handle_store(), hoist_adjacent_loads(), init_offset_limit(), initialize_ao_ref_for_dse(), initialize_data_dependence_relation(), initializer_zerop(), inline_expand_builtin_bytecmp(), instrument_builtin_call(), instrument_expr(), int_size_in_bytes(), interpret_rhs_expr(), is_aligning_offset(), loc_list_from_tree_1(), locate_and_pad_parm(), lower_builtin_assume_aligned(), lower_vec_perm(), max_int_size_in_bytes(), maybe_emit_sprintf_chk_warning(), maybe_invalidate(), maybe_trim_memstar_call(), mode_for_size_tree(), native_encode_initializer(), native_interpret_aggregate(), nonzero_bytes_for_type(), not_size_aligned(), object_sizes_execute(), loop_distribution::pg_add_dependence_edges(), place_field(), predict_loops(), push_fields_onto_fieldstack(), ref_at_iteration(), ipa_polymorphic_call_context::restrict_to_inner_class(), ipa_icf_gimple::func_checker::safe_for_total_scalarization_p(), crc_optimization::satisfies_crc_loop_iteration_count(), self_reuse_distance(), simple_type_size_in_bits(), simplify_builtin_call(), simplify_rotate(), size_t_cst_p(), sra_modify_expr(), stack_protect_classify_type(), store_constructor(), target_char_cst_p(), tm_log_add(), tm_log_emit_stmt(), tree_add_const_value_attribute(), tree_ctz(), tree_to_uhwi(), try_unroll_loop_completely(), type_internals_preclude_sra_p_1(), type_like_member_ptr_p(), ubsan_type_descriptor(), va_list_counter_bump(), valid_constant_size_p(), vect_analyze_data_ref_accesses(), vect_find_stmt_data_reference(), vect_get_smallest_scalar_type(), vect_peel_nonlinear_iv_init(), vect_recog_bit_insert_pattern(), vect_recog_bitfield_ref_pattern(), vect_recog_rotate_pattern(), vector_element(), vectorizable_nonlinear_induction(), verify_gimple_assign_ternary(), visit_nary_op(), and vn_reference_lookup_3().
int tree_floor_log2 | ( | const_tree | expr | ) |
Similar, but return the largest integer Y such that 2 ** Y is less than or equal to EXPR.
References wi::floor_log2(), wi::to_wide(), TREE_CODE, tree_log2(), and TREE_REALPART.
Referenced by do_jump(), inverse(), and tree_int_cst_min_precision().
Return the location into which EXP has been inlined. Analogous to tree_nonartificial_location() above but not limited to artificial functions declared inline. If SYSTEM_HEADER is true, return the macro expansion point of the location if it's in a system header
References BLOCK_ABSTRACT_ORIGIN, BLOCK_SOURCE_LOCATION, BLOCK_SUPERCONTEXT, exp(), expansion_point_location_if_in_system_header(), EXPR_LOCATION, TREE_BLOCK, TREE_CODE, and UNKNOWN_LOCATION.
bool tree_int_cst_equal | ( | const_tree | t1, |
const_tree | t2 ) |
True if integer constants T1 and T2 represent the same constant value.
References STRIP_ANY_LOCATION_WRAPPER, wi::to_widest(), and TREE_CODE.
Referenced by adjacent_dr_p(), arith_overflow_check_p(), tree_switch_conversion::switch_conversion::build_constructors(), byte_from_pos(), c_strlen(), check_out_of_bounds_and_warn(), check_strncat_sizes(), coalesce_bitint(), tree_switch_conversion::switch_conversion::collect(), compare_constant(), ipa_icf_gimple::func_checker::compare_gimple_switch(), component_ref_size(), compute_optimized_partition_bases(), constant_byte_string(), convert_to_integer_1(), convert_to_vector(), type_cache_hasher::equal(), ipa_icf::sem_variable::equals(), expand_DEFERRED_INIT(), expand_expr_real_1(), expand_omp_atomic_cas(), expand_omp_for_static_chunk(), fold_convert_loc(), fold_convertible_p(), fold_relational_const(), get_inner_reference(), gimple_compare_field_offset(), gimple_fold_builtin_memory_op(), gimple_fold_indirect_ref(), gimple_lower_bitint(), internal_gather_scatter_fn_supported_p(), ipa_get_stmt_member_ptr_load_param(), tree_switch_conversion::simple_cluster::is_single_value_p(), is_value_included_in(), make_range_step(), maybe_canonicalize_comparison_1(), maybe_rewrite_mem_ref_base(), maybe_warn_for_bound(), maybe_warn_nonstring_arg(), merge_ranges(), nonoverlapping_array_refs_p(), nonoverlapping_component_refs_p_1(), nonoverlapping_refs_since_match_p(), omp_adjust_for_condition(), operand_compare::operand_equal_p(), optimize_range_tests_cmp_bitwise(), optimize_range_tests_diff(), optimize_range_tests_xor(), pos_from_bit(), preprocess_case_label_vec_for_gimple(), rt_bb_visited::push_rtcfg_pair(), simple_iv_with_niters(), simplify_using_ranges::simplify_switch_using_ranges(), ana::bounded_range::singleton_p(), size_diffop_loc(), split_loop(), store_kills_ref_p(), subrange_type_for_debug_p(), try_transform_to_exit_first_loop_alt(), useless_type_conversion_p(), value_replacement(), vect_analyze_data_ref_accesses(), vect_find_stmt_data_reference(), vn_reference_lookup_3(), and warn_for_access().
Return the minimum number of bits needed to represent VALUE in a signed or unsigned type, UNSIGNEDP says which.
References fold_build1, integer_zerop(), SIGNED, tree_floor_log2(), tree_int_cst_sgn(), and TREE_TYPE.
Referenced by tree_binary_nonnegative_warnv_p().
int tree_int_cst_sgn | ( | const_tree | t | ) |
Return an indication of the sign of the integer constant T. The return value is -1 if T < 0, 0 if T == 0, and 1 if T > 0. Note that -1 will never be returned if T's type is unsigned.
References wi::neg_p(), wi::to_wide(), TREE_TYPE, and TYPE_UNSIGNED.
Referenced by bitint_min_cst_precision(), chrec_apply(), chrec_is_positive(), compare_tree_int(), compute_object_offset(), convert_to_integer_1(), dr_step_indicator(), dump_generic_node(), expand_builtin_object_size(), expand_omp_for_generic(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_ordered_sink(), expand_omp_simd(), expand_omp_taskloop_for_inner(), expand_omp_taskloop_for_outer(), expand_vector_divmod(), extract_bit_test_mask(), extract_muldiv_1(), fold_binary_loc(), fold_builtin_object_size(), fold_comparison(), fold_div_compare(), get_range_strlen_tree(), go_format_type(), instrument_object_size(), maybe_canonicalize_comparison_1(), maybe_optimize_mod_cmp(), maybe_optimize_pow2p_mod_cmp(), optimize_spaceship(), output_constant(), prune_runtime_alias_test_list(), return_prediction(), simplify_using_ranges::simplify_div_or_mod_using_ranges(), tree_binary_nonnegative_warnv_p(), tree_ctz(), tree_int_cst_min_precision(), tree_single_nonnegative_warnv_p(), valid_constant_size_p(), vect_create_data_ref_ptr(), vect_dr_misalign_for_aligned_access(), vect_get_data_ptr_increment(), vect_recog_divmod_pattern(), vectorizable_load(), and vectorizable_reduction().
int tree_int_cst_sign_bit | ( | const_tree | t | ) |
Return the most significant (sign) bit of T.
References wi::extract_uhwi(), wi::to_wide(), TREE_TYPE, and TYPE_PRECISION.
Referenced by create_intersect_range_checks_index(), derive_constant_upper_bound_ops(), derive_simple_iv_with_niters(), determine_exit_conditions(), get_cst_init_from_scev(), idx_infer_loop_bounds(), loop_exits_before_overflow(), multiple_of_p(), number_of_iterations_cond(), number_of_iterations_lt(), number_of_iterations_ne(), number_of_iterations_until_wrap(), record_nonwrapping_iv(), scev_direction(), scev_var_range_cant_overflow(), simple_iv_with_niters(), split_at_bb_p(), split_loop(), and warn_for_access().
Return true if T is function-invariant.
References skip_simple_arithmetic(), and tree_invariant_p_1().
Referenced by skip_simple_arithmetic(), stabilize_reference_1(), and tree_invariant_p_1().
Return true if T is function-invariant (internal function, does not handle arithmetic; that's handled in skip_simple_arithmetic and tree_invariant_p).
References CONSTANT_CLASS_P, decl_address_invariant_p(), handled_component_p(), NULL_TREE, TREE_CODE, TREE_CONSTANT, tree_invariant_p(), TREE_OPERAND, TREE_READONLY, and TREE_SIDE_EFFECTS.
Referenced by save_expr(), and tree_invariant_p().
Return the last node in a chain of nodes (chained through TREE_CHAIN).
References TREE_CHAIN.
Referenced by build_adjusted_function_type(), and fold_builtin_next_arg().
int tree_log2 | ( | const_tree | expr | ) |
Return the power of two represented by a tree node known to be a power of two.
References wi::exact_log2(), wi::to_wide(), TREE_CODE, tree_log2(), and TREE_REALPART.
Referenced by tree_switch_conversion::switch_conversion::exp_index_transform(), expand_mul_overflow(), expand_vector_divmod(), fold_ternary_loc(), number_of_iterations_cltz(), optimize_atomic_bit_test_and(), recognize_single_bit_test(), simplify_using_ranges::simplify_div_or_mod_using_ranges(), tree_ctz(), tree_floor_log2(), tree_log2(), ubsan_expand_null_ifn(), and vect_recog_divmod_pattern().
int tree_map_base_eq | ( | const void * | va, |
const void * | vb ) |
unsigned int tree_map_base_hash | ( | const void * | item | ) |
Hash a from tree in a tree_base_map.
bool tree_map_base_marked_p | ( | const void * | p | ) |
Return true if this tree map structure is marked for garbage collection purposes. We simply return true if the from tree is marked, so that this structure goes away when the from tree goes away.
References ggc_marked_p().
unsigned int tree_map_hash | ( | const void * | item | ) |
Hash a from tree in a tree_map.
Referenced by tm_clone_hasher::hash(), and move_sese_region_to_fn().
enum tree_node_structure_enum tree_node_structure | ( | const_tree | t | ) |
Return which tree structure is used by T.
References TREE_CODE, and tree_node_structure_for_code().
|
inlinestatic |
Return the tree node structure used by tree code CODE.
References gcc_unreachable, tcc_binary, tcc_comparison, tcc_declaration, tcc_expression, tcc_reference, tcc_statement, tcc_type, tcc_unary, tcc_vl_exp, and TREE_CODE_CLASS.
Referenced by initialize_tree_contains_struct(), and tree_node_structure().
|
static |
Comparator of indices based on tree_node_counts.
References tree_node_counts.
Referenced by dump_tree_statistics().
location_t tree_nonartificial_location | ( | tree | exp | ) |
If EXP is inlined from an __attribute__((__artificial__)) function, return the location of the original call expression.
References block_nonartificial_location(), exp(), EXPR_LOCATION, and TREE_BLOCK.
Referenced by gimple_or_expr_nonartificial_location().
|
inlinestatic |
Return true iff conversion in EXP generates no instruction. Mark it inline so that we fully inline into the stripping functions even though we have two uses of this function.
References CONVERT_EXPR_P, error_mark_node, exp(), location_wrapper_p(), TREE_CODE, tree_nop_conversion_p(), TREE_OPERAND, and TREE_TYPE.
Referenced by tree_sign_nop_conversion(), and tree_strip_nop_conversions().
bool tree_nop_conversion_p | ( | const_tree | outer_type, |
const_tree | inner_type ) |
Return true iff conversion from INNER_TYPE to OUTER_TYPE generates no instruction.
References ADDR_SPACE_GENERIC, INTEGRAL_TYPE_P, POINTER_TYPE_P, TREE_CODE, TREE_TYPE, TYPE_ADDR_SPACE, TYPE_MODE, and TYPE_PRECISION.
Referenced by bitwise_equal_p(), bitwise_inverted_equal_p(), check_reduction_path(), chrec_fold_multiply(), chrec_fold_plus_1(), expr_to_aff_combination(), scev_dfs::follow_ssa_edge_expr(), get_load_store_type(), gimple_bitwise_equal_p(), gimple_bitwise_inverted_equal_p(), gimple_nop_conversion_p(), operand_compare::operand_equal_p(), optimize_atomic_op_fetch_cmp_0(), simple_iv_with_niters(), strip_nop_cond_scalar_reduction(), tree_builtin_call_types_compatible_p(), tree_nop_conversion(), vect_nop_conversion_p(), vectorizable_assignment(), vectorizable_nonlinear_induction(), vectorizable_operation(), vectorizable_reduction(), vectorizable_shift(), and verify_gimple_assign_ternary().
|
static |
Return true iff conversion in EXP generates no instruction. Don't consider conversions changing the signedness.
References exp(), POINTER_TYPE_P, tree_nop_conversion(), TREE_OPERAND, TREE_TYPE, and TYPE_UNSIGNED.
Referenced by tree_strip_sign_nop_conversions().
size_t tree_size | ( | const_tree | node | ) |
Compute the number of bytes occupied by NODE. This routine only looks at TREE_CODE, except for those nodes that have variable sizes.
References BINFO_N_BASE_BINFOS, offsetof, OMP_CLAUSE_CODE, omp_clause_num_ops, tcc_vl_exp, TREE_CODE, TREE_CODE_CLASS, tree_code_size(), TREE_INT_CST_EXT_NUNITS, TREE_STRING_LENGTH, TREE_VEC_LENGTH, vector_cst_encoded_nelts(), and VL_EXP_OPERAND_LENGTH.
Referenced by copy_node(), free_node(), optimize_load_redistribution_1(), release_ssa_name_fn(), vect_build_slp_instance(), vect_build_slp_tree(), vect_build_slp_tree_2(), and vect_lower_load_permutations().
Strip conversions from EXP according to tree_nop_conversion and return the resulting expression.
References exp(), tree_nop_conversion(), and TREE_OPERAND.
Referenced by gimplify_call_expr().
Strip conversions from EXP according to tree_sign_nop_conversion and return the resulting expression.
References exp(), TREE_OPERAND, and tree_sign_nop_conversion().
poly_int64 tree_to_poly_int64 | ( | const_tree | t | ) |
Referenced by address_compare(), ipcp_modif_dom_walker::before_dom_children(), component_ref_size(), convert_mult_to_fma(), get_reassociation_width(), ipcp_get_aggregate_const(), load_from_unmodified_param_or_agg(), poly_int_tree_p(), tree_to_vec_perm_builder(), unmodified_parm_1(), and vn_reference_lookup_3().
poly_uint64 tree_to_poly_uint64 | ( | const_tree | t | ) |
Referenced by add_stack_var(), bit_field_offset(), bit_field_size(), build_truth_vector_type_for(), dump_generic_node(), emit_note_insn_var_location(), expand_expr_real_2(), expand_one_stack_var_1(), fold_truth_andor_for_ifcombine(), get_bit_range(), native_interpret_vector(), poly_int_tree_p(), simplify_bitfield_ref(), store_constructor(), vect_build_slp_tree_2(), vect_compile_time_alias(), vect_recog_bool_pattern(), vect_slp_is_lane_insert(), vectorizable_load(), verify_opaque_type(), and verify_types_in_gimple_reference().
HOST_WIDE_INT tree_to_shwi | ( | const_tree | t | ) |
T is an INTEGER_CST whose numerical value (extended according to TYPE_UNSIGNED) fits in a signed HOST_WIDE_INT. Return that HOST_WIDE_INT.
References gcc_assert, tree_fits_shwi_p(), and TREE_INT_CST_LOW.
Referenced by acceptable_pow_call(), add_data_member_location_attribute(), add_prototyped_attribute(), add_src_coords_attributes(), add_subscript_strides(), adjusted_warn_limit(), alloca_call_type(), analyze_and_compute_bitwise_induction_effect(), analyze_increments(), asan_expand_check_ifn(), asan_expand_mark_ifn(), build_agg_jump_func_from_list(), build_fn_info(), cache_integer_cst(), check_all_va_list_escapes(), check_ctz_array(), check_omp_nesting_restrictions(), check_stmt_for_type_change(), check_ts_and_push_padding_to_vec(), clear_padding_type(), clear_padding_union(), cond_removal_in_builtin_zero_pattern(), constant_byte_string(), strlen_pass::count_nonzero_bytes_addr(), create_access(), create_intersect_range_checks_index(), decode_addr_const(), decode_field_reference(), dump_array_domain(), dump_generic_node(), dump_gimple_call_args(), emit_case_dispatch_table(), expand_builtin_atomic_compare_exchange(), expand_builtin_eh_common(), expand_builtin_object_size(), expand_call_mem_ref(), expand_expr_real_2(), expand_gather_load_optab_fn(), expand_HWASAN_MARK(), expand_ifn_atomic_compare_exchange(), expand_scatter_store_optab_fn(), extr_type_from_vtbl_ptr_store(), extract_muldiv_1(), field_at_offset(), fold_builtin_object_size(), fold_plusminus_mult_expr(), fortran_common(), fully_constant_vn_reference_p(), gcd_of_steps_may_divide_p(), get_binfo_at_offset(), get_references_in_stmt(), get_stridx(), gimple_fold_indirect_ref(), gimplify_adjust_omp_clauses(), gimplify_omp_for(), go_format_type(), go_output_typedef(), strlen_pass::handle_builtin_string_cmp(), has_mem_ref_been_instrumented(), access_ref::inform_access(), instrument_mem_region_access(), int_byte_position(), int_expr_size(), ipa_analyze_call_uses(), is_lshift_by_1(), is_rshift_by_1(), layout_decl(), loc_list_from_tree_1(), lookup_binfo_at_offset(), lower_omp_for_lastprivate(), make_bit_field_ref(), mark_reachable_handlers(), maybe_add_sra_candidate(), maybe_optimize_ubsan_null_ifn(), maybe_update_mem_ref_hash_table(), ipa_param_body_adjustments::modify_assignment(), ipa_param_body_adjustments::modify_expression(), move_sese_region_to_fn(), move_stmt_eh_region_tree_nr(), native_encode_constructor(), native_encode_initializer(), native_encode_string(), native_interpret_aggregate(), omp_extract_for_data(), omp_maybe_apply_loop_xforms(), optimize_count_trailing_zeroes(), output_constant(), output_constructor_array_range(), place_field(), predict_loops(), prepare_call_arguments(), prepare_iteration_over_array_elts(), propagate_aggregate_lattice(), propagate_aggs_across_jump_function(), push_target_argument_according_to_value(), record_targets_from_bases(), remap_eh_region_tree_nr(), replace_loop_annotate(), replace_loop_annotate_in_block(), ipa_polymorphic_call_context::restrict_to_inner_class(), rt_bb_visited::rt_bb_visited(), rtl_for_decl_init(), set_uid_loop_bbs(), simd_clone_clauses_extract(), simplify_builtin_call(), simplify_count_trailing_zeroes(), simplify_rotate(), spaceship_replacement(), stmt_cost(), store_constructor(), strips_small_constant(), totally_scalarizable_type_p(), tree_add_const_value_attribute(), try_vectorize_loop_1(), vect_analyze_data_ref_accesses(), vect_analyze_group_access_1(), vect_analyze_loop_form(), vect_check_gather_scatter(), vect_loop_dist_alias_call(), vect_loop_vectorized_call(), vect_recog_ctz_ffs_pattern(), vect_recog_popcount_clz_ctz_ffs_pattern(), vect_recog_pow_pattern(), vect_simd_lane_linear(), vect_synth_mult_by_constant(), vectorizable_simd_clone_call(), vn_reference_fold_indirect(), vn_reference_lookup_3(), and vn_reference_maybe_forwprop_address().
unsigned HOST_WIDE_INT tree_to_uhwi | ( | const_tree | t | ) |
T is an INTEGER_CST whose numerical value (extended according to TYPE_UNSIGNED) fits in an unsigned HOST_WIDE_INT. Return that HOST_WIDE_INT.
References gcc_assert, tree_fits_uhwi_p(), and TREE_INT_CST_LOW.
Referenced by add_abstract_origin_attribute(), add_data_member_location_attribute(), add_decls_addresses_to_decl_constructor(), strlen_pass::adjust_last_stmt(), alloca_call_type(), analyze_all_variable_accesses(), analyze_and_compute_bitop_with_inv_effect(), analyze_and_compute_bitwise_induction_effect(), asan_add_global(), asan_expand_mark_ifn(), asan_expand_poison_ifn(), asan_mark_p(), assemble_noswitch_variable(), assemble_variable(), assemble_variable_contents(), bit_value_assume_aligned(), bitpos_of_field(), btf_datasec_add_var(), build_tm_load(), build_tm_store(), build_user_friendly_ref_for_offset(), c_strlen(), cache_integer_cst(), categorize_ctor_elements_1(), check_all_va_list_escapes(), tree_switch_conversion::switch_conversion::check_range(), check_string_literal(), clear_padding_type(), compute_alias_check_pairs(), compute_object_offset(), constant_byte_string(), convert_mult_to_highpart(), strlen_pass::count_nonzero_bytes(), count_type_elements(), create_expression_by_pieces(), create_ifn_alias_checks(), cgraph_node::create_indirect_edge(), create_task_copyfn(), tree_switch_conversion::switch_conversion::create_temp_arrays(), create_variable_info_for_1(), default_use_anchors_for_symbol_p(), default_vector_alignment(), determine_block_size(), determine_index(), determine_known_aggregate_parts(), crc_optimization::dump_crc_information(), dump_generic_node(), dw_sra_loc_expr(), early_object_sizes_execute_one(), eliminate_dom_walker::eliminate_stmt(), tree_switch_conversion::bit_test_cluster::emit(), emit_case_dispatch_table(), evaluate_stmt(), excess_unit_span(), execute_omp_oacc_neuter_broadcast(), execute_update_addresses_taken(), tree_switch_conversion::switch_conversion::expand(), expand_builtin_eh_return_data_regno(), expand_builtin_frame_address(), expand_builtin_memset_args(), expand_builtin_strncpy(), expand_constructor(), expand_DEFERRED_INIT(), expand_expr_real_2(), expand_ifn_atomic_op_fetch_cmp_0(), expand_omp_atomic(), expand_omp_for_generic(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_scantemp_alloc(), expand_omp_sections(), expand_omp_simd(), expand_single_bit_test(), expand_vector_conversion(), expand_vector_divmod(), expand_vector_parallel(), expand_vector_piecewise(), expand_vector_ubsan_overflow(), expr_expected_value_1(), extract_bit_test_mask(), field_at_offset(), final_value_replacement_loop(), varpool_node::finalize_decl(), find_atomic_core_type(), finish_bitfield_representative(), fold_builtin_alloca_with_align(), fold_builtin_memcmp(), fold_const_aggregate_ref_1(), fold_indirect_ref_1(), fold_ternary_loc(), fold_unary_loc(), pass_walloca::gate(), gen_ctf_base_type(), get_binfo_at_offset(), get_bit_range(), get_constraint_for_1(), strlen_pass::get_len_or_size(), get_mem_align_offset(), get_narrower(), get_stridx_plus_constant(), get_ubsan_type_info_for_type(), get_vec_alignment_for_record_type(), getbyterep(), gimple_fold_builtin_memchr(), gimple_fold_builtin_memory_op(), gimple_fold_builtin_memset(), gimple_fold_builtin_string_compare(), gimple_fold_indirect_ref(), gimple_fold_partial_load_store_mem_ref(), gimple_get_alias_set(), gimple_get_virt_method_for_vtable(), gimple_lower_bitint(), gimplify_bind_expr(), gimplify_omp_loop_xform(), go_output_typedef(), handle_builtin_alloca(), strlen_pass::handle_builtin_memcmp(), strlen_pass::handle_builtin_memcpy(), strlen_pass::handle_pointer_plus(), handle_printf_call(), strlen_pass::handle_store(), hoist_adjacent_loads(), init_eh(), init_offset_limit(), initialize_data_dependence_relation(), initializer_zerop(), inline_expand_builtin_bytecmp(), instrument_builtin_call(), instrument_expr(), interpret_rhs_expr(), ipa_analyze_virtual_call_uses(), ipa_dump_jump_function(), is_aligning_offset(), iv_period(), loc_list_from_tree_1(), locate_and_pad_parm(), lower_lastprivate_clauses(), lower_omp_target(), lower_private_allocate(), max_int_size_in_bytes(), maybe_invalidate(), maybe_trim_memstar_call(), mode_for_size_tree(), native_encode_initializer(), native_encode_int(), native_interpret_aggregate(), native_interpret_int(), native_interpret_vector_part(), non_rewritable_lvalue_p(), nonfreeing_call_p(), nonzero_bytes_for_type(), not_size_aligned(), number_of_iterations_cltz(), number_of_iterations_cltz_complement(), number_of_iterations_ne(), number_of_iterations_popcount(), oacc_do_neutering(), oacc_xform_tile(), object_sizes_execute(), omp_accumulate_sibling_list(), omp_apply_tile(), omp_build_struct_sibling_lists(), omp_construct_simd_compare(), omp_group_base(), omp_group_last(), operand_compare::operand_equal_p(), optimize_atomic_bit_test_and(), optimize_count_trailing_zeroes(), crc_optimization::optimize_crc_loop(), optimize_range_tests_to_bit_test(), output_constructor_bitfield(), output_constructor_regular_field(), output_object_block(), place_block_symbol(), place_field(), possible_placement_new(), possible_polymorphic_call_target_p(), possible_polymorphic_call_targets(), predict_loops(), print_no_sanitize_attr_value(), push_fields_onto_fieldstack(), ref_at_iteration(), ipa_polymorphic_call_context::restrict_to_inner_class(), ipa_icf_gimple::func_checker::safe_for_total_scalarization_p(), crc_optimization::satisfies_crc_loop_iteration_count(), self_reuse_distance(), simd_clone_adjust(), simd_clone_clauses_extract(), simd_clone_init_simd_arrays(), simple_type_size_in_bits(), simplify_builtin_call(), simplify_rotate(), size_t_cst_p(), sort_by_size_then_ssa_version_or_uid(), sort_size_descending(), sra_modify_expr(), stack_protect_classify_type(), store_constructor(), target_char_cst_p(), task_reduction_read(), tm_log_add(), tm_log_emit_stmt(), totally_scalarize_subtree(), tree_add_const_value_attribute(), tree_ctz(), tree_profiling(), try_unroll_loop_completely(), ubsan_expand_null_ifn(), ubsan_expand_vptr_ifn(), ubsan_type_descriptor(), undistribute_bitref_for_vector(), va_list_counter_bump(), crc_optimization::validate_crc_and_data(), vect_add_slp_permutation(), vect_analyze_data_ref_accesses(), vect_create_epilog_for_reduction(), vect_create_partial_epilog(), vect_expand_fold_left(), vect_find_stmt_data_reference(), vect_gather_scatter_fn_p(), vect_get_scalar_dr_size(), vect_model_reduction_cost(), vect_peel_nonlinear_iv_init(), vect_recog_bit_insert_pattern(), vect_recog_bitfield_ref_pattern(), vect_recog_rotate_pattern(), vect_vfa_access_size(), vector_element_bits(), vectorizable_live_operation(), vectorizable_live_operation_1(), vectorizable_load(), vectorizable_nonlinear_induction(), vectorizable_simd_clone_call(), vectorizable_store(), verify_gimple_assign_ternary(), visit_nary_op(), vn_reference_lookup_3(), vtable_pointer_value_to_vtable(), warn_for_access(), and widen_memory_access().
If TYPE is a vector type, return a signed integer vector type with the same width and number of subparts. Otherwise return boolean_type_node.
References boolean_type_node, build_truth_vector_type_for(), TREE_CODE, type(), and VECTOR_BOOLEAN_TYPE_P.
Referenced by and_comparisons_1(), build_mask_conversion(), expand_vector_divmod(), get_mask_type_for_scalar_type(), get_mask_type_for_scalar_type(), get_same_sized_vectype(), or_comparisons_1(), scan_store_can_perm_p(), vect_create_epilog_for_reduction(), vect_get_loop_mask(), vect_get_vec_defs_for_operand(), vect_is_simple_cond(), vect_recog_bitfield_ref_pattern(), vect_recog_bool_pattern(), vect_recog_ctz_ffs_pattern(), vect_recog_divmod_pattern(), vect_recog_gather_scatter_pattern(), vect_reduction_update_partial_vector_usage(), vect_transform_reduction(), vect_verify_full_masking(), vect_verify_full_masking_avx512(), vectorizable_condition(), vectorizable_load(), vectorizable_operation(), vectorizable_scan_store(), vectorizable_store(), and vectorize_fold_left_reduction().
|
static |
Try to determine whether a TRY_CATCH expression can fall through. This is a subroutine of block_may_fallthru.
References block_may_fallthru(), CATCH_BODY, EH_FILTER_FAILURE, i, TREE_CODE, TREE_OPERAND, tsi_end_p(), tsi_next(), tsi_start(), and tsi_stmt().
Referenced by block_may_fallthru().
tree type_argument_type | ( | const_tree | fntype, |
unsigned | argno ) |
Return the type of the function TYPE's argument ARGNO if known. For vararg function's where ARGNO refers to one of the variadic arguments return null. Otherwise, return a void_type_node for out-of-bounds ARGNO.
References FOREACH_FUNCTION_ARGS, i, NULL_TREE, void_type_node, and VOID_TYPE_P.
|
static |
Return true if any part of the structure of TYPE involves a PLACEHOLDER_EXPR directly. This includes size, bounds, qualifiers (for QUAL_UNION_TYPE) and field positions.
References CONTAINS_PLACEHOLDER_P, DECL_CHAIN, DECL_FIELD_OFFSET, DECL_QUALIFIER, gcc_unreachable, POINTER_TYPE_P, TREE_CODE, TREE_TYPE, type_contains_placeholder_p(), TYPE_DOMAIN, TYPE_FIELDS, TYPE_MAX_VALUE, TYPE_MIN_VALUE, TYPE_SIZE, and TYPE_SIZE_UNIT.
Referenced by type_contains_placeholder_p().
Wrapper around above function used to cache its result.
References type_contains_placeholder_1(), and TYPE_CONTAINS_PLACEHOLDER_INTERNAL.
Referenced by create_variable_info_for_1(), fold(), fold_ternary_loc(), totally_scalarizable_type_p(), and type_contains_placeholder_1().
Given TYPE, and HASHCODE its hash code, return the canonical object for an identical type if one already exists. Otherwise, return TYPE, and record it as the canonical object. To use this function, first create a type of the sort you want. Then compute its hash code from the fields of the type that make it different from other similar types. Then call this function and use the value.
References free_node(), gcc_assert, ggc_alloc(), ggc_free(), type_hash::hash, int_cst_hash_table, layout_type(), next_type_uid, TREE_CODE, TREE_TYPE, type(), type_hash::type, TYPE_CACHED_VALUES, TYPE_CACHED_VALUES_P, type_hash_table, TYPE_MAIN_VARIANT, TYPE_MAX_VALUE, TYPE_MIN_VALUE, TYPE_UID, and TYPE_UNSIGNED.
Referenced by build_array_type_1(), build_bitint_type(), build_complex_type(), build_function_type(), build_method_type_directly(), build_nonstandard_integer_type(), build_offset_type(), build_range_type_1(), build_type_attribute_qual_variant(), and make_vector_type().
hashval_t type_hash_canon_hash | ( | tree | type | ) |
Hashing of types so that we don't make duplicates. The entry point is `type_hash_canon'.
Generate the default hash code for TYPE. This is designed for speed, rather than maximum entropy.
References inchash::hash::add_flag(), inchash::hash::add_int(), inchash::hash::add_object(), inchash::hash::add_poly_int(), AGGREGATE_TYPE_P, inchash::hash::end(), error_mark_node, get_attribute_name(), i, IDENTIFIER_HASH_VALUE, TREE_CHAIN, TREE_CODE, TREE_INT_CST_ELT, TREE_INT_CST_NUNITS, TREE_TYPE, TREE_VALUE, TYPE_ARG_TYPES, TYPE_ATTRIBUTES, TYPE_DOMAIN, TYPE_HASH, TYPE_MAX_VALUE, TYPE_METHOD_BASETYPE, TYPE_MIN_VALUE, TYPE_OFFSET_BASETYPE, TYPE_PRECISION, TYPE_STRUCTURAL_EQUALITY_P, TYPE_TYPELESS_STORAGE, TYPE_UNSIGNED, and TYPE_VECTOR_SUBPARTS().
Referenced by build_array_type_1(), build_complex_type(), build_function_type(), build_method_type_directly(), build_offset_type(), build_range_type_1(), build_type_attribute_qual_variant(), and make_vector_type().
bool type_list_equal | ( | const_tree | l1, |
const_tree | l2 ) |
Given two lists of types (chains of TREE_LIST nodes with types in the TREE_VALUE slots) return 1 if the lists contain the same types in the same order. Also, the TREE_PURPOSEs must match.
References simple_cst_equal(), TREE_CHAIN, TREE_PURPOSE, TREE_TYPE, and TREE_VALUE.
Referenced by ehspec_hasher::equal(), and type_cache_hasher::equal().
int type_num_arguments | ( | const_tree | fntype | ) |
Returns the number of arguments to the FUNCTION_TYPE or METHOD_TYPE given by TYPE. If the argument list accepts variable arguments, then this function counts only the ordinary arguments.
References i, TREE_CHAIN, TREE_VALUE, TYPE_ARG_TYPES, and VOID_TYPE_P.
bool type_with_interoperable_signedness | ( | const_tree | type | ) |
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 if TYPE_UNSIGNED of TYPE should be ignored for canonical type calculation because we need to allow inter-operability between signed and unsigned variants.
References signed_char_type_node, size_type_node, TREE_CODE, tree_code_for_canonical_type_merging(), and TYPE_PRECISION.
Referenced by gimple_canonical_types_compatible_p().
If the argument is INTEGER_CST, return it. If the argument is vector with all elements the same INTEGER_CST, return that INTEGER_CST. Otherwise return NULL_TREE. Look through location wrappers.
References NULL_TREE, STRIP_ANY_LOCATION_WRAPPER, TREE_CODE, TREE_TYPE, uniform_vector_p(), and VECTOR_TYPE_P.
Referenced by bitmask_inv_cst_vector_p(), bitwise_inverted_equal_p(), decode_field_reference(), fold_truth_andor_for_ifcombine(), gimple_bitwise_inverted_equal_p(), and vect_recog_divmod_pattern().
tree uniform_vector_p | ( | const_tree | vec | ) |
Check if vector VEC consists of all the equal elements and that the number of elements corresponds to the type of VEC. The function returns first element of the vector or NULL_TREE if the vector is not uniform.
References CONSTRUCTOR_ELTS, error_mark_node, FOR_EACH_CONSTRUCTOR_VALUE, gcc_assert, i, NULL_TREE, operand_equal_p(), TREE_CODE, TREE_OPERAND, TREE_TYPE, TYPE_VECTOR_SUBPARTS(), uniform_vector_p(), VECTOR_CST_DUPLICATE_P, VECTOR_CST_ENCODED_ELT, VECTOR_CST_NPATTERNS, and VECTOR_TYPE_P.
Referenced by expand_vector_ubsan_overflow(), fold_real_zero_addition_p(), reduce_vector_comparison_to_scalar_comparison(), ssa_uniform_vector_p(), store_constructor(), uniform_integer_cst_p(), uniform_vector_p(), and vect_slp_check_for_roots().
If TYPE is an integral or pointer type, return an integer type with the same precision which is unsigned, or itself if TYPE is already an unsigned integer type. If TYPE is a floating-point type, return an unsigned integer type with the same bitsize as TYPE.
References signed_or_unsigned_type_for().
Referenced by bitmask_inv_cst_vector_p(), tree_switch_conversion::switch_conversion::build_arrays(), build_cltz_expr(), build_popcount_expr(), build_range_check(), cand_value_at(), chrec_apply(), chrec_convert_1(), chrec_evaluate(), chrec_fold_multiply(), convert_mult_to_highpart(), convert_to_integer_1(), create_intersect_range_checks_index(), do_narrow(), tree_switch_conversion::jump_table_cluster::emit(), expand_omp_simd(), fold_bit_and_mask(), fold_cond_expr_with_comparison(), fold_negate_expr_1(), fold_plusminus_mult_expr(), cfn_ffs::fold_range(), fold_ternary_loc(), fold_unary_loc(), gen_pow2p(), generic_type_for(), get_computation_aff_1(), get_debug_computation_at(), get_misalign_in_elems(), gimplify_omp_for(), ifcombine_ifandif(), interpret_rhs_expr(), iv_period(), loop_exits_before_overflow(), lower_lastprivate_conditional_clauses(), make_tree(), maybe_optimize_arith_overflow(), maybe_optimize_mod_cmp(), number_of_iterations_cond(), number_of_iterations_lt(), number_of_iterations_ne(), number_of_iterations_until_wrap(), operator_cast::op1_range(), operator_lshift::op1_range(), optimize_range_tests_diff(), optimize_range_tests_to_bit_test(), optimize_range_tests_var_bound(), range_check_type(), record_nonwrapping_iv(), replace_trapping_overflow(), rewrite_to_defined_overflow(), sign_mask_for(), simplify_using_ranges::simplify_internal_call_using_ranges(), strip_offset_1(), vect_convert_input(), vect_create_cond_for_lower_bounds(), vect_create_nonlinear_iv_init(), vect_peel_nonlinear_iv_init(), vect_recog_abd_pattern(), vect_recog_ctz_ffs_pattern(), vect_recog_rotate_pattern(), vect_synth_mult_by_constant(), vect_update_nonlinear_iv(), and vectorize_slp_instance_root_stmt().
Returns the largest value obtainable by casting something in INNER type to OUTER type.
References gcc_unreachable, wi::mask(), TYPE_PRECISION, TYPE_UNSIGNED, and wide_int_to_tree().
Referenced by derive_constant_upper_bound_ops(), derive_simple_iv_with_niters(), determine_exit_conditions(), infer_loop_bounds_from_pointer_arith(), infer_loop_bounds_from_signedness(), loop_exits_before_overflow(), and scev_var_range_cant_overflow().
Unless specific to OpenACC, we tend to internally maintain OpenMP-centric clause names, but for use in diagnostics etc. would like to use the "user" clause names.
References OMP_CLAUSE_CODE, omp_clause_code_name, OMP_CLAUSE_MAP, and OMP_CLAUSE_MAP_KIND.
Referenced by omp_oacc_kernels_decompose_1().
void using_eh_for_cleanups | ( | void | ) |
This routine is called from front ends to indicate eh should be used for cleanups.
References using_eh_for_cleanups_flag.
bool using_eh_for_cleanups_p | ( | void | ) |
Query whether EH is used for cleanups.
References using_eh_for_cleanups_flag.
Referenced by lower_try_finally().
bool valid_constant_size_p | ( | const_tree | size, |
cst_size_error * | perr ) |
Return true if SIZE represents a constant size that is in bounds of what the middle-end and the backend accepts (covering not more than half of the address-space). When PERR is non-null, set *PERR on failure to the description of why SIZE is not valid.
References cst_size_negative, cst_size_not_constant, cst_size_overflow, cst_size_too_big, error(), i, NUM_POLY_INT_COEFFS, POLY_INT_CST_COEFF, POLY_INT_CST_P, sizetype, wi::to_widest(), TREE_CODE, tree_fits_uhwi_p(), tree_int_cst_sgn(), TREE_OVERFLOW, TREE_OVERFLOW_P, TYPE_MAX_VALUE, and valid_constant_size_p().
Referenced by asan_protect_global(), assemble_variable(), expand_one_var(), and valid_constant_size_p().
Return true if NEW_ASM and DELETE_ASM name a valid pair of new and delete operators. Return false if they may or may not name such a pair and, when nonnull, set *PCERTAIN to true if they certainly do not.
References IDENTIFIER_LENGTH, and IDENTIFIER_POINTER.
Return first list element whose TREE_VALUE is ELEM. Return 0 if ELEM is not in LIST.
References NULL_TREE, TREE_CHAIN, and TREE_VALUE.
Referenced by assemble_external().
Returns true if T is, contains, or refers to a type with variable size. For METHOD_TYPEs and FUNCTION_TYPEs we exclude the arguments, but not the return type. If FN is nonzero, only return true if a modifier of the type or position of FN is a variable or parameter inside FN. This concept is more general than that of C99 'variably modified types': in C99, a struct type is never variably modified because a VLA may not appear as a structure member. However, in GNU C code like: struct S { int i[f()]; }; is valid, and other languages may define similar constructs.
Test if T is either variable (if FN is zero) or an expression containing a variable in FN. If TYPE isn't gimplified, return true also if gimplify_one_sizepos would gimplify the expression into a local variable.
References DECL_CHAIN, DECL_FIELD_OFFSET, DECL_QUALIFIER, DECL_SIZE, DECL_SIZE_UNIT, error_mark_node, RETURN_TRUE_IF_VAR, TREE_CODE, lang_hooks::tree_inlining, TREE_TYPE, TREE_VISITED, TYPE_FIELDS, TYPE_MAX_VALUE, TYPE_MIN_VALUE, TYPE_SIZE, TYPE_SIZE_UNIT, lang_hooks_for_tree_inlining::var_mod_type_p, and variably_modified_type_p().
Referenced by check_for_nested_with_variably_modified(), compute_fn_summary(), create_task_copyfn(), finalize_nesting_tree_1(), fixup_child_record_type(), get_nonlocal_debug_decl(), ipa_icf::sem_function::hash_stmt(), lto_variably_modified_type_p(), need_assembler_name_p(), pack_ts_type_common_value_fields(), remap_type(), remap_vla_decls(), replace_locals_stmt(), variably_modified_type_p(), and verify_type().
bool vec_member | ( | const_tree | elem, |
vec< tree, va_gc > * | v ) |
Return true if ELEM is in V.
References FOR_EACH_VEC_SAFE_ELT.
tree vector_cst_elt | ( | const_tree | t, |
unsigned int | i ) |
Return the value of element I of VECTOR_CST T.
References i, TREE_TYPE, VECTOR_CST_ENCODED_ELT, vector_cst_encoded_nelts(), vector_cst_int_elt(), VECTOR_CST_NPATTERNS, VECTOR_CST_STEPPED_P, and wide_int_to_tree().
Referenced by bitmask_inv_cst_vector_p(), fold_vec_perm_cst(), initializer_each_zero_or_onep(), operation_could_trap_helper_p(), simplify_bitfield_ref(), single_nonzero_element(), and valid_mask_for_fold_vec_perm_cst_p().
|
static |
Return the value of element I of VECTOR_CST T as a wide_int.
References count, i, wi::to_poly_wide(), VECTOR_CST_ENCODED_ELT, vector_cst_encoded_nelts(), VECTOR_CST_NPATTERNS, and VECTOR_CST_STEPPED_P.
Referenced by vector_cst_elt().
unsigned int vector_element_bits | ( | const_tree | type | ) |
Return the size in bits of each element of vector type TYPE.
References gcc_checking_assert, tree_to_uhwi(), TREE_TYPE, TYPE_PRECISION, TYPE_SIZE, VECTOR_BOOLEAN_TYPE_P, and VECTOR_TYPE_P.
Referenced by do_negate(), do_plus_minus(), expand_vector_addition(), expand_vector_conversion(), expand_vector_piecewise(), store_constructor(), vect_gather_scatter_fn_p(), vect_is_simple_cond(), vector_element_bits_tree(), and vectorizable_operation().
tree vector_element_bits_tree | ( | const_tree | type | ) |
Calculate the size in bits of each element of vector type TYPE and return the result as a tree of type bitsizetype.
References bitsize_int, gcc_checking_assert, TREE_TYPE, TYPE_SIZE, VECTOR_BOOLEAN_TYPE_P, vector_element_bits(), and VECTOR_TYPE_P.
Referenced by expand_vector_comparison(), expand_vector_condition(), vector_element(), and vectorizable_live_operation().
machine_mode vector_type_mode | ( | const_tree | t | ) |
Vector types need to re-check the target flags each time we report the machine mode. We need to do this because attribute target can change the result of vector_mode_supported_p and have_regs_of_mode on a per-function basis. Thus the TYPE_MODE of a VECTOR_TYPE can change on a per-function basis.
??? Possibly a better solution is to run through all the types referenced by a function and re-compute the TYPE_MODE once, rather than make the TYPE_MODE macro call a function.
References gcc_assert, GET_MODE_BITSIZE(), have_regs_of_mode, int_mode_for_size(), is_int_mode(), targetm, TREE_CODE, TREE_TYPE, TYPE_VECTOR_SUBPARTS(), and VECTOR_MODE_P.
void verify_constructor_flags | ( | tree | c | ) |
Make sure that TREE_CONSTANT and TREE_SIDE_EFFECTS are correct for CONSTRUCTOR C.
References CONSTRUCTOR_ELTS, FOR_EACH_CONSTRUCTOR_VALUE, i, internal_error(), side_effects_p(), TREE_CONSTANT, and TREE_SIDE_EFFECTS.
|
static |
For OPAQUE_TYPE T, it should have only size and alignment information and its mode should be of class MODE_OPAQUE. This function verifies these properties of T match TV which is the main variant of T and TC which is the canonical of T.
References debug_tree(), error(), gcc_assert, OPAQUE_MODE_P, OPAQUE_TYPE_P, tree_to_poly_uint64(), TYPE_ALIGN, TYPE_CANONICAL, TYPE_MAIN_VARIANT, TYPE_MODE, TYPE_SIZE, and TYPE_USER_ALIGN.
Referenced by verify_type().
void verify_type | ( | const_tree | t | ) |
Verify type T.
References COMPLETE_TYPE_P, debug_tree(), error(), error_found, FIXED_POINT_TYPE_P, FUNC_OR_METHOD_TYPE_P, gimple_canonical_types_compatible_p(), i, INTEGRAL_TYPE_P, internal_error(), is_lang_specific(), NULL, OPAQUE_TYPE_P, RECORD_OR_UNION_TYPE_P, SCALAR_FLOAT_TYPE_P, TREE_CHAIN, TREE_CODE, TREE_PURPOSE, TREE_TYPE, TREE_VALUE, TREE_VEC_ELT, TREE_VEC_LENGTH, TYPE_ARG_TYPES, TYPE_ARRAY_MAX_SIZE, TYPE_BINFO, TYPE_CACHED_VALUES, TYPE_CACHED_VALUES_P, TYPE_CANONICAL, TYPE_DOMAIN, TYPE_FIELDS, TYPE_LANG_SLOT_1, TYPE_MAIN_VARIANT, TYPE_MAX_VALUE_RAW, TYPE_METHOD_BASETYPE, TYPE_MODE, TYPE_NEXT_PTR_TO, TYPE_NEXT_REF_TO, TYPE_OFFSET_BASETYPE, TYPE_P, TYPE_VALUES, TYPE_VALUES_RAW, TYPE_VFIELD, useless_type_conversion_p(), VAR_P, variably_modified_type_p(), verify_opaque_type(), and verify_type_variant().
bool verify_type_context | ( | location_t | loc, |
type_context_kind | context, | ||
const_tree | type, | ||
bool | silent_p ) |
A wrapper around TARGET_VERIFY_TYPE_CONTEXT that makes the silent_p parameter default to false and that weeds out error_mark_node.
References error_mark_node, gcc_assert, targetm, and TYPE_P.
|
static |
Verify that basic properties of T match TV and thus T can be a variant of TV. TV should be the more specified variant (i.e. the main variant).
References AGGREGATE_TYPE_P, COMPLETE_TYPE_P, debug_tree(), DECL_FIELD_BIT_OFFSET, DECL_FIELD_OFFSET, error(), f1, f2, FIXED_POINT_TYPE_P, FUNC_OR_METHOD_TYPE_P, gcc_assert, gimple_canonical_types_compatible_p(), odr_type_p(), operand_equal_p(), POINTER_TYPE_P, RECORD_OR_UNION_TYPE_P, SCALAR_FLOAT_TYPE_P, TREE_CHAIN, TREE_CODE, TREE_TYPE, TYPE_ALIAS_SET_KNOWN_P, TYPE_ARG_TYPES, TYPE_ARRAY_MAX_SIZE, TYPE_ARTIFICIAL, TYPE_BINFO, TYPE_CONTEXT, TYPE_CXX_ODR_P, TYPE_DOMAIN, TYPE_FIELDS, TYPE_FILE_SCOPE_P, TYPE_FINAL_P, TYPE_MAIN_VARIANT, TYPE_MAX_VALUE, TYPE_METHOD_BASETYPE, TYPE_MIN_VALUE, TYPE_MODE, TYPE_NEEDS_CONSTRUCTING, TYPE_NONALIASED_COMPONENT, TYPE_OFFSET_BASETYPE, TYPE_PACKED, TYPE_PRECISION_RAW, TYPE_REF_CAN_ALIAS_ALL, TYPE_REF_IS_RVALUE, TYPE_REVERSE_STORAGE_ORDER, TYPE_SATURATING, TYPE_SIZE, TYPE_SIZE_UNIT, TYPE_STRING_FLAG, TYPE_TRANSPARENT_AGGR, TYPE_UNSIGNED, TYPE_VALUES, TYPE_VFIELD, type_with_alias_set_p(), and verify_variant_match.
Referenced by verify_type().
bool virtual_method_call_p | ( | const_tree | target, |
bool | for_dump_p ) |
TARGET is a call target of GIMPLE call statement (obtained by gimple_call_fn). Return true if it is OBJ_TYPE_REF representing an virtual call of C++ method. (As opposed to OBJ_TYPE_REF representing objc calls through a cast where middle-end devirtualization machinery can't apply.) FOR_DUMP_P is true when being called from the dump routines.
References gcc_checking_assert, obj_type_ref_class(), TREE_CODE, TREE_TYPE, and TYPE_BINFO.
Referenced by cgraph_node::create_indirect_edge(), dump_generic_node(), eliminate_dom_walker::eliminate_stmt(), fold_gimple_assign(), gimple_fold_call(), operand_compare::hash_operand(), ipa_analyze_call_uses(), operand_compare::operand_equal_p(), and tree_estimate_probability_bb().
tree walk_tree_1 | ( | tree * | tp, |
walk_tree_fn | func, | ||
void * | data, | ||
hash_set< tree > * | pset, | ||
walk_tree_lh | lh ) |
Apply FUNC to all the sub-trees of TP in a pre-order traversal. FUNC is called with the DATA and the address of each sub-tree. If FUNC returns a non-NULL value, the traversal is stopped, and the value returned by FUNC is returned. If PSET is non-NULL it is used to record the nodes visited, and to avoid visiting a node more than once.
References hash_set< KeyId, Lazy, Traits >::add(), BIND_EXPR_BODY, BIND_EXPR_VARS, CONSTRUCTOR_ELTS, DECL_CHAIN, DECL_EXPR_DECL, DECL_FIELD_OFFSET, DECL_INITIAL, DECL_QUALIFIER, DECL_SIZE, DECL_SIZE_UNIT, i, IS_EXPR_CODE_CLASS, NULL_TREE, OMP_CLAUSE_CHAIN, OMP_CLAUSE_CODE, omp_clause_num_ops, OMP_CLAUSE_OPERAND, POINTER_TYPE_P, RECORD_OR_UNION_TYPE_P, TREE_CHAIN, TREE_CODE, TREE_CODE_CLASS, TREE_IMAGPART, TREE_OPERAND, TREE_OPERAND_LENGTH, TREE_REALPART, TREE_TYPE, TREE_VALUE, TREE_VEC_ELT, TREE_VEC_LENGTH, tsi_end_p(), tsi_next(), tsi_start(), tsi_stmt_ptr(), TYPE_FIELDS, TYPE_MAX_VALUE, TYPE_MIN_VALUE, TYPE_P, TYPE_SIZE, TYPE_SIZE_UNIT, constructor_elt::value, vec_safe_iterate(), VECTOR_CST_ENCODED_ELT, vector_cst_encoded_nelts(), WALK_SUBTREE, WALK_SUBTREE_TAIL, and walk_type_fields().
Referenced by walk_tree_without_duplicates_1().
tree walk_tree_without_duplicates_1 | ( | tree * | tp, |
walk_tree_fn | func, | ||
void * | data, | ||
walk_tree_lh | lh ) |
Like walk_tree, but does not walk duplicate nodes more than once.
References walk_tree_1().
|
static |
This is a subroutine of walk_tree that walks field of TYPE that are to be walked whenever a type is seen in the tree. Rest of operands and return value are as for walk_tree.
References NULL_TREE, POINTER_TYPE_P, TREE_CHAIN, TREE_CODE, TREE_TYPE, TREE_VALUE, TYPE_ARG_TYPES, TYPE_DOMAIN, TYPE_METHOD_BASETYPE, TYPE_OFFSET_BASETYPE, WALK_SUBTREE, and walk_tree_without_duplicates.
Referenced by walk_tree_1().
Warn about a use of an identifier which was marked deprecated. Returns whether a warning was given.
References DECL_ATTRIBUTES, DECL_NAME, DECL_P, DECL_SOURCE_LOCATION, inform(), lookup_attribute(), msg, NULL_TREE, TREE_CODE, TREE_STRING_POINTER, TREE_TYPE, TREE_VALUE, TYPE_ATTRIBUTES, TYPE_MAIN_VARIANT, TYPE_NAME, TYPE_P, TYPE_STUB_DECL, and warning().
tree wide_int_to_tree | ( | tree | type, |
const poly_wide_int_ref & | value ) |
Create a constant tree with value VALUE in type TYPE.
References build_poly_int_cst(), poly_int< N, C >::coeffs, poly_int< N, C >::is_constant(), and wide_int_to_tree_1().
Referenced by add_decls_addresses_to_decl_constructor(), add_elt_to_tree(), add_iv_candidate_for_use(), addr_to_parts(), aff_combination_add_elt(), aff_combination_add_product(), aff_combination_mult(), aff_combination_scale(), aff_combination_to_tree(), analyze_and_compute_bitwise_induction_effect(), tree_vector_builder::apply_step(), bit_value_assume_aligned(), bit_value_binop(), bit_value_unop(), bitmask_inv_cst_vector_p(), build_int_cst(), build_int_cst_type(), build_int_cstu(), build_low_bits_mask(), tree_switch_conversion::switch_conversion::build_one_array(), build_replicated_int_cst(), build_vec_series(), check_access(), check_for_binary_op_overflow(), clear_padding_type(), component_ref_size(), compute_avail(), compute_distributive_range(), compute_object_offset(), compute_objsize(), compute_objsize(), const_unop(), constant_byte_string(), constant_pointer_difference(), copy_tree_body_r(), create_add_on_incoming_edge(), create_intersect_range_checks_index(), create_mul_imm_cand(), decrement_count(), derive_constant_upper_bound_ops(), div_if_zero_remainder(), double_int_to_tree(), dr_analyze_indices(), dr_analyze_innermost(), drop_tree_overflow(), tree_switch_conversion::bit_test_cluster::emit(), evaluate_stmt(), execute_update_addresses_taken(), expand_call_mem_ref(), expand_case(), expand_DEFERRED_INIT(), expand_simple_operations(), expand_vector_condition(), extract_bit_test_mask(), extract_muldiv_1(), field_byte_offset(), find_case_label_range(), find_var_cmp_const(), fold_binary_loc(), fold_const_aggregate_ref_1(), fold_const_call_1(), fold_const_call_1(), fold_indirect_ref_1(), fold_ternary_loc(), fold_truth_andor_for_ifcombine(), force_fit_type(), forward_propagate_addr_expr_1(), get_address_cost(), get_debug_computation_at(), get_legacy_range(), get_maxbound(), get_range_strlen_dynamic(), get_range_strlen_tree(), get_size_range(), get_size_range(), get_up_bounds_for_array_ref(), gimple_call_alloc_size(), gimple_divmod_fixed_value_transform(), gimple_fold_builtin_strlen(), gimple_fold_indirect_ref(), gimple_stringops_transform(), handle_printf_call(), infer_loop_bounds_from_signedness(), insert_initializers(), ipcp_get_parm_bits(), layout_type(), irange::lbound(), prange::lbound(), simplify_using_ranges::legacy_fold_cond_overflow(), loop_exits_before_overflow(), lower_bound_in_type(), lower_omp_ordered_clauses(), lto_input_tree_1(), make_tree(), maskable_range_p(), match_arith_overflow(), max_stmt_executions_tree(), maybe_canonicalize_mem_ref_addr(), maybe_optimize_mod_cmp(), maybe_optimize_pow2p_mod_cmp(), maybe_rewrite_mem_ref_base(), maybe_trim_memstar_call(), minmax_replacement(), most_expensive_mult_to_index(), move_variant_to_index(), multiple_of_p(), n_of_executions_at_most(), native_encode_initializer(), native_interpret_aggregate(), native_interpret_int(), number_of_iterations_until_wrap(), omp_reduction_init_op(), optimize_range_tests_to_bit_test(), output_constant(), overflow_comparison_p_1(), preferred_mem_scale_factor(), record_nonwrapping_iv(), reduce_to_bit_field_precision(), remap_gimple_op_r(), replace_mult_candidate(), replace_ref(), restructure_reference(), rewrite_use_nonlinear_expr(), scan_omp_1_op(), set_min_and_max_values_for_integral_type(), set_strlen_range(), set_switch_stmt_execution_predicate(), sign_mask_for(), simple_iv_with_niters(), simplify_using_ranges::simplify_div_or_mod_using_ranges(), irange::singleton_p(), prange::singleton_p(), store_constructor(), test_for_singularity(), totally_scalarize_subtree(), tree_fold_binomial(), simplify_using_ranges::two_valued_val_range_p(), irange::ubound(), prange::ubound(), ubsan_expand_vptr_ifn(), upper_bound_in_type(), valid_mem_ref_cand_p(), valueized_wider_op(), vect_check_gather_scatter(), vect_convert_input(), vect_create_nonlinear_iv_step(), vect_emulate_mixed_dot_prod(), vect_get_loop_variant_data_ptr_increment(), vect_peel_nonlinear_iv_init(), vect_recog_bit_insert_pattern(), vect_recog_bitfield_ref_pattern(), vect_recog_divmod_pattern(), vector_cst_elt(), vectorizable_load(), vectorizable_simd_clone_call(), visit_nary_op(), vn_reference_fold_indirect(), vn_reference_insert(), vn_reference_lookup(), vn_reference_maybe_forwprop_address(), and rt_bb_visited::vwordidx().
|
static |
Create an INT_CST node of TYPE and value CST. The returned node is always shared. For small integers we use a per-type vector cache, for larger ones we use a single hash table. The value is extended from its precision according to the sign of the type to be a multiple of HOST_BITS_PER_WIDE_INT. This defines the upper bits and ensures that hashing and value equality based upon the underlying HOST_WIDE_INTs works without masking.
References build_new_int_cst(), cache_wide_int_in_type_cache(), generic_wide_int< storage >::elt(), wide_int_storage::from(), gcc_assert, gcc_checking_assert, gcc_unreachable, get_int_cst_ext_nunits(), ggc_free(), HOST_WIDE_INT_M1, IN_RANGE, int_cst_hash_table, int_cst_node, make_int_cst(), wi::max_value(), generic_wide_int< storage >::to_shwi(), generic_wide_int< storage >::to_uhwi(), wi::to_wide(), TREE_CODE, TREE_INT_CST_ELT, TREE_INT_CST_EXT_NUNITS, TREE_INT_CST_NUNITS, TREE_TYPE, type(), TYPE_PRECISION, TYPE_SIGN, TYPE_UNSIGNED, and UNSIGNED.
Referenced by build_poly_int_cst(), and wide_int_to_tree().
bool zerop | ( | const_tree | expr | ) |
Return true if EXPR is the constant zero, whether it is integral, float or fixed, and scalar, complex or vector.
References fixed_zerop(), integer_zerop(), and real_zerop().
Referenced by access_and_field_type_match_p(), asan_poison_variable(), build_asan_poison_call_expr(), ipa_get_jf_ancestor_result(), path_comparable_for_same_access(), some_nonzerop(), totally_scalarizable_type_p(), vect_analyze_slp(), and warn_uninit().
|
static |
Referenced by make_anon_name().
Referenced by build_bitint_type().
const builtin_structptr_type builtin_structptr_types[6] |
List of pointer types used to declare builtins before we have seen their real declaration. Keep the size up to date in tree.h !
Referenced by build_common_tree_nodes().
|
static |
Hash table for optimization flags and target option flags. Use the same hash table for both sets of options. Nodes for building the current optimization and target option nodes. The assumption is most of the time the options created will already be in the hash table, so we avoid allocating and freeing up a node repeatably.
Referenced by build_optimization_node(), and init_ttree().
|
static |
Referenced by build_optimization_node(), build_target_option_node(), init_ttree(), and prepare_target_option_nodes_for_pch().
|
static |
Referenced by build_target_option_node(), and init_ttree().
|
static |
Referenced by decl_debug_args_insert(), and decl_debug_args_lookup().
|
static |
General tree->tree mapping structure for use in hash tables.
Referenced by decl_debug_expr_insert(), decl_debug_expr_lookup(), init_ttree(), and print_debug_expr_statistics().
const floatn_type_info floatn_nx_types[NUM_FLOATN_NX_TYPES] |
Information about the _FloatN and _FloatNx types. This must be in the same order as the corresponding TI_* enum values.
Referenced by build_common_tree_nodes().
|
static |
Referenced by lhd_gcc_personality().
Referenced by preload_common_nodes().
|
static |
Referenced by cache_integer_cst(), init_ttree(), type_hash_canon(), and wide_int_to_tree_1().
|
static |
Hash table and temporary node for larger integer const values.
Referenced by init_ttree(), and wide_int_to_tree_1().
bool int_n_enabled_p[NUM_INT_N_ENTS] |
This is also in tree.h. genmodes.cc guarantees the're sorted from smallest bitsize to largest bitsize.
Referenced by build_common_tree_nodes(), do_compile(), find_bitfield_repr_type(), gimple_signed_or_unsigned_type(), initialize_sizetypes(), lhd_type_for_size(), mode_for_size(), and smallest_mode_for_size().
struct int_n_trees_t int_n_trees[NUM_INT_N_ENTS] |
Referenced by build_common_tree_nodes(), and preload_common_nodes().
|
static |
Unique id for next debug decl created. Use negative numbers, to catch erroneous uses.
Referenced by copy_node(), and make_node().
|
static |
Unique id for next decl created.
Referenced by allocate_decl_uid().
|
static |
Unique id for next type created.
Referenced by copy_node(), make_node(), and type_hash_canon().
|
static |
Referenced by build_nonstandard_boolean_type().
|
static |
Referenced by build_nonstandard_integer_type(), and clear_nonstandard_integer_type_cache().
const char* const omp_clause_code_name[] |
Referenced by adjust_nested_loop_clauses(), dequeue_and_dump(), dump_omp_clause(), execute_oacc_loop_designation(), gimplify_scan_omp_clauses(), oacc_privatization_begin_diagnose_var(), oacc_verify_routine_clauses(), print_node(), scan_omp_for(), transform_kernels_loop_clauses(), and user_omp_clause_code_name().
unsigned const char omp_clause_num_ops[] |
Number of operands for each OMP clause.
Referenced by build_omp_clause(), dequeue_and_dump(), DFS::DFS_write_tree_body(), hash_tree(), lto_input_ts_omp_clause_tree_pointers(), print_node(), tree_size(), walk_tree_1(), and write_ts_omp_clause_tree_pointers().
|
static |
Referenced by build_poly_int_cst(), and init_ttree().
int suppress_location_wrappers |
const char* const tree_code_class_strings[] |
Each tree code class has an associated string representation. These must correspond to the tree_code_class entries.
|
static |
Statistics-gathering stuff.
Referenced by dump_tree_statistics(), free_node(), and record_node_allocation_statistics().
|
static |
Referenced by get_tree_code_name().
bool tree_contains_struct[MAX_TREE_CODES][64] |
Referenced by initialize_tree_contains_struct().
uint64_t tree_node_counts[(int) all_kinds] |
Referenced by dump_tree_statistics(), free_node(), record_node_allocation_statistics(), and tree_nodes_cmp().
|
static |
Keep in sync with tree.h:enum tree_node_kind.
Referenced by dump_tree_statistics().
uint64_t tree_node_sizes[(int) all_kinds] |
Referenced by dump_tree_statistics(), free_node(), and record_node_allocation_statistics().
|
static |
Now here is the hash table. When recording a type, it is added to the slot whose index is the hash code. Note that the hash table is used for several kinds of types (function types, array types and array index range types, for now). While all these live in the same table, they are completely independent, and the hash code is computed differently for each of these.
Referenced by init_ttree(), and type_hash_canon().
True if we are using EH to handle cleanups.
Referenced by using_eh_for_cleanups(), and using_eh_for_cleanups_p().
|
static |
Referenced by decl_value_expr_insert(), decl_value_expr_lookup(), init_ttree(), and print_value_expr_statistics().