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)
60#define fold_unary(CODE,T1,T2)\ …
63#define fold_unary_ignore_overflow(CODE,T1,T2)\
64 fold_unary_ignore_overflow_loc (UNKNOWN_LOCATION, CODE, T1, T2)
63#define fold_unary_ignore_overflow(CODE,T1,T2)\ …
66#define fold_binary(CODE,T1,T2,T3)\
67 fold_binary_loc (UNKNOWN_LOCATION, CODE, T1, T2, T3)
66#define fold_binary(CODE,T1,T2,T3)\ …
69#define fold_ternary(CODE,T1,T2,T3,T4)\
70 fold_ternary_loc (UNKNOWN_LOCATION, CODE, T1, T2, T3, T4)
69#define fold_ternary(CODE,T1,T2,T3,T4)\ …
72#define fold_build1(c,t1,t2)\
73 fold_build1_loc (UNKNOWN_LOCATION, c, t1, t2 MEM_STAT_INFO)
72#define fold_build1(c,t1,t2)\ …
76#define fold_build2(c,t1,t2,t3)\
77 fold_build2_loc (UNKNOWN_LOCATION, c, t1, t2, t3 MEM_STAT_INFO)
76#define fold_build2(c,t1,t2,t3)\ …
80#define fold_build3(c,t1,t2,t3,t4)\
81 fold_build3_loc (UNKNOWN_LOCATION, c, t1, t2, t3, t4 MEM_STAT_INFO)
80#define fold_build3(c,t1,t2,t3,t4)\ …
86#define fold_build_call_array(T1,T2,N,T4)\
87 fold_build_call_array_loc (UNKNOWN_LOCATION, T1, T2, N, T4)
86#define fold_build_call_array(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)
89#define fold_build_call_array_initializer(T1,T2,N,T4)\ …
96#define fold_convert(T1,T2)\
97 fold_convert_loc (UNKNOWN_LOCATION, T1, T2)
96#define fold_convert(T1,T2)\ …
111#define omit_one_operand(T1,T2,T3)\
112 omit_one_operand_loc (UNKNOWN_LOCATION, T1, T2, T3)
111#define omit_one_operand(T1,T2,T3)\ …
114#define omit_two_operands(T1,T2,T3,T4)\
115 omit_two_operands_loc (UNKNOWN_LOCATION, T1, T2, T3, T4)
114#define omit_two_operands(T1,T2,T3,T4)\ …
117#define invert_truthvalue(T)\
118 invert_truthvalue_loc (UNKNOWN_LOCATION, T)
117#define invert_truthvalue(T)\ …
127#if GCC_VEC_PERN_INDICES_H
137#define build_fold_addr_expr(T)\
138 build_fold_addr_expr_loc (UNKNOWN_LOCATION, (T))
137#define build_fold_addr_expr(T)\ …
140#define build_fold_addr_expr_with_type(T,TYPE)\
141 build_fold_addr_expr_with_type_loc (UNKNOWN_LOCATION, (T), TYPE)
140#define build_fold_addr_expr_with_type(T,TYPE)\ …
144#define build_fold_indirect_ref(T)\
145 build_fold_indirect_ref_loc (UNKNOWN_LOCATION, T)
144#define build_fold_indirect_ref(T)\ …
147#define fold_indirect_ref(T)\
148 fold_indirect_ref_loc (UNKNOWN_LOCATION, T)
147#define fold_indirect_ref(T)\ …
151#define build_simple_mem_ref(T)\
152 build_simple_mem_ref_loc (UNKNOWN_LOCATION, T)
151#define build_simple_mem_ref(T)\ …
189#define round_up(T,N) round_up_loc (UNKNOWN_LOCATION, T, N)
191#define round_down(T,N) round_down_loc (UNKNOWN_LOCATION, T, N)
194#define size_binop(CODE,T1,T2)\
195 size_binop_loc (UNKNOWN_LOCATION, CODE, T1, T2)
194#define size_binop(CODE,T1,T2)\ …
197#define size_diffop(T1,T2)\
198 size_diffop_loc (UNKNOWN_LOCATION, T1, T2)
197#define size_diffop(T1,T2)\ …
202#define non_lvalue(T) non_lvalue_loc (UNKNOWN_LOCATION, T)
243#define convert_to_ptrofftype(t) convert_to_ptrofftype_loc (UNKNOWN_LOCATION, t)
248#define fold_build_pointer_plus(p,o) \
249 fold_build_pointer_plus_loc (UNKNOWN_LOCATION, p, o)
248#define fold_build_pointer_plus(p,o) \ …
254#define fold_build_pointer_plus_hwi(p,o) \
255 fold_build_pointer_plus_hwi_loc (UNKNOWN_LOCATION, p, o)
254#define fold_build_pointer_plus_hwi(p,o) \ …
Definition genmatch.cc:1506
Definition fold-const.h:279
virtual bool operand_equal_p(const_tree, const_tree, unsigned int flags)
Definition fold-const.cc:3188
bool verify_hash_value(const_tree arg0, const_tree arg1, unsigned int flags, bool *ret)
Definition fold-const.cc:4295
virtual void hash_operand(const_tree, inchash::hash &, unsigned flags)
Definition fold-const.cc:3985
Definition machmode.h:465
Definition vec-perm-indices.h:51
const union tree_node * const_tree
Definition coretypes.h:98
warn_strict_overflow_code
Definition coretypes.h:322
union tree_node * tree
Definition coretypes.h:97
#define integer_valued_real_p(X)
Definition fold-const.cc:15501
tree fold_vec_perm(tree type, tree arg0, tree arg1, const vec_perm_indices &sel)
Definition fold-const.cc:10675
#define tree_expr_nonnegative_warnv_p(X, Y)
Definition fold-const.cc:14691
bool folding_cxx_constexpr
Definition fold-const.cc:100
int folding_initializer
Definition fold-const.cc:94
bool can_native_interpret_type_p(tree)
Definition fold-const.cc:8780
tree build_simple_mem_ref_loc(location_t, tree)
Definition tree.cc:5377
tree fold_binary_loc(location_t, enum tree_code, tree, tree, tree)
Definition fold-const.cc:10965
bool tree_unary_nonnegative_warnv_p(enum tree_code, tree, tree, bool *, int)
Definition fold-const.cc:14717
tree fold_build3_loc(location_t, enum tree_code, tree, tree, tree, tree CXX_MEM_STAT_INFO)
bool tree_expr_maybe_nan_p(const_tree)
Definition fold-const.cc:14604
tree const_binop(enum tree_code, tree, tree, tree)
Definition fold-const.cc:1781
tree fold_build_call_array_initializer_loc(location_t, tree, tree, int, tree *)
Definition fold-const.cc:14156
tree find_bitfield_repr_type(int, int)
Definition fold-const.cc:7894
bool arith_overflowed_p(enum tree_code, const_tree, const_tree, const_tree)
Definition gimple-fold.cc:5719
tree build_fold_addr_expr_loc(location_t, tree)
Definition fold-const.cc:9172
tree invert_truthvalue_loc(location_t, tree)
Definition fold-const.cc:4766
tree omit_two_operands_loc(location_t, tree, tree, tree, tree)
Definition fold-const.cc:4588
tree fold_read_from_constant_string(tree)
Definition fold-const.cc:15758
tree size_binop_loc(location_t, enum tree_code, tree, tree)
Definition fold-const.cc:2084
bool tree_single_nonnegative_warnv_p(tree, bool *, int)
Definition fold-const.cc:14910
tree omit_one_operand_loc(location_t, tree, tree, tree)
Definition fold-const.cc:4561
bool fold_deferring_overflow_warnings_p(void)
Definition fold-const.cc:362
tree build_fold_addr_expr_with_type_loc(location_t, tree, tree)
Definition fold-const.cc:9130
tree ctor_single_nonzero_element(const_tree)
Definition fold-const.cc:16983
bool expr_not_equal_to(tree t, const wide_int &)
Definition fold-const.cc:10932
bool tree_swap_operands_p(const_tree, const_tree)
Definition fold-const.cc:7234
void fold_undefer_overflow_warnings(bool, const gimple *, int)
Definition fold-const.cc:310
void fold_defer_overflow_warnings(void)
Definition fold-const.cc:295
tree get_array_ctor_element_at_index(tree, offset_int, unsigned *=NULL)
Definition fold-const.cc:13400
tree convert_to_ptrofftype_loc(location_t loc, tree off)
Definition fold-const.cc:16573
int native_encode_real(scalar_float_mode, const REAL_VALUE_TYPE *, unsigned char *, int, int off=-1)
Definition fold-const.cc:7602
tree make_range(tree, int *, tree *, tree *, bool *)
Definition fold-const.cc:5521
bool operand_equal_p(const_tree, const_tree, unsigned int flags=0)
Definition fold-const.cc:4332
bool tree_unary_nonzero_warnv_p(enum tree_code, tree, tree, bool *)
Definition fold-const.cc:15294
tree build_invariant_address(tree, tree, poly_int64)
Definition tree.cc:5418
bool merge_ranges(int *, tree *, tree *, int, tree, tree, int, tree, tree)
Definition fold-const.cc:5789
tree fold_binary_to_constant(enum tree_code, tree, tree, tree)
Definition fold-const.cc:15732
bool integer_valued_real_binary_p(tree_code, tree, tree, int)
Definition fold-const.cc:15547
bool may_negate_without_overflow_p(const_tree)
Definition fold-const.cc:463
void debug_fold_checksum(const_tree)
int native_encode_initializer(tree, unsigned char *, int, int off=-1, unsigned char *=nullptr)
Definition fold-const.cc:7937
tree fold_build2_loc(location_t, enum tree_code, tree, tree, tree CXX_MEM_STAT_INFO)
bool tree_binary_nonzero_warnv_p(enum tree_code, tree, tree, tree op1, bool *)
Definition fold-const.cc:15334
const char * getbyterep(tree, unsigned HOST_WIDE_INT *)
Definition fold-const.cc:16608
int native_encode_expr(const_tree, unsigned char *, int, int off=-1)
Definition fold-const.cc:7853
tree fold_convert_loc(location_t, tree, tree)
Definition fold-const.cc:2623
wide_int tree_nonzero_bits(const_tree)
Definition fold-const.cc:16698
tree constant_boolean_node(bool, tree)
Definition fold-const.cc:6974
tree sign_bit_p(tree, const_tree)
Definition fold-const.cc:5041
tree fold_unary_to_constant(enum tree_code, tree, tree)
Definition fold-const.cc:15747
bool multiple_of_p(tree, const_tree, const_tree, bool=true)
Definition fold-const.cc:14231
bool tree_expr_nonnegative_p(tree)
Definition fold-const.cc:15270
void fold_undefer_and_ignore_overflow_warnings(void)
Definition fold-const.cc:354
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:8074
bool inverse_conditions_p(const_tree, const_tree)
Definition fold-const.cc:3029
enum tree_code invert_tree_comparison(enum tree_code, bool)
Definition fold-const.cc:2864
tree fold_indirect_ref_loc(location_t, tree)
Definition fold-const.cc:16307
tree round_up_loc(location_t, tree, unsigned int)
Definition fold-const.cc:16373
tree fold_build1_initializer_loc(location_t, enum tree_code, tree, tree)
Definition fold-const.cc:14130
tree fold_unary_ignore_overflow_loc(location_t, enum tree_code, tree, tree)
Definition fold-const.cc:9582
bool fold_real_zero_addition_p(const_tree, const_tree, const_tree, int)
Definition fold-const.cc:7097
bool tree_expr_finite_p(const_tree)
Definition fold-const.cc:14406
bool tree_expr_nonzero_p(tree)
Definition fold-const.cc:10915
tree fold_build_call_array_loc(location_t, tree, tree, int, tree *)
Definition fold-const.cc:14045
tree size_diffop_loc(location_t, tree, tree)
Definition fold-const.cc:2136
tree size_int_kind(poly_int64, enum size_type_kind)
Definition fold-const.cc:2073
tree int_const_binop(enum tree_code, const_tree, const_tree, int=1)
Definition fold-const.cc:1317
const char * c_getstr(tree)
Definition fold-const.cc:16690
bool tree_single_nonzero_warnv_p(tree, bool *)
Definition fold-const.cc:15442
bool integer_valued_real_call_p(combined_fn, tree, tree, int)
Definition fold-const.cc:15572
bool poly_int_binop(poly_wide_int &res, enum tree_code, const_tree, const_tree, signop, wi::overflow_type *)
Definition fold-const.cc:1239
tree fold_ternary_loc(location_t, enum tree_code, tree, tree, tree, tree)
Definition fold-const.cc:12900
tree fold_indirect_ref_1(location_t, tree, tree)
Definition fold-const.cc:16139
tree fold_build1_loc(location_t, enum tree_code, tree, tree CXX_MEM_STAT_INFO)
tree native_interpret_expr(tree, const unsigned char *, int)
Definition fold-const.cc:8728
tree fold_ignored_result(tree)
Definition fold-const.cc:16322
tree fold_build_pointer_plus_hwi_loc(location_t loc, tree ptr, HOST_WIDE_INT off)
Definition fold-const.cc:16590
tree make_range_step(location_t, enum tree_code, tree, tree, tree, tree *, tree *, int *, bool *)
Definition fold-const.cc:5224
int native_encode_wide_int(tree, const wide_int_ref &, unsigned char *, int, int off=-1)
Definition fold-const.cc:7488
tree fold_init(tree)
Definition fold-const.cc:14118
void clear_type_padding_in_mask(tree, unsigned char *)
Definition gimple-fold.cc:5232
tree fold_binary_initializer_loc(location_t, tree_code, tree, tree, tree)
Definition fold-const.cc:14169
tree make_bit_field_ref(location_t, tree, tree, tree, HOST_WIDE_INT, poly_int64, int, int)
Definition fold-const.cc:4785
tree vector_const_binop(enum tree_code, tree, tree, tree(*)(enum tree_code, tree, tree))
void shift_bytes_in_array_right(unsigned char *, unsigned int, unsigned int)
Definition fold-const.cc:9007
bool tree_binary_nonnegative_warnv_p(enum tree_code, tree, tree, tree, bool *, int)
Definition fold-const.cc:14783
tree fold_build_pointer_plus_loc(location_t loc, tree ptr, tree off)
Definition fold-const.cc:16582
tree fold_build_cleanup_point_expr(tree type, tree expr)
Definition fold-const.cc:16109
tree fold_read_from_vector(tree, poly_uint64)
Definition fold-const.cc:15809
tree fold_build2_initializer_loc(location_t, enum tree_code, tree, tree, tree)
Definition fold-const.cc:14143
bool tree_expr_maybe_real_minus_zero_p(const_tree)
Definition fold-const.cc:14656
tree div_if_zero_remainder(const_tree, const_tree)
Definition fold-const.cc:257
poly_offset_int mem_ref_offset(const_tree)
Definition tree.cc:5408
tree combine_comparisons(location_t, enum tree_code, enum tree_code, enum tree_code, tree, tree, tree)
Definition fold-const.cc:3049
bool tree_expr_nan_p(const_tree)
Definition fold-const.cc:14580
tree const_unop(enum tree_code, tree, tree)
Definition fold-const.cc:1912
tree exact_inverse(tree, tree)
Definition fold-const.cc:10767
tree build_range_check(location_t, tree, tree, int, tree, tree)
Definition fold-const.cc:5659
bool simple_condition_p(tree)
Definition fold-const.cc:5102
tree_code minmax_from_comparison(tree_code, tree, tree, tree, tree)
Definition fold-const.cc:156
bool negate_mathfn_p(combined_fn)
Definition fold-const.cc:390
enum tree_code swap_tree_comparison(enum tree_code)
Definition fold-const.cc:2909
tree non_lvalue_loc(location_t, tree)
Definition fold-const.cc:2846
bool tree_expr_infinite_p(const_tree)
Definition fold-const.cc:14458
bool ptr_difference_const(tree, tree, poly_int64 *)
Definition fold-const.cc:16530
bool clear_padding_type_may_have_padding_p(tree)
Definition gimple-fold.cc:4846
tree fold_bit_and_mask(tree, tree, enum tree_code, tree, enum tree_code, tree, tree, tree, enum tree_code, tree, tree, tree *)
Definition fold-const.cc:12759
bool tree_call_nonnegative_warnv_p(tree, combined_fn, tree, tree, bool *, int)
Definition fold-const.cc:14951
bool fold_convertible_p(const_tree, const_tree)
Definition fold-const.cc:2578
bool wide_int_binop(wide_int &res, enum tree_code, const wide_int &arg1, const wide_int &arg2, signop, wi::overflow_type *)
Definition fold-const.cc:1082
bool tree_expr_maybe_infinite_p(const_tree)
Definition fold-const.cc:14484
tree native_interpret_aggregate(tree, const unsigned char *, int, int)
Definition fold-const.cc:8804
int address_compare(tree_code, tree, tree, tree, tree &, tree &, poly_int64 &, poly_int64 &, bool)
Definition fold-const.cc:16773
tree native_interpret_real(tree, const unsigned char *, int)
Definition fold-const.cc:8576
void shift_bytes_in_array_left(unsigned char *, unsigned int, unsigned int)
Definition fold-const.cc:8974
void fold_overflow_warning(const char *, enum warn_strict_overflow_code)
Definition fold-const.cc:371
enum tree_code fold_div_compare(enum tree_code, tree, tree, tree *, tree *, bool *)
Definition fold-const.cc:7140
bool tree_expr_signaling_nan_p(const_tree)
Definition fold-const.cc:14509
tree range_check_type(tree)
Definition fold-const.cc:5619
tree fold_abs_const(tree, tree)
Definition fold-const.cc:15883
bool tree_expr_maybe_signaling_nan_p(const_tree)
Definition fold-const.cc:14533
bool integer_valued_real_unary_p(tree_code, tree, int)
Definition fold-const.cc:15514
tree build_fold_indirect_ref_loc(location_t, tree)
Definition fold-const.cc:16293
tree fold(tree)
Definition fold-const.cc:13519
tree fold_unary_loc(location_t, enum tree_code, tree, tree)
Definition fold-const.cc:9184
tree round_down_loc(location_t, tree, int)
Definition fold-const.cc:16435
bool integer_valued_real_single_p(tree, int)
Definition fold-const.cc:15611
combined_fn
Definition genmatch.cc:1020
tree_code
Definition genmatch.cc:1002
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
#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:50
size_type_kind
Definition tree-core.h:983
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