GCC Middle and Back End API Reference
tree.cc File 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"
Include dependency graph for tree.cc:

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)
 

Functions

int _obstack_allocated_p (struct obstack *h, void *obj)
 
static void set_type_quals (tree, int)
 
static void print_type_hash_statistics (void)
 
static void print_debug_expr_statistics (void)
 
static void print_value_expr_statistics (void)
 
const char * user_omp_clause_code_name (tree clause, bool oacc)
 
static enum tree_node_structure_enum tree_node_structure_for_code (enum tree_code code)
 
static void initialize_tree_contains_struct (void)
 
void init_ttree (void)
 
tree decl_assembler_name (tree decl)
 
void overwrite_decl_assembler_name (tree decl, tree name)
 
static bool need_assembler_name_p (tree decl)
 
void assign_assembler_name_if_needed (tree t)
 
tree decl_comdat_group (const_tree node)
 
tree decl_comdat_group_id (const_tree node)
 
const char * decl_section_name (const_tree node)
 
void set_decl_section_name (tree node, const char *value)
 
void set_decl_section_name (tree decl, const_tree other)
 
enum tls_model decl_tls_model (const_tree node)
 
void set_decl_tls_model (tree node, enum tls_model model)
 
size_t tree_code_size (enum tree_code code)
 
size_t tree_size (const_tree node)
 
static tree_node_kind get_stats_node_kind (enum tree_code code)
 
static void record_node_allocation_statistics (enum tree_code code, size_t length)
 
int allocate_decl_uid (void)
 
tree make_node (enum tree_code code MEM_STAT_DECL)
 
void free_node (tree node)
 
tree copy_node (tree node MEM_STAT_DECL)
 
tree copy_list (tree list)
 
static unsigned int get_int_cst_ext_nunits (tree type, const wide_int &cst)
 
static tree build_new_int_cst (tree type, const wide_int &cst)
 
static tree build_new_poly_int_cst (tree type, tree(&coeffs)[NUM_POLY_INT_COEFFS] CXX_MEM_STAT_INFO)
 
tree build_int_cst (tree type, poly_int64 cst)
 
tree build_int_cstu (tree type, poly_uint64 cst)
 
tree build_int_cst_type (tree type, poly_int64 cst)
 
tree double_int_to_tree (tree type, double_int cst)
 
tree force_fit_type (tree type, const poly_wide_int_ref &cst, int overflowable, bool overflowed)
 
static tree cache_wide_int_in_type_cache (tree type, const wide_int &cst, int slot, int max_slots)
 
static tree wide_int_to_tree_1 (tree type, const wide_int_ref &pcst)
 
tree build_poly_int_cst (tree type, const poly_wide_int_ref &values)
 
tree wide_int_to_tree (tree type, const poly_wide_int_ref &value)
 
tree cache_integer_cst (tree t, bool might_duplicate)
 
tree build_low_bits_mask (tree type, unsigned bits)
 
bool cst_and_fits_in_hwi (const_tree x)
 
tree make_vector (unsigned log2_npatterns, unsigned int nelts_per_pattern MEM_STAT_DECL)
 
tree build_vector_from_ctor (tree type, const vec< constructor_elt, va_gc > *v)
 
tree build_vector_from_val (tree vectype, tree sc)
 
tree build_uniform_cst (tree type, tree sc)
 
tree build_vec_series (tree type, tree base, tree step)
 
tree build_index_vector (tree vec_type, poly_uint64 base, poly_uint64 step)
 
tree build_vector_a_then_b (tree vec_type, unsigned int num_a, tree a, tree b)
 
void recompute_constructor_flags (tree c)
 
void verify_constructor_flags (tree c)
 
tree build_constructor (tree type, vec< constructor_elt, va_gc > *vals MEM_STAT_DECL)
 
tree build_constructor_single (tree type, tree index, tree value)
 
tree build_constructor_from_list (tree type, tree vals)
 
tree build_constructor_from_vec (tree type, const vec< tree, va_gc > *vals)
 
tree build_constructor_va (tree type, int nelts,...)
 
tree build_clobber (tree type, enum clobber_kind kind)
 
tree build_fixed (tree type, FIXED_VALUE_TYPE f)
 
tree build_real (tree type, REAL_VALUE_TYPE d)
 
tree build_real_truncate (tree type, REAL_VALUE_TYPE d)
 
REAL_VALUE_TYPE real_value_from_int_cst (const_tree type, const_tree i)
 
tree build_real_from_int_cst (tree type, const_tree i)
 
tree build_real_from_wide (tree type, const wide_int_ref &i, signop sgn)
 
tree build_string (unsigned len, const char *str)
 
tree build_complex (tree type, tree real, tree imag)
 
tree build_complex_inf (tree type, bool neg)
 
tree build_each_one_cst (tree type)
 
tree build_one_cst (tree type)
 
tree build_all_ones_cst (tree type)
 
tree build_minus_one_cst (tree type)
 
tree build_zero_cst (tree type)
 
tree build_replicated_int_cst (tree type, unsigned int width, HOST_WIDE_INT value)
 
tree sign_mask_for (tree type)
 
tree make_tree_binfo (unsigned base_binfos MEM_STAT_DECL)
 
tree build_case_label (tree low_value, tree high_value, tree label_decl)
 
tree make_int_cst (int len, int ext_len MEM_STAT_DECL)
 
tree make_tree_vec (int len MEM_STAT_DECL)
 
tree grow_tree_vec (tree v, int len MEM_STAT_DECL)
 
bool zerop (const_tree expr)
 
bool integer_zerop (const_tree expr)
 
bool integer_onep (const_tree expr)
 
bool integer_each_onep (const_tree expr)
 
bool integer_all_onesp (const_tree expr)
 
bool integer_minus_onep (const_tree expr)
 
bool integer_pow2p (const_tree expr)
 
bool integer_nonzerop (const_tree expr)
 
bool integer_truep (const_tree expr)
 
bool fixed_zerop (const_tree expr)
 
int tree_log2 (const_tree expr)
 
int tree_floor_log2 (const_tree expr)
 
unsigned int tree_ctz (const_tree expr)
 
bool real_zerop (const_tree expr)
 
bool real_onep (const_tree expr)
 
bool real_minus_onep (const_tree expr)
 
bool real_maybe_zerop (const_tree expr)
 
bool really_constant_p (const_tree exp)
 
bool ptrdiff_tree_p (const_tree t, poly_int64 *value)
 
poly_int64 tree_to_poly_int64 (const_tree t)
 
poly_uint64 tree_to_poly_uint64 (const_tree t)
 
tree value_member (tree elem, tree list)
 
tree purpose_member (const_tree elem, tree list)
 
bool vec_member (const_tree elem, vec< tree, va_gc > *v)
 
tree chain_index (int idx, tree chain)
 
bool chain_member (const_tree elem, const_tree chain)
 
int list_length (const_tree t)
 
tree first_field (const_tree type)
 
tree last_field (const_tree type)
 
tree chainon (tree op1, tree op2)
 
tree tree_last (tree chain)
 
tree nreverse (tree t)
 
tree build_tree_list (tree parm, tree value MEM_STAT_DECL)
 
tree build_tree_list_vec (const vec< tree, va_gc > *vec MEM_STAT_DECL)
 
tree tree_cons (tree purpose, tree value, tree chain MEM_STAT_DECL)
 
vec< tree, va_gc > * ctor_to_vec (tree ctor)
 
tree size_in_bytes_loc (location_t loc, const_tree type)
 
HOST_WIDE_INT int_size_in_bytes (const_tree type)
 
HOST_WIDE_INT max_int_size_in_bytes (const_tree type)
 
tree bit_position (const_tree field)
 
tree byte_position (const_tree field)
 
HOST_WIDE_INT int_byte_position (const_tree field)
 
tree array_type_nelts (const_tree type)
 
tree staticp (tree arg)
 
bool decl_address_invariant_p (const_tree op)
 
bool decl_address_ip_invariant_p (const_tree op)
 
static bool tree_invariant_p_1 (tree t)
 
bool tree_invariant_p (tree t)
 
tree save_expr (tree expr)
 
tree skip_simple_arithmetic (tree expr)
 
tree skip_simple_constant_arithmetic (tree expr)
 
enum tree_node_structure_enum tree_node_structure (const_tree t)
 
static void process_call_operands (tree t)
 
bool contains_placeholder_p (const_tree exp)
 
static bool type_contains_placeholder_1 (const_tree type)
 
bool type_contains_placeholder_p (tree type)
 
static void push_without_duplicates (tree exp, vec< tree > *queue)
 
void find_placeholder_in_expr (tree exp, vec< tree > *refs)
 
tree substitute_in_expr (tree exp, tree f, tree r)
 
tree substitute_placeholder_in_expr (tree exp, tree obj)
 
static tree stabilize_reference_1 (tree e)
 
tree stabilize_reference (tree ref)
 
void recompute_tree_invariant_for_addr_expr (tree t)
 
tree build0 (enum tree_code code, tree tt MEM_STAT_DECL)
 
tree build1 (enum tree_code code, tree type, tree node MEM_STAT_DECL)
 
tree build2 (enum tree_code code, tree tt, tree arg0, tree arg1 MEM_STAT_DECL)
 
tree build3 (enum tree_code code, tree tt, tree arg0, tree arg1, tree arg2 MEM_STAT_DECL)
 
tree build4 (enum tree_code code, tree tt, tree arg0, tree arg1, tree arg2, tree arg3 MEM_STAT_DECL)
 
tree build5 (enum tree_code code, tree tt, tree arg0, tree arg1, tree arg2, tree arg3, tree arg4 MEM_STAT_DECL)
 
tree build_simple_mem_ref_loc (location_t loc, tree ptr)
 
poly_offset_int mem_ref_offset (const_tree t)
 
tree build_invariant_address (tree type, tree base, poly_int64 offset)
 
tree build_nt (enum tree_code code,...)
 
tree build_nt_call_vec (tree fn, vec< tree, va_gc > *args)
 
tree build_decl (location_t loc, enum tree_code code, tree name, tree type MEM_STAT_DECL)
 
tree build_debug_expr_decl (tree type)
 
tree build_fn_decl (const char *name, tree type)
 
tree build_translation_unit_decl (tree name)
 
tree build_block (tree vars, tree subblocks, tree supercontext, tree chain)
 
void protected_set_expr_location (tree t, location_t loc)
 
void protected_set_expr_location_if_unset (tree t, location_t loc)
 
bool check_lang_type (const_tree cand, const_tree base)
 
static tree find_atomic_core_type (const_tree type)
 
bool check_base_type (const_tree cand, const_tree base)
 
bool check_qualified_type (const_tree cand, const_tree base, int type_quals)
 
static bool check_aligned_type (const_tree cand, const_tree base, unsigned int align)
 
tree get_qualified_type (tree type, int type_quals)
 
tree build_qualified_type (tree type, int type_quals MEM_STAT_DECL)
 
tree build_aligned_type (tree type, unsigned int align)
 
tree build_distinct_type_copy (tree type MEM_STAT_DECL)
 
tree build_variant_type_copy (tree type MEM_STAT_DECL)
 
int tree_map_base_eq (const void *va, const void *vb)
 
unsigned int tree_map_base_hash (const void *item)
 
bool tree_map_base_marked_p (const void *p)
 
unsigned int tree_map_hash (const void *item)
 
unsigned int tree_decl_map_hash (const void *item)
 
priority_type decl_init_priority_lookup (tree decl)
 
priority_type decl_fini_priority_lookup (tree decl)
 
void decl_init_priority_insert (tree decl, priority_type priority)
 
void decl_fini_priority_insert (tree decl, priority_type priority)
 
tree decl_debug_expr_lookup (tree from)
 
void decl_debug_expr_insert (tree from, tree to)
 
tree decl_value_expr_lookup (tree from)
 
void decl_value_expr_insert (tree from, tree to)
 
vec< tree, va_gc > ** decl_debug_args_lookup (tree from)
 
vec< tree, va_gc > ** decl_debug_args_insert (tree from)
 
hashval_t type_hash_canon_hash (tree type)
 
tree type_hash_canon (unsigned int hashcode, tree type)
 
bool type_list_equal (const_tree l1, const_tree l2)
 
int type_num_arguments (const_tree fntype)
 
tree type_argument_type (const_tree fntype, unsigned argno)
 
bool tree_int_cst_equal (const_tree t1, const_tree t2)
 
bool tree_fits_shwi_p (const_tree t)
 
bool tree_fits_poly_int64_p (const_tree t)
 
bool tree_fits_uhwi_p (const_tree t)
 
bool tree_fits_poly_uint64_p (const_tree t)
 
HOST_WIDE_INT tree_to_shwi (const_tree t)
 
unsigned HOST_WIDE_INT tree_to_uhwi (const_tree t)
 
int tree_int_cst_sign_bit (const_tree t)
 
int tree_int_cst_sgn (const_tree t)
 
unsigned int tree_int_cst_min_precision (tree value, signop sgn)
 
int simple_cst_equal (const_tree t1, const_tree t2)
 
int compare_tree_int (const_tree t, unsigned HOST_WIDE_INT u)
 
bool valid_constant_size_p (const_tree size, cst_size_error *perr)
 
unsigned int element_precision (const_tree type)
 
bool associative_tree_code (enum tree_code code)
 
bool commutative_tree_code (enum tree_code code)
 
bool commutative_ternary_tree_code (enum tree_code code)
 
bool operation_can_overflow (enum tree_code code)
 
bool operation_no_trapping_overflow (tree type, enum tree_code code)
 
tree build_pointer_type_for_mode (tree to_type, machine_mode mode, bool can_alias_all)
 
tree build_pointer_type (tree to_type)
 
tree build_reference_type_for_mode (tree to_type, machine_mode mode, bool can_alias_all)
 
tree build_reference_type (tree to_type)
 
static void clear_nonstandard_integer_type_cache (void)
 
tree build_nonstandard_integer_type (unsigned HOST_WIDE_INT precision, int unsignedp)
 
tree build_nonstandard_boolean_type (unsigned HOST_WIDE_INT precision)
 
tree build_bitint_type (unsigned HOST_WIDE_INT precision, int unsignedp)
 
static tree build_range_type_1 (tree type, tree lowval, tree highval, bool shared)
 
tree build_range_type (tree type, tree lowval, tree highval)
 
tree build_nonshared_range_type (tree type, tree lowval, tree highval)
 
tree build_index_type (tree maxval)
 
bool subrange_type_for_debug_p (const_tree type, tree *lowval, tree *highval)
 
tree build_array_type_1 (tree elt_type, tree index_type, bool typeless_storage, bool shared, bool set_canonical)
 
tree build_array_type (tree elt_type, tree index_type, bool typeless_storage)
 
tree build_nonshared_array_type (tree elt_type, tree index_type)
 
tree build_array_type_nelts (tree elt_type, poly_uint64 nelts)
 
static tree maybe_canonicalize_argtypes (tree argtypes, bool *any_structural_p, bool *any_noncanonical_p)
 
tree build_function_type (tree value_type, tree arg_types, bool no_named_args_stdarg_p)
 
static tree build_function_type_list_1 (bool vaargs, tree return_type, va_list argp)
 
tree build_function_type_list (tree return_type,...)
 
tree build_varargs_function_type_list (tree return_type,...)
 
static tree build_function_type_array_1 (bool vaargs, tree return_type, int n, tree *arg_types)
 
tree build_function_type_array (tree return_type, int n, tree *arg_types)
 
tree build_varargs_function_type_array (tree return_type, int n, tree *arg_types)
 
tree build_method_type_directly (tree basetype, tree rettype, tree argtypes)
 
tree build_method_type (tree basetype, tree type)
 
tree build_offset_type (tree basetype, tree type)
 
tree build_complex_type (tree component_type, bool named)
 
tree excess_precision_type (tree type)
 
tree get_unwidened (tree op, tree for_type)
 
tree get_narrower (tree op, int *unsignedp_ptr)
 
bool int_fits_type_p (const_tree c, const_tree type)
 
void get_type_static_bounds (const_tree type, mpz_t min, mpz_t max)
 
bool auto_var_p (const_tree var)
 
bool auto_var_in_fn_p (const_tree var, const_tree fn)
 
static tree find_var_from_fn (tree *tp, int *walk_subtrees, void *data)
 
bool variably_modified_type_p (tree type, tree fn)
 
tree get_containing_scope (const_tree t)
 
const_tree get_ultimate_context (const_tree decl)
 
tree decl_function_context (const_tree decl)
 
tree decl_type_context (const_tree decl)
 
tree get_callee_fndecl (const_tree call)
 
static bool tree_builtin_call_types_compatible_p (const_tree call, tree fndecl)
 
combined_fn get_call_combined_fn (const_tree call)
 
static int tree_nodes_cmp (const void *p1, const void *p2)
 
static int tree_codes_cmp (const void *p1, const void *p2)
 
void dump_tree_statistics (void)
 
unsigned crc32_unsigned_n (unsigned chksum, unsigned value, unsigned bytes)
 
unsigned crc32_string (unsigned chksum, const char *string)
 
void clean_symbol_name (char *p)
 
tree make_anon_name ()
 
tree get_file_function_name (const char *type)
 
static tree make_vector_type (tree innertype, poly_int64 nunits, machine_mode mode)
 
static tree make_or_reuse_type (unsigned size, int unsignedp)
 
static tree make_or_reuse_fract_type (unsigned size, int unsignedp, int satp)
 
static tree make_or_reuse_accum_type (unsigned size, int unsignedp, int satp)
 
static tree build_atomic_base (tree type, unsigned int align)
 
void build_common_tree_nodes (bool signed_char)
 
void set_call_expr_flags (tree decl, int flags)
 
static void local_define_builtin (const char *name, tree type, enum built_in_function code, const char *library_name, int ecf_flags)
 
void build_common_builtin_nodes (void)
 
tree reconstruct_complex_type (tree type, tree bottom)
 
tree build_vector_type_for_mode (tree innertype, machine_mode mode)
 
tree build_vector_type (tree innertype, poly_int64 nunits)
 
tree build_truth_vector_type_for_mode (poly_uint64 nunits, machine_mode mask_mode)
 
static tree build_truth_vector_type_for (tree vectype)
 
tree build_opaque_vector_type (tree innertype, poly_int64 nunits)
 
static poly_wide_int vector_cst_int_elt (const_tree t, unsigned int i)
 
tree vector_cst_elt (const_tree t, unsigned int i)
 
bool initializer_zerop (const_tree init, bool *nonzero)
 
bool initializer_each_zero_or_onep (const_tree expr)
 
tree uniform_vector_p (const_tree vec)
 
tree uniform_integer_cst_p (tree t)
 
tree bitmask_inv_cst_vector_p (tree t)
 
int single_nonzero_element (const_tree t)
 
tree build_empty_stmt (location_t loc)
 
tree build_omp_clause (location_t loc, enum omp_clause_code code)
 
tree build_vl_exp (enum tree_code code, int len MEM_STAT_DECL)
 
static tree build_call_1 (tree return_type, tree fn, int nargs)
 
tree build_call_nary (tree return_type, tree fn, int nargs,...)
 
tree build_call_valist (tree return_type, tree fn, int nargs, va_list args)
 
tree build_call_array_loc (location_t loc, tree return_type, tree fn, int nargs, const tree *args)
 
tree build_call_vec (tree return_type, tree fn, const vec< tree, va_gc > *args)
 
tree build_call_expr_loc_array (location_t loc, tree fndecl, int n, tree *argarray)
 
tree build_call_expr_loc_vec (location_t loc, tree fndecl, vec< tree, va_gc > *vec)
 
tree build_call_expr_loc (location_t loc, tree fndecl, int n,...)
 
tree build_call_expr (tree fndecl, int n,...)
 
tree build_call_expr_internal_loc_array (location_t loc, internal_fn ifn, tree type, int n, const tree *args)
 
tree build_call_expr_internal_loc (location_t loc, enum internal_fn ifn, tree type, int n,...)
 
tree maybe_build_call_expr_loc (location_t loc, combined_fn fn, tree type, int n,...)
 
tree build_alloca_call_expr (tree size, unsigned int align, HOST_WIDE_INT max_size)
 
tree builtin_decl_unreachable ()
 
tree build_builtin_unreachable (location_t loc)
 
tree build_string_literal (unsigned len, const char *str, tree eltype, unsigned HOST_WIDE_INT size)
 
bool needs_to_live_in_memory (const_tree t)
 
HOST_WIDE_INT int_cst_value (const_tree x)
 
tree signed_or_unsigned_type_for (int unsignedp, tree type)
 
tree unsigned_type_for (tree type)
 
tree signed_type_for (tree type)
 
bool is_truth_type_for (tree type, tree truth_type)
 
tree truth_type_for (tree type)
 
tree upper_bound_in_type (tree outer, tree inner)
 
tree lower_bound_in_type (tree outer, tree inner)
 
bool operand_equal_for_phi_arg_p (const_tree arg0, const_tree arg1)
 
tree num_ending_zeros (const_tree x)
 
static tree walk_type_fields (tree type, walk_tree_fn func, void *data, hash_set< tree > *pset, walk_tree_lh lh)
 
tree walk_tree_1 (tree *tp, walk_tree_fn func, void *data, hash_set< tree > *pset, walk_tree_lh lh)
 
tree walk_tree_without_duplicates_1 (tree *tp, walk_tree_fn func, void *data, walk_tree_lh lh)
 
tree tree_block (tree t)
 
void tree_set_block (tree t, tree b)
 
tree create_artificial_label (location_t loc)
 
const char * get_name (tree t)
 
bool stdarg_p (const_tree fntype)
 
bool prototype_p (const_tree fntype)
 
location_t * block_nonartificial_location (tree block)
 
location_t tree_nonartificial_location (tree exp)
 
location_t tree_inlined_location (tree exp, bool system_header)
 
tree build_optimization_node (struct gcc_options *opts, struct gcc_options *opts_set)
 
tree build_target_option_node (struct gcc_options *opts, struct gcc_options *opts_set)
 
void prepare_target_option_nodes_for_pch (void)
 
tree block_ultimate_origin (const_tree block)
 
bool tree_nop_conversion_p (const_tree outer_type, const_tree inner_type)
 
static bool tree_nop_conversion (const_tree exp)
 
static bool tree_sign_nop_conversion (const_tree exp)
 
tree tree_strip_nop_conversions (tree exp)
 
tree tree_strip_sign_nop_conversions (tree exp)
 
tree strip_float_extensions (tree exp)
 
const_tree strip_invariant_refs (const_tree op)
 
tree strip_zero_offset_components (tree op)
 
tree lhd_gcc_personality (void)
 
bool virtual_method_call_p (const_tree target, bool for_dump_p)
 
static tree lookup_binfo_at_offset (tree binfo, tree type, HOST_WIDE_INT pos)
 
tree get_binfo_at_offset (tree binfo, poly_int64 offset, tree expected_type)
 
bool warn_deprecated_use (tree node, tree attr)
 
void error_unavailable_use (tree node, tree attr)
 
bool contains_bitfld_component_ref_p (const_tree ref)
 
static bool try_catch_may_fallthru (const_tree stmt)
 
bool block_may_fallthru (const_tree block)
 
void using_eh_for_cleanups (void)
 
bool using_eh_for_cleanups_p (void)
 
const char * get_tree_code_name (enum tree_code code)
 
tree drop_tree_overflow (tree t)
 
tree get_base_address (tree t)
 
tree array_ref_element_size (tree exp)
 
tree array_ref_low_bound (tree exp)
 
tree array_ref_up_bound (tree exp)
 
bool array_ref_flexible_size_p (tree ref, bool *is_trailing_array)
 
tree component_ref_field_offset (tree exp)
 
static tree get_initializer_for (tree init, tree decl)
 
special_array_member component_ref_sam_type (tree ref)
 
tree component_ref_size (tree ref, special_array_member *sam)
 
bool is_access_with_size_p (const_tree call)
 
tree get_ref_from_access_with_size (tree call)
 
machine_mode element_mode (const_tree t)
 
machine_mode vector_type_mode (const_tree t)
 
unsigned int vector_element_bits (const_tree type)
 
tree vector_element_bits_tree (const_tree type)
 
static bool verify_type_variant (const_tree t, tree tv)
 
bool type_with_interoperable_signedness (const_tree type)
 
bool gimple_canonical_types_compatible_p (const_tree t1, const_tree t2, bool trust_type_canonical)
 
static void verify_opaque_type (const_tree t, tree tv, tree tc)
 
void verify_type (const_tree t)
 
int get_range_pos_neg (tree arg)
 
bool nonnull_arg_p (const_tree arg)
 
location_t set_block (location_t loc, tree block)
 
location_t set_source_range (tree expr, location_t start, location_t finish)
 
location_t set_source_range (tree expr, source_range src_range)
 
tree maybe_wrap_with_location (tree expr, location_t loc)
 
const char * combined_fn_name (combined_fn fn)
 
bitmap get_nonnull_args (const_tree fntype)
 
bool is_empty_type (const_tree type)
 
bool default_is_empty_record (const_tree type)
 
bool flexible_array_type_p (const_tree type)
 
HOST_WIDE_INT arg_int_size_in_bytes (const_tree type)
 
tree arg_size_in_bytes (const_tree type)
 
bool expr_type_first_operand_type_p (tree_code code)
 
tree get_typenode_from_name (const char *name)
 
tree max_object_size (void)
 
bool verify_type_context (location_t loc, type_context_kind context, const_tree type, bool silent_p)
 
bool valid_new_delete_pair_p (tree new_asm, tree delete_asm, bool *pcertain)
 
unsigned fndecl_dealloc_argno (tree fndecl)
 
tree get_attr_nonstring_decl (tree expr, tree *ref)
 
int get_target_clone_attr_len (tree arglist)
 
void tree_cc_finalize (void)
 

Variables

static const char *const tree_code_name []
 
const char *const tree_code_class_strings []
 
static uint64_t tree_code_counts [MAX_TREE_CODES]
 
uint64_t tree_node_counts [(int) all_kinds]
 
uint64_t tree_node_sizes [(int) all_kinds]
 
static const char *const tree_node_kind_names []
 
static int next_decl_uid
 
static unsigned next_type_uid = 1
 
static int next_debug_decl_uid
 
static hash_table< type_cache_hasher > * type_hash_table
 
static tree int_cst_node
 
static hash_table< int_cst_hasher > * int_cst_hash_table
 
static hash_table< poly_int_cst_hasher > * poly_int_cst_hash_table
 
static tree cl_optimization_node
 
static tree cl_target_option_node
 
static hash_table< cl_option_hasher > * cl_option_hash_table
 
static hash_table< tree_decl_map_cache_hasher > * debug_expr_for_decl
 
static hash_table< tree_decl_map_cache_hasher > * value_expr_for_decl
 
static hash_table< tree_vec_map_cache_hasher > * debug_args_for_decl
 
tree global_trees [TI_MAX]
 
tree integer_types [itk_none]
 
bool int_n_enabled_p [NUM_INT_N_ENTS]
 
struct int_n_trees_t int_n_trees [NUM_INT_N_ENTS]
 
bool tree_contains_struct [MAX_TREE_CODES][64]
 
unsigned const char omp_clause_num_ops []
 
const char *const omp_clause_code_name []
 
vec< tree, va_gc > * all_translation_units
 
static tree nonstandard_integer_type_cache [2 *MAX_INT_CACHED_PREC+2]
 
static tree nonstandard_boolean_type_cache [MAX_BOOL_CACHED_PREC+1]
 
static vec< tree, va_gc > * bitint_type_cache
 
static unsigned anon_cnt = 0
 
const floatn_type_info floatn_nx_types [NUM_FLOATN_NX_TYPES]
 
static tree gcc_eh_personality_decl
 
static bool using_eh_for_cleanups_flag = false
 
int suppress_location_wrappers
 
const builtin_structptr_type builtin_structptr_types [6]
 

Macro Definition Documentation

◆ DEFTREECODE

#define DEFTREECODE ( SYM,
NAME,
TYPE,
LEN )
Value:
@ NAME
Definition tree-ssa-pre.cc:242
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.   

◆ END_OF_BASE_TREE_CODES

#define END_OF_BASE_TREE_CODES   "@dummy",

◆ FEEDBACK

#define FEEDBACK ( X)
Value:
((X) * 0x04c11db7)

◆ FILE_FUNCTION_FORMAT

#define FILE_FUNCTION_FORMAT   "_GLOBAL__%s_%s"

Referenced by get_file_function_name().

◆ MAKE_FIXED_MODE_NODE

#define MAKE_FIXED_MODE_NODE ( KIND,
NAME,
MODE )
Value:
NAME ## _type_node = \
make_or_reuse_signed_ ## KIND ## _type (GET_MODE_BITSIZE (MODE ## mode)); \
u ## NAME ## _type_node = \
make_or_reuse_unsigned_ ## KIND ## _type \
(GET_MODE_BITSIZE (U ## MODE ## mode)); \
sat_ ## NAME ## _type_node = \
make_or_reuse_sat_signed_ ## KIND ## _type \
(GET_MODE_BITSIZE (MODE ## mode)); \
sat_u ## NAME ## _type_node = \
make_or_reuse_sat_unsigned_ ## KIND ## _type \
(GET_MODE_BITSIZE (U ## MODE ## mode));
ALWAYS_INLINE poly_uint16 GET_MODE_BITSIZE(machine_mode mode)
Definition machmode.h:673

Referenced by build_common_tree_nodes().

◆ MAKE_FIXED_TYPE_NODE

#define MAKE_FIXED_TYPE_NODE ( KIND,
SIZE )
Value:
sat_ ## KIND ## _type_node = \
make_sat_signed_ ## KIND ## _type (SIZE); \
sat_unsigned_ ## KIND ## _type_node = \
make_sat_unsigned_ ## KIND ## _type (SIZE); \
KIND ## _type_node = make_signed_ ## KIND ## _type (SIZE); \
unsigned_ ## KIND ## _type_node = \
make_unsigned_ ## KIND ## _type (SIZE);

◆ MAKE_FIXED_TYPE_NODE_FAMILY

#define MAKE_FIXED_TYPE_NODE_FAMILY ( N1,
N2 )
Value:
MAKE_FIXED_TYPE_NODE_WIDTH (N1, short_, SHORT_ ## N2 ## _TYPE_SIZE) \
MAKE_FIXED_TYPE_NODE (N1, N2 ## _TYPE_SIZE) \
MAKE_FIXED_TYPE_NODE_WIDTH (N1, long_, LONG_ ## N2 ## _TYPE_SIZE) \
MAKE_FIXED_TYPE_NODE_WIDTH (N1, long_long_, LONG_LONG_ ## N2 ## _TYPE_SIZE)
#define MAKE_FIXED_TYPE_NODE_WIDTH(KIND, WIDTH, SIZE)

Referenced by build_common_tree_nodes().

◆ MAKE_FIXED_TYPE_NODE_WIDTH

#define MAKE_FIXED_TYPE_NODE_WIDTH ( KIND,
WIDTH,
SIZE )
Value:
sat_ ## WIDTH ## KIND ## _type_node = \
make_sat_signed_ ## KIND ## _type (SIZE); \
sat_unsigned_ ## WIDTH ## KIND ## _type_node = \
make_sat_unsigned_ ## KIND ## _type (SIZE); \
WIDTH ## KIND ## _type_node = make_signed_ ## KIND ## _type (SIZE); \
unsigned_ ## WIDTH ## KIND ## _type_node = \
make_unsigned_ ## KIND ## _type (SIZE);

◆ MAX_BOOL_CACHED_PREC

#define MAX_BOOL_CACHED_PREC    (HOST_BITS_PER_WIDE_INT > 64 ? HOST_BITS_PER_WIDE_INT : 64)

◆ MAX_INT_CACHED_PREC

◆ PROCESS_ARG

#define PROCESS_ARG ( N)
Value:
do { \
TREE_OPERAND (t, N) = arg##N; \
if (arg##N &&!TYPE_P (arg##N)) \
{ \
if (TREE_SIDE_EFFECTS (arg##N)) \
side_effects = 1; \
if (!TREE_READONLY (arg##N) \
&& !CONSTANT_CLASS_P (arg##N)) \
(void) (read_only = 0); \
if (!TREE_CONSTANT (arg##N)) \
(void) (constant = 0); \
} \
} while (0)
#define N
Definition gensupport.cc:202
#define TREE_READONLY(NODE)
Definition tree.h:934
#define TREE_CONSTANT(NODE)
Definition tree.h:938
#define TREE_SIDE_EFFECTS(NODE)
Definition tree.h:878
#define TYPE_P(NODE)
Definition tree.h:226
#define CONSTANT_CLASS_P(NODE)
Definition tree.h:215

Referenced by build2(), and build3().

◆ RETURN_TRUE_IF_VAR

#define RETURN_TRUE_IF_VAR ( T)
Value:
do { tree _t = (T); \
if (_t != NULL_TREE \
&& _t != error_mark_node \
&& !CONSTANT_CLASS_P (_t) \
&& TREE_CODE (_t) != PLACEHOLDER_EXPR \
&& (!fn \
&& (TREE_CODE (_t) != VAR_DECL \
|| walk_tree (&_t, find_var_from_fn, fn, NULL))) \
return true; } while (0)
union tree_node * tree
Definition coretypes.h:97
static struct token T
Definition gengtype-parse.cc:45
Definition gengtype.h:252
#define NULL
Definition system.h:50
static tree find_var_from_fn(tree *tp, int *walk_subtrees, void *data)
Definition tree.cc:8340
#define TYPE_SIZES_GIMPLIFIED(NODE)
Definition tree.h:941
#define TREE_CODE(NODE)
Definition tree.h:324
#define walk_tree(a, b, c, d)
Definition tree.h:5726
#define error_mark_node
Definition tree.h:4418
#define CONTAINS_PLACEHOLDER_P(EXP)
Definition tree.h:5278
#define NULL_TREE
Definition tree.h:317

Referenced by variably_modified_type_p().

◆ SYNDROME

#define SYNDROME ( X)
Value:
(FEEDBACK ((X) & 1) ^ FEEDBACK ((X) & 2) \
^ FEEDBACK ((X) & 4) ^ FEEDBACK ((X) & 8))
#define FEEDBACK(X)

Referenced by crc32_unsigned_n().

◆ TREE_MEM_USAGE_SPACES

#define TREE_MEM_USAGE_SPACES   40

Referenced by dump_tree_statistics().

◆ TYPE_HASH_INITIAL_SIZE

#define TYPE_HASH_INITIAL_SIZE   1000
Initial size of the hash table (rounded to next prime).   

Referenced by init_ttree().

◆ UPDATE_FLAGS

#define UPDATE_FLAGS ( NODE)
Value:
do { tree _node = (NODE); \
if (_node && !TREE_CONSTANT (_node)) tc = false; \
if (_node && TREE_SIDE_EFFECTS (_node)) se = true; } while (0)

Referenced by recompute_tree_invariant_for_addr_expr().

◆ verify_variant_match

#define verify_variant_match ( flag)
Value:
do { \
if (flag (tv) != flag (t)) \
{ \
error ("type variant differs by %s", #flag); \
debug_tree (tv); \
return false; \
} \
} while (false)

Referenced by verify_type_variant().

◆ WALK_SUBTREE

#define WALK_SUBTREE ( NODE)
Value:
do \
{ \
result = walk_tree_1 (&(NODE), func, data, pset, lh); \
if (result) \
return result; \
} \
while (0)
Definition genoutput.cc:150
tree walk_tree_1(tree *tp, walk_tree_fn func, void *data, hash_set< tree > *pset, walk_tree_lh lh)
Definition tree.cc:11451

Referenced by walk_tree_1(), and walk_type_fields().

◆ WALK_SUBTREE_TAIL

#define WALK_SUBTREE_TAIL ( NODE)
Value:
do \
{ \
tp = & (NODE); \
goto tail_recurse; \
} \
while (0)

Referenced by walk_tree_1().

Function Documentation

◆ _obstack_allocated_p()

int _obstack_allocated_p ( struct obstack * h,
void * obj )
extern
obstack.[ch] explicitly declined to prototype this.   

◆ allocate_decl_uid()

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

◆ arg_int_size_in_bytes()

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

◆ arg_size_in_bytes()

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

◆ array_ref_element_size()

◆ array_ref_flexible_size_p()

bool array_ref_flexible_size_p ( tree ref,
bool * is_trailing_array )
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().

◆ array_ref_low_bound()

◆ array_ref_up_bound()

tree array_ref_up_bound ( tree exp)
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(), idx_infer_loop_bounds(), idx_within_array_bound(), in_array_bounds_p(), and range_in_array_bounds_p().

◆ array_type_nelts()

tree array_type_nelts ( 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 count_type_elements(), and is_empty_type().

◆ assign_assembler_name_if_needed()

void assign_assembler_name_if_needed ( tree t)

◆ associative_tree_code()

bool associative_tree_code ( enum tree_code code)

◆ auto_var_in_fn_p()

◆ auto_var_p()

◆ bit_position()

◆ bitmask_inv_cst_vector_p()

tree bitmask_inv_cst_vector_p ( tree t)

◆ block_may_fallthru()

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

◆ block_nonartificial_location()

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

◆ block_ultimate_origin()

◆ build0()

tree build0 ( enum tree_code code,
tree tt MEM_STAT_DECL )
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.

◆ build1()

tree build1 ( enum tree_code code,
tree type,
tree node MEM_STAT_DECL )

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

◆ build2()

tree build2 ( enum tree_code code,
tree tt,
tree arg0,
tree arg1 MEM_STAT_DECL )

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_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_recog_divmod_pattern(), 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().

◆ build3()

tree build3 ( enum tree_code code,
tree tt,
tree arg0,
tree arg1,
tree arg2 MEM_STAT_DECL )

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

◆ build4()

◆ build5()

tree build5 ( enum tree_code code,
tree tt,
tree arg0,
tree arg1,
tree arg2,
tree arg3,
tree arg4 MEM_STAT_DECL )

◆ build_aligned_type()

◆ build_all_ones_cst()

◆ build_alloca_call_expr()

tree build_alloca_call_expr ( tree size,
unsigned int align,
HOST_WIDE_INT max_size )
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().

◆ build_array_type()

◆ build_array_type_1()

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

◆ build_array_type_nelts()

◆ build_atomic_base()

static tree build_atomic_base ( tree type,
unsigned int align )
static
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().

◆ build_bitint_type()

◆ build_block()

tree build_block ( tree vars,
tree subblocks,
tree supercontext,
tree chain )
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().

◆ build_builtin_unreachable()

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

◆ build_call_1()

static tree build_call_1 ( tree return_type,
tree fn,
int nargs )
static
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().

◆ build_call_array_loc()

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

◆ build_call_expr()

◆ build_call_expr_internal_loc()

tree build_call_expr_internal_loc ( location_t loc,
enum internal_fn ifn,
tree type,
int n,
... )

◆ build_call_expr_internal_loc_array()

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

◆ build_call_expr_loc()

◆ build_call_expr_loc_array()

tree build_call_expr_loc_array ( location_t loc,
tree fndecl,
int n,
tree * argarray )
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().

◆ build_call_expr_loc_vec()

tree build_call_expr_loc_vec ( location_t loc,
tree fndecl,
vec< tree, va_gc > * vec )
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_call_nary()

tree build_call_nary ( tree return_type,
tree fn,
int nargs,
... )
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_call_valist()

tree build_call_valist ( tree return_type,
tree fn,
int nargs,
va_list 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 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().

◆ build_call_vec()

tree build_call_vec ( tree return_type,
tree fn,
const vec< tree, va_gc > * args )

◆ build_case_label()

tree build_case_label ( tree low_value,
tree high_value,
tree label_decl )
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.

◆ build_clobber()

◆ build_common_builtin_nodes()

void build_common_builtin_nodes ( void )

◆ build_common_tree_nodes()

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, 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.

◆ build_complex()

tree build_complex ( tree type,
tree real,
tree imag )
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_complex_inf()

tree build_complex_inf ( tree type,
bool neg )
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.

◆ build_complex_type()

tree build_complex_type ( tree component_type,
bool named )
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().

◆ build_constructor()

◆ build_constructor_from_list()

tree build_constructor_from_list ( tree type,
tree vals )
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().

◆ build_constructor_from_vec()

tree build_constructor_from_vec ( tree type,
const vec< tree, va_gc > * vals )
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.

◆ build_constructor_single()

tree build_constructor_single ( tree type,
tree index,
tree value )
Build a CONSTRUCTOR node made of a single initializer, with the specified
INDEX and VALUE.   

References build_constructor(), and vec_alloc().

◆ build_constructor_va()

tree build_constructor_va ( tree type,
int nelts,
... )
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().

◆ build_debug_expr_decl()

◆ build_decl()

tree build_decl ( location_t loc,
enum tree_code code,
tree name,
tree type MEM_STAT_DECL )
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(), 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_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().

◆ build_distinct_type_copy()

tree build_distinct_type_copy ( tree type MEM_STAT_DECL)
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().

◆ build_each_one_cst()

tree build_each_one_cst ( tree type)
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.

◆ build_empty_stmt()

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

◆ build_fixed()

◆ build_fn_decl()

tree build_fn_decl ( const char * name,
tree type )

◆ build_function_type()

tree build_function_type ( tree value_type,
tree arg_types,
bool no_named_args_stdarg_p )
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_function_type_array()

tree build_function_type_array ( tree return_type,
int n,
tree * arg_types )
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().

◆ build_function_type_array_1()

static tree build_function_type_array_1 ( bool vaargs,
tree return_type,
int n,
tree * arg_types )
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_function_type_list()

◆ build_function_type_list_1()

static tree build_function_type_list_1 ( bool vaargs,
tree return_type,
va_list argp )
static
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().

◆ build_index_type()

tree build_index_type ( tree maxval)
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(), 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().

◆ build_index_vector()

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

◆ build_int_cst()

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_bool_pattern(), adjust_simduid_builtins(), analyze_subscript_affine_affine(), array_ref_low_bound(), array_type_nelts(), 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_addr_of_array_ref_difference(), 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_expand_vec_cond_expr(), 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_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(), unextend(), 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().

◆ build_int_cst_type()

◆ build_int_cstu()

◆ build_invariant_address()

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

◆ build_low_bits_mask()

tree build_low_bits_mask ( tree type,
unsigned bits )
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().

◆ build_method_type()

tree build_method_type ( tree basetype,
tree type )
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_method_type_directly()

tree build_method_type_directly ( tree basetype,
tree rettype,
tree argtypes )
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().

◆ build_minus_one_cst()

◆ build_new_int_cst()

◆ build_new_poly_int_cst()

static tree build_new_poly_int_cst ( tree type,
tree(&) coeffs CXX_MEM_STAT_INFO[NUM_POLY_INT_COEFFS] )
static

◆ build_nonshared_array_type()

tree build_nonshared_array_type ( tree elt_type,
tree index_type )
Wrapper around build_array_type_1 with SHARED set to false.   

References build_array_type_1().

◆ build_nonshared_range_type()

tree build_nonshared_range_type ( tree type,
tree lowval,
tree highval )
Wrapper around build_range_type_1 with SHARED set to false.   

References build_range_type_1().

◆ build_nonstandard_boolean_type()

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

◆ build_nonstandard_integer_type()

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 adjust_bool_pattern(), analyze_access_subtree(), bitwise_type_for_mode(), build_common_tree_nodes(), build_index_vector(), build_range_check(), can_duplicate_and_interleave_p(), canonicalize_loop_ivs(), check_bool_pattern(), 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(), 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(), 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_mask_conversion_pattern(), vect_recog_mixed_size_cond_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().

◆ build_nt()

tree build_nt ( enum tree_code code,
... )
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().

◆ build_nt_call_vec()

tree build_nt_call_vec ( tree fn,
vec< tree, va_gc > * args )
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().

◆ build_offset_type()

tree build_offset_type ( tree basetype,
tree type )
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().

◆ build_omp_clause()

◆ build_one_cst()

tree build_one_cst ( tree type)
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(), 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().

◆ build_opaque_vector_type()

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.

◆ build_optimization_node()

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

◆ build_pointer_type()

tree build_pointer_type ( tree to_type)
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().

◆ build_pointer_type_for_mode()

tree build_pointer_type_for_mode ( tree to_type,
machine_mode mode,
bool can_alias_all )
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().

◆ build_poly_int_cst()

◆ build_qualified_type()

◆ build_range_type()

tree build_range_type ( tree type,
tree lowval,
tree highval )
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().

◆ build_range_type_1()

static tree build_range_type_1 ( tree type,
tree lowval,
tree highval,
bool shared )
static
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().

◆ build_real()

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

◆ build_real_from_int_cst()

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

◆ build_real_from_wide()

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

◆ build_real_truncate()

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_reference_type()

tree build_reference_type ( tree to_type)
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().

◆ build_reference_type_for_mode()

◆ build_replicated_int_cst()

tree build_replicated_int_cst ( tree type,
unsigned int width,
HOST_WIDE_INT value )
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_simple_mem_ref_loc()

◆ build_string()

tree build_string ( unsigned len,
const char * str )

◆ build_string_literal()

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

◆ build_target_option_node()

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

◆ build_translation_unit_decl()

tree build_translation_unit_decl ( tree name)
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().

◆ build_tree_list()

◆ build_tree_list_vec()

tree build_tree_list_vec ( const vec< tree, va_gc > *vec MEM_STAT_DECL)
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_truth_vector_type_for()

static tree build_truth_vector_type_for ( tree vectype)
static
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().

◆ build_truth_vector_type_for_mode()

tree build_truth_vector_type_for_mode ( poly_uint64 nunits,
machine_mode mask_mode )

◆ build_uniform_cst()

tree build_uniform_cst ( tree type,
tree sc )
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_varargs_function_type_array()

tree build_varargs_function_type_array ( tree return_type,
int n,
tree * arg_types )
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_varargs_function_type_list()

tree build_varargs_function_type_list ( tree return_type,
... )
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().

◆ build_variant_type_copy()

tree build_variant_type_copy ( tree type MEM_STAT_DECL)
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_vec_series()

tree build_vec_series ( tree type,
tree base,
tree step )
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().

◆ build_vector_a_then_b()

tree build_vector_a_then_b ( tree vec_type,
unsigned int num_a,
tree a,
tree b )
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().

◆ build_vector_from_ctor()

tree build_vector_from_ctor ( tree type,
const vec< constructor_elt, va_gc > * v )

◆ build_vector_from_val()

◆ build_vector_type()

◆ build_vector_type_for_mode()

◆ build_vl_exp()

tree build_vl_exp ( enum tree_code code,
int len MEM_STAT_DECL )
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_zero_cst()

tree build_zero_cst ( tree type)
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(), 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_expand_vec_cond_expr(), 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(), 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_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().

◆ builtin_decl_unreachable()

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

◆ byte_position()

◆ cache_integer_cst()

tree cache_integer_cst ( tree t,
bool might_duplicate )
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.

◆ cache_wide_int_in_type_cache()

static tree cache_wide_int_in_type_cache ( tree type,
const wide_int & cst,
int slot,
int max_slots )
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().

◆ chain_index()

tree chain_index ( int idx,
tree chain )
Returns element number IDX (zero-origin) of chain CHAIN, or
NULL_TREE.   

References TREE_CHAIN.

◆ chain_member()

bool chain_member ( const_tree elem,
const_tree chain )
Return true if ELEM is part of the chain CHAIN.   

References DECL_CHAIN.

◆ chainon()

tree chainon ( tree op1,
tree op2 )
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().

◆ check_aligned_type()

static bool check_aligned_type ( const_tree cand,
const_tree base,
unsigned int align )
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().

◆ check_base_type()

◆ check_lang_type()

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

◆ check_qualified_type()

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

◆ clean_symbol_name()

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

◆ clear_nonstandard_integer_type_cache()

static void clear_nonstandard_integer_type_cache ( void )
static

◆ combined_fn_name()

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

◆ commutative_ternary_tree_code()

bool commutative_ternary_tree_code ( enum tree_code code)
Return true if CODE represents a ternary tree code for which the
first two operands are commutative.  Otherwise return false.   

◆ commutative_tree_code()

bool commutative_tree_code ( enum tree_code code)
Return true if CODE represents a commutative tree code.  Otherwise
return false.   

◆ compare_tree_int()

◆ component_ref_field_offset()

◆ component_ref_sam_type()

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

◆ contains_bitfld_component_ref_p()

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

◆ contains_placeholder_p()

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

◆ copy_list()

tree copy_list ( tree list)
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().

◆ copy_node()

◆ crc32_string()

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

◆ crc32_unsigned_n()

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

◆ create_artificial_label()

tree create_artificial_label ( location_t loc)

◆ cst_and_fits_in_hwi()

◆ ctor_to_vec()

vec< tree, va_gc > * ctor_to_vec ( tree ctor)
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().

◆ decl_address_invariant_p()

◆ decl_address_ip_invariant_p()

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

◆ decl_assembler_name()

tree decl_assembler_name ( tree decl)
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().

◆ decl_comdat_group()

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.

◆ decl_comdat_group_id()

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

◆ decl_debug_args_insert()

vec< tree, va_gc > ** decl_debug_args_insert ( tree from)

◆ decl_debug_args_lookup()

vec< tree, va_gc > ** decl_debug_args_lookup ( tree from)

◆ decl_debug_expr_insert()

void decl_debug_expr_insert ( tree from,
tree to )
Insert a mapping FROM->TO in the debug expression hashtable.   

References debug_expr_for_decl, DECL_UID, and ggc_alloc().

◆ decl_debug_expr_lookup()

tree decl_debug_expr_lookup ( tree from)
Lookup a debug expression for FROM, and return it if we find one.   

References debug_expr_for_decl, DECL_UID, and NULL_TREE.

◆ decl_fini_priority_insert()

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

◆ decl_fini_priority_lookup()

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

◆ decl_function_context()

◆ decl_init_priority_insert()

void decl_init_priority_insert ( tree decl,
priority_type priority )

◆ decl_init_priority_lookup()

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

◆ decl_section_name()

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.

◆ decl_tls_model()

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

◆ decl_type_context()

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

◆ decl_value_expr_insert()

void decl_value_expr_insert ( tree from,
tree to )
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.

◆ decl_value_expr_lookup()

tree decl_value_expr_lookup ( tree from)
Lookup a value expression for FROM, and return it if we find one.   

References DECL_UID, NULL_TREE, and value_expr_for_decl.

◆ default_is_empty_record()

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.

◆ double_int_to_tree()

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

◆ drop_tree_overflow()

◆ dump_tree_statistics()

◆ element_mode()

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

◆ element_precision()

◆ error_unavailable_use()

void error_unavailable_use ( tree node,
tree attr )

◆ excess_precision_type()

◆ expr_type_first_operand_type_p()

bool expr_type_first_operand_type_p ( tree_code code)
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().

◆ find_atomic_core_type()

static tree find_atomic_core_type ( const_tree type)
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().

◆ find_placeholder_in_expr()

void find_placeholder_in_expr ( tree exp,
vec< tree > * refs )
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().

◆ find_var_from_fn()

static tree find_var_from_fn ( tree * tp,
int * walk_subtrees,
void * data )
static
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.

◆ first_field()

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

◆ fixed_zerop()

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

◆ flexible_array_type_p()

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

◆ fndecl_dealloc_argno()

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.

◆ force_fit_type()

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

◆ free_node()

◆ get_attr_nonstring_decl()

tree get_attr_nonstring_decl ( tree expr,
tree * ref )
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().

◆ get_base_address()

tree get_base_address ( tree t)
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().

◆ get_binfo_at_offset()

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

◆ get_call_combined_fn()

◆ get_callee_fndecl()

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

◆ get_containing_scope()

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

◆ get_file_function_name()

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

◆ get_initializer_for()

static tree get_initializer_for ( tree init,
tree decl )
static
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().

◆ get_int_cst_ext_nunits()

static unsigned int get_int_cst_ext_nunits ( tree type,
const wide_int & cst )
static
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().

◆ get_name()

◆ get_narrower()

tree get_narrower ( tree op,
int * unsignedp_ptr )
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().

◆ get_nonnull_args()

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

◆ get_qualified_type()

tree get_qualified_type ( tree type,
int type_quals )
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().

◆ get_range_pos_neg()

◆ get_ref_from_access_with_size()

tree get_ref_from_access_with_size ( tree call)
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.

◆ get_stats_node_kind()

◆ get_target_clone_attr_len()

int get_target_clone_attr_len ( tree arglist)
Return length of attribute names string,
if arglist chain > 1, -1 otherwise.   

References TREE_CHAIN, TREE_STRING_POINTER, and TREE_VALUE.

Referenced by expand_target_clones().

◆ get_tree_code_name()

◆ get_type_static_bounds()

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

◆ get_typenode_from_name()

◆ get_ultimate_context()

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

◆ get_unwidened()

tree get_unwidened ( tree op,
tree for_type )
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().

◆ gimple_canonical_types_compatible_p()

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, 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_tree_vec()

tree grow_tree_vec ( tree v,
int len MEM_STAT_DECL )
Grow a TREE_VEC node to new length LEN.   

References gcc_assert, ggc_realloc(), PASS_MEM_STAT, record_node_allocation_statistics(),