20#ifndef GCC_FOLD_CONST_H
21#define GCC_FOLD_CONST_H
37 int off = -1,
unsigned char * =
nullptr);
39 unsigned char *,
int,
int off = -1);
41 unsigned char *,
int,
int off = -1);
60#define fold_unary(CODE,T1,T2)\
61 fold_unary_loc (UNKNOWN_LOCATION, CODE, T1, T2)
63#define fold_unary_ignore_overflow(CODE,T1,T2)\
64 fold_unary_ignore_overflow_loc (UNKNOWN_LOCATION, CODE, T1, T2)
66#define fold_binary(CODE,T1,T2,T3)\
67 fold_binary_loc (UNKNOWN_LOCATION, CODE, T1, T2, T3)
69#define fold_ternary(CODE,T1,T2,T3,T4)\
70 fold_ternary_loc (UNKNOWN_LOCATION, CODE, T1, T2, T3, T4)
72#define fold_build1(c,t1,t2)\
73 fold_build1_loc (UNKNOWN_LOCATION, c, t1, t2 MEM_STAT_INFO)
76#define fold_build2(c,t1,t2,t3)\
77 fold_build2_loc (UNKNOWN_LOCATION, c, t1, t2, t3 MEM_STAT_INFO)
80#define fold_build3(c,t1,t2,t3,t4)\
81 fold_build3_loc (UNKNOWN_LOCATION, c, t1, t2, t3, t4 MEM_STAT_INFO)
86#define fold_build_call_array(T1,T2,N,T4)\
87 fold_build_call_array_loc (UNKNOWN_LOCATION, T1, T2, N, T4)
89#define fold_build_call_array_initializer(T1,T2,N,T4)\
90 fold_build_call_array_initializer_loc (UNKNOWN_LOCATION, T1, T2, N, T4)
96#define fold_convert(T1,T2)\
97 fold_convert_loc (UNKNOWN_LOCATION, T1, T2)
106#define omit_one_operand(T1,T2,T3)\
107 omit_one_operand_loc (UNKNOWN_LOCATION, T1, T2, T3)
109#define omit_two_operands(T1,T2,T3,T4)\
110 omit_two_operands_loc (UNKNOWN_LOCATION, T1, T2, T3, T4)
112#define invert_truthvalue(T)\
113 invert_truthvalue_loc (UNKNOWN_LOCATION, T)
122#if GCC_VEC_PERN_INDICES_H
133#define build_fold_addr_expr(T)\
134 build_fold_addr_expr_loc (UNKNOWN_LOCATION, (T))
136#define build_fold_addr_expr_with_type(T,TYPE)\
137 build_fold_addr_expr_with_type_loc (UNKNOWN_LOCATION, (T), TYPE)
140#define build_fold_indirect_ref(T)\
141 build_fold_indirect_ref_loc (UNKNOWN_LOCATION, T)
143#define fold_indirect_ref(T)\
144 fold_indirect_ref_loc (UNKNOWN_LOCATION, T)
147#define build_simple_mem_ref(T)\
148 build_simple_mem_ref_loc (UNKNOWN_LOCATION, T)
188#define round_up(T,N) round_up_loc (UNKNOWN_LOCATION, T, N)
190#define round_down(T,N) round_down_loc (UNKNOWN_LOCATION, T, N)
193#define size_binop(CODE,T1,T2)\
194 size_binop_loc (UNKNOWN_LOCATION, CODE, T1, T2)
196#define size_diffop(T1,T2)\
197 size_diffop_loc (UNKNOWN_LOCATION, T1, T2)
201#define non_lvalue(T) non_lvalue_loc (UNKNOWN_LOCATION, T)
241#define convert_to_ptrofftype(t) convert_to_ptrofftype_loc (UNKNOWN_LOCATION, t)
246#define fold_build_pointer_plus(p,o) \
247 fold_build_pointer_plus_loc (UNKNOWN_LOCATION, p, o)
252#define fold_build_pointer_plus_hwi(p,o) \
253 fold_build_pointer_plus_hwi_loc (UNKNOWN_LOCATION, p, o)
Definition genmatch.cc:1625
Definition fold-const.h:280
virtual bool operand_equal_p(const_tree, const_tree, unsigned int flags)
Definition fold-const.cc:3185
bool verify_hash_value(const_tree arg0, const_tree arg1, unsigned int flags, bool *ret)
Definition fold-const.cc:4296
virtual void hash_operand(const_tree, inchash::hash &, unsigned flags)
Definition fold-const.cc:3986
Definition machmode.h:465
Definition vec-perm-indices.h:51
const union tree_node * const_tree
Definition coretypes.h:98
union tree_node * tree
Definition coretypes.h:97
bool integer_valued_real_single_p(tree t, int depth)
Definition fold-const.cc:15376
bool tree_unary_nonnegative_p(enum tree_code code, tree type, tree op0, int depth)
Definition fold-const.cc:14568
tree native_interpret_expr(tree type, const unsigned char *ptr, int len)
Definition fold-const.cc:8784
tree size_diffop_loc(location_t loc, tree arg0, tree arg1)
Definition fold-const.cc:2068
tree const_binop(enum tree_code code, tree type, tree arg1, tree arg2)
Definition fold-const.cc:1713
bool inverse_conditions_p(const_tree cond1, const_tree cond2)
Definition fold-const.cc:2967
tree round_up_loc(location_t loc, tree value, unsigned int divisor)
Definition fold-const.cc:16138
int native_encode_real(scalar_float_mode mode, const REAL_VALUE_TYPE *val, unsigned char *ptr, int len, int off)
Definition fold-const.cc:7658
enum tree_code invert_tree_comparison(enum tree_code code, bool honor_nans)
Definition fold-const.cc:2802
#define tree_expr_nonnegative_p(X, Y)
Definition fold-const.cc:14544
bool tree_binary_nonnegative_p(enum tree_code code, tree type, tree op0, tree op1, int depth)
Definition fold-const.cc:14628
tree fold_build3_loc(location_t loc, enum tree_code code, tree type, tree op0, tree op1, tree op2 MEM_STAT_DECL)
Definition fold-const.cc:13830
tree range_check_type(tree etype)
Definition fold-const.cc:5617
#define integer_valued_real_p(X)
Definition fold-const.cc:15266
tree exact_inverse(tree type, tree cst)
Definition fold-const.cc:10728
bool multiple_of_p(tree type, const_tree top, const_tree bottom, bool nowrap)
Definition fold-const.cc:14084
tree vector_const_binop(tree_code code, tree arg1, tree arg2, tree(*elt_const_binop)(enum tree_code, tree, tree))
Definition fold-const.cc:1315
enum tree_code fold_div_compare(enum tree_code code, tree c1, tree c2, tree *lo, tree *hi, bool *neg_overflow)
Definition fold-const.cc:7195
enum tree_code combine_comparisons(enum tree_code code, enum tree_code lcode, enum tree_code rcode, tree truth_type, bool honor_nans, tree *res)
Definition fold-const.cc:2988
tree fold_ternary_loc(location_t loc, enum tree_code code, tree type, tree op0, tree op1, tree op2)
Definition fold-const.cc:12753
tree find_bitfield_repr_type(int fieldsize, int len)
Definition fold-const.cc:7950
bool tree_swap_operands_p(const_tree arg0, const_tree arg1)
Definition fold-const.cc:7289
tree fold_build1_initializer_loc(location_t loc, enum tree_code code, tree type, tree op)
Definition fold-const.cc:13983
tree non_lvalue_loc(location_t loc, tree x)
Definition fold-const.cc:2784
tree fold_init(tree expr)
Definition fold-const.cc:13971
tree fold_unary_to_constant(enum tree_code code, tree type, tree op0)
Definition fold-const.cc:15512
tree convert_to_ptrofftype_loc(location_t loc, tree off)
Definition fold-const.cc:16351
tree build_fold_addr_expr_loc(location_t loc, tree t)
Definition fold-const.cc:9228
bool poly_int_binop(poly_wide_int &res, enum tree_code code, const_tree arg1, const_tree arg2, signop sign, wi::overflow_type *overflow)
Definition fold-const.cc:1171
bool tree_expr_signaling_nan_p(const_tree x)
Definition fold-const.cc:14362
tree int_const_binop(enum tree_code code, const_tree arg1, const_tree arg2, int overflowable)
Definition fold-const.cc:1249
tree size_int_kind(poly_int64 number, enum size_type_kind kind)
Definition fold-const.cc:2005
tree invert_truthvalue_loc(location_t loc, tree arg)
Definition fold-const.cc:4767
tree fold_unary_ignore_overflow_loc(location_t loc, enum tree_code code, tree type, tree op0)
Definition fold-const.cc:9638
tree make_range_step(location_t loc, enum tree_code code, tree arg0, tree arg1, tree exp_type, tree *p_low, tree *p_high, int *p_in_p)
Definition fold-const.cc:5230
bool tree_binary_nonzero_p(enum tree_code code, tree type, tree op0, tree op1)
Definition fold-const.cc:15151
tree size_binop_loc(location_t loc, enum tree_code code, tree arg0, tree arg1)
Definition fold-const.cc:2016
bool may_negate_without_overflow_p(const_tree t)
Definition fold-const.cc:395
int native_encode_wide_int(tree type, const wide_int_ref &val, unsigned char *ptr, int len, int off)
Definition fold-const.cc:7544
bool integer_valued_real_unary_p(tree_code code, tree op0, int depth)
Definition fold-const.cc:15279
bool operand_equal_p(const_tree arg0, const_tree arg1, unsigned int flags)
Definition fold-const.cc:4333
tree get_array_ctor_element_at_index(tree ctor, offset_int access_index, unsigned *ctor_idx)
Definition fold-const.cc:13253
bool fold_convertible_p(const_tree type, const_tree arg)
Definition fold-const.cc:2512
tree build_fold_addr_expr_with_type_loc(location_t loc, tree t, tree ptrtype)
Definition fold-const.cc:9186
bool tree_unary_nonzero_p(enum tree_code code, tree type, tree op0)
Definition fold-const.cc:15119
tree int_const_convert(tree type, const_tree arg1, int overflowable)
Definition fold-const.cc:2116
tree fold_read_from_constant_string(tree exp)
Definition fold-const.cc:15523
bool fold_real_zero_addition_p(const_tree type, const_tree arg, const_tree zero_arg, int negate)
Definition fold-const.cc:7066
tree fold_build_call_array_loc(location_t loc, tree type, tree fn, int nargs, tree *argarray)
Definition fold-const.cc:13898
tree native_interpret_aggregate(tree type, const unsigned char *ptr, int off, int len)
Definition fold-const.cc:8860
tree make_bit_field_ref(location_t loc, tree inner, tree orig_inner, tree type, HOST_WIDE_INT bitsize, poly_int64 bitpos, int unsignedp, int reversep)
Definition fold-const.cc:4786
bool tree_expr_nonzero_p(tree t)
Definition fold-const.cc:10785
tree fold_vec_perm(tree type, tree arg0, tree arg1, const vec_perm_indices &sel)
Definition fold-const.cc:10637
int address_compare(tree_code code, tree type, tree op0, tree op1, tree &base0, tree &base1, poly_int64 &off0, poly_int64 &off1, bool generic)
Definition fold-const.cc:16569
tree fold_bit_and_mask(tree type, tree arg1, enum tree_code code, tree arg00, enum tree_code code00, tree arg000, tree arg001, tree arg01, enum tree_code code01, tree arg010, tree arg011, tree *pmop)
Definition fold-const.cc:12612
bool simple_condition_p(tree exp)
Definition fold-const.cc:5108
tree fold_unary_loc(location_t loc, enum tree_code code, tree type, tree op0)
Definition fold-const.cc:9240
tree fold_build1_loc(location_t loc, enum tree_code code, tree type, tree op0 MEM_STAT_DECL)
Definition fold-const.cc:13740
const char * c_getstr(tree str)
Definition fold-const.cc:16468
const char * getbyterep(tree src, unsigned HOST_WIDE_INT *strsize)
Definition fold-const.cc:16386
tree_code minmax_from_comparison(tree_code cmp, tree exp0, const widest_int cst1, const widest_int cst2)
Definition fold-const.cc:199
tree fold_build_call_array_initializer_loc(location_t loc, tree type, tree fn, int nargs, tree *argarray)
Definition fold-const.cc:14009
tree omit_one_operand_loc(location_t loc, tree type, tree result, tree omitted)
Definition fold-const.cc:4562
tree fold_ignored_result(tree t)
Definition fold-const.cc:16087
bool tree_single_nonnegative_p(tree t, int depth)
Definition fold-const.cc:14747
tree native_interpret_real(tree type, const unsigned char *ptr, int len)
Definition fold-const.cc:8632
tree sign_bit_p(tree exp, const_tree val)
Definition fold-const.cc:5042
bool tree_expr_nan_p(const_tree x)
Definition fold-const.cc:14433
tree build_range_check(location_t loc, tree type, tree exp, int in_p, tree low, tree high)
Definition fold-const.cc:5659
bool tree_expr_maybe_infinite_p(const_tree x)
Definition fold-const.cc:14337
bool integer_valued_real_call_p(combined_fn fn, tree arg0, tree arg1, int depth)
Definition fold-const.cc:15337
bool tree_expr_finite_p(const_tree x)
Definition fold-const.cc:14259
tree fold_abs_const(tree arg0, tree type)
Definition fold-const.cc:15648
tree make_range(tree exp, int *pin_p, tree *plow, tree *phigh)
Definition fold-const.cc:5520
tree fold_build2_initializer_loc(location_t loc, enum tree_code code, tree type, tree op0, tree op1)
Definition fold-const.cc:13996
bool ptr_difference_const(tree e1, tree e2, poly_int64 *diff)
Definition fold-const.cc:16308
tree fold_build_pointer_plus_hwi_loc(location_t loc, tree ptr, HOST_WIDE_INT off)
Definition fold-const.cc:16368
bool tree_expr_maybe_nan_p(const_tree x)
Definition fold-const.cc:14457
bool tree_expr_maybe_signaling_nan_p(const_tree x)
Definition fold-const.cc:14386
bool expr_not_equal_to(tree t, const wide_int &w, gimple *stmt)
Definition fold-const.cc:10867
tree const_unop(enum tree_code code, tree type, tree arg0)
Definition fold-const.cc:1844
bool integer_valued_real_binary_p(tree_code code, tree op0, tree op1, int depth)
Definition fold-const.cc:15312
int native_encode_expr(const_tree expr, unsigned char *ptr, int len, int off)
Definition fold-const.cc:7909
bool tree_expr_maybe_real_minus_zero_p(const_tree x)
Definition fold-const.cc:14509
int native_encode_initializer(tree init, unsigned char *ptr, int len, int off, unsigned char *mask)
Definition fold-const.cc:7993
bool tree_expr_infinite_p(const_tree x)
Definition fold-const.cc:14311
bool fold_cmp_float_cst_p(wide_int lo, wide_int hi, enum tree_code cmp, const REAL_VALUE_TYPE *r, format_helper fmt, wide_int i, signop isign)
Definition fold-const.cc:7115
tree fold_build_pointer_plus_loc(location_t loc, tree ptr, tree off)
Definition fold-const.cc:16360
tree fold_build_cleanup_point_expr(tree type, tree expr)
Definition fold-const.cc:15874
tree round_down_loc(location_t loc, tree value, int divisor)
Definition fold-const.cc:16200
tree constant_boolean_node(bool value, tree type)
Definition fold-const.cc:6943
tree fold_binary_initializer_loc(location_t loc, tree_code code, tree type, tree lhs, tree rhs)
Definition fold-const.cc:14022
bool merge_ranges(int *pin_p, tree *plow, tree *phigh, int in0_p, tree low0, tree high0, int in1_p, tree low1, tree high1)
Definition fold-const.cc:5789
tree ctor_single_nonzero_element(const_tree t)
Definition fold-const.cc:16779
enum tree_code swap_tree_comparison(enum tree_code code)
Definition fold-const.cc:2847
tree fold_convert_loc(location_t loc, tree type, tree arg)
Definition fold-const.cc:2557
bool negate_mathfn_p(combined_fn fn)
Definition fold-const.cc:314
void shift_bytes_in_array_left(unsigned char *ptr, unsigned int sz, unsigned int amnt)
Definition fold-const.cc:9030
tree fold(tree expr)
Definition fold-const.cc:13372
tree fold_indirect_ref_loc(location_t loc, tree t)
Definition fold-const.cc:16072
tree fold_build2_loc(location_t loc, enum tree_code code, tree type, tree op0, tree op1 MEM_STAT_DECL)
Definition fold-const.cc:13777
tree build_fold_indirect_ref_loc(location_t loc, tree t)
Definition fold-const.cc:16058
tree fold_read_from_vector(tree arg, poly_uint64 idx)
Definition fold-const.cc:15574
bool can_native_interpret_type_p(tree type)
Definition fold-const.cc:8836
tree fold_binary_loc(location_t loc, enum tree_code code, tree type, tree op0, tree op1)
Definition fold-const.cc:10900
tree fold_binary_to_constant(enum tree_code code, tree type, tree op0, tree op1)
Definition fold-const.cc:15497
bool folding_cxx_constexpr
Definition fold-const.cc:100
wide_int tree_nonzero_bits(const_tree t)
Definition fold-const.cc:16552
bool wide_int_binop(wide_int &res, enum tree_code code, const wide_int &arg1, const wide_int &arg2, signop sign, wi::overflow_type *overflow)
Definition fold-const.cc:1014
tree omit_two_operands_loc(location_t loc, tree type, tree result, tree omitted1, tree omitted2)
Definition fold-const.cc:4589
void shift_bytes_in_array_right(unsigned char *ptr, unsigned int sz, unsigned int amnt)
Definition fold-const.cc:9063
tree fold_indirect_ref_1(location_t loc, tree type, tree op0)
Definition fold-const.cc:15904
bool tree_call_nonnegative_p(tree type, combined_fn fn, tree arg0, tree arg1, int depth)
Definition fold-const.cc:14798
int folding_initializer
Definition fold-const.cc:94
bool tree_single_nonzero_p(tree t)
Definition fold-const.cc:15215
tree build_simple_mem_ref_loc(location_t, tree)
Definition tree.cc:5485
bool arith_overflowed_p(enum tree_code, const_tree, const_tree, const_tree)
Definition gimple-fold.cc:5936
tree build_invariant_address(tree, tree, poly_int64)
Definition tree.cc:5526
void debug_fold_checksum(const_tree)
tree fold_truth_andor_for_ifcombine(enum tree_code, tree, location_t, enum tree_code, tree, tree, location_t, enum tree_code, tree, tree, tree *)
Definition gimple-fold.cc:8414
void clear_type_padding_in_mask(tree, unsigned char *)
Definition gimple-fold.cc:5250
poly_offset_int mem_ref_offset(const_tree)
Definition tree.cc:5516
bool clear_padding_type_may_have_padding_p(tree)
Definition gimple-fold.cc:4851
bool safe_operand_equal_p(const_tree op0, const_tree op1, unsigned int flags=0)
Definition fold-const.h:308
combined_fn
Definition genmatch.cc:1029
tree_code
Definition genmatch.cc:1011
overflow_type
Definition wide-int.h:377
poly_int< NUM_POLY_INT_COEFFS, offset_int > poly_offset_int
Definition poly-int-types.h:26
poly_int< NUM_POLY_INT_COEFFS, unsigned HOST_WIDE_INT > poly_uint64
Definition poly-int-types.h:25
poly_int< NUM_POLY_INT_COEFFS, wide_int > poly_wide_int
Definition poly-int-types.h:27
poly_int< NUM_POLY_INT_COEFFS, HOST_WIDE_INT > poly_int64
Definition poly-int-types.h:24
poly_int< N, C > r
Definition poly-int.h:774
i
Definition poly-int.h:776
#define REAL_VALUE_TYPE
Definition real.h:68
signop
Definition signop.h:28
#define CXX_MEM_STAT_INFO
Definition statistics.h:58
Definition gengtype.h:252
#define NULL
Definition system.h:58
size_type_kind
Definition tree-core.h:1013
generic_wide_int< widest_int_storage< WIDEST_INT_MAX_PRECISION > > widest_int
Definition wide-int.h:345
generic_wide_int< wide_int_ref_storage< false > > wide_int_ref
Definition wide-int.h:353
generic_wide_int< wide_int_storage > wide_int
Definition wide-int.h:343