GCC Middle and Back End API Reference
|
Data Structures | |
class | hash |
Functions | |
void | add_expr (const_tree t, inchash::hash &hstate, unsigned int flags) |
void | add_rtx (const_rtx x, hash &hstate) |
static void | add_expr_commutative (const_tree t1, const_tree t2, hash &hstate) |
static void | add_hashable_expr (const struct hashable_expr *expr, hash &hstate) |
void | add_vrange (const vrange &v, inchash::hash &hstate, unsigned int) |
void | add_vrange (const vrange &, hash &, unsigned flags=0) |
void | add_path_var (path_var pv, hash &hstate) |
Incremential hashing for jhash. Copyright (C) 2014-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/>.
RTL hash functions. 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/>.
Register Transfer Language (RTL) hash functions. 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/>.
Generate a hash value for a pair of expressions. This can be used iteratively by passing a previous result in HSTATE. The same hash value is always returned for a given pair of expressions, regardless of the order in which they are presented. This is useful in hashing the operands of commutative functions.
void inchash::add_expr | ( | const_tree | t, |
inchash::hash & | hstate, | ||
unsigned int | flags ) |
Generate a hash value for an expression. This can be used iteratively by passing a previous result as the HSTATE argument. This function is intended to produce the same hash for expressions which would compare equal using operand_equal_p.
References default_compare_instance, and operand_compare::hash_operand().
Referenced by add_expr_commutative(), add_hashable_expr(), avail_expr_hash(), build_bitint_type(), build_nonstandard_integer_type(), default_hash_traits< scalar_cond_masked_key >::hash(), refs_hasher::hash(), sanopt_tree_couple_hash::hash(), sanopt_tree_triplet_hash::hash(), operand_compare::hash_operand(), iterative_hash_expr(), same_succ_hash(), vn_hash_constant_with_type(), vn_nary_op_compute_hash(), vn_phi_compute_hash(), vn_reference_compute_hash(), and vn_reference_op_compute_hash().
|
static |
References inchash::hash::add_commutative(), and add_expr().
Referenced by add_hashable_expr().
|
static |
Compute a hash value for a hashable_expr value EXPR and a previously accumulated hash value VAL. If two hashable_expr values compare equal with hashable_expr_equal_p, they must hash to the same value, given an identical value of VAL. The logic is intended to follow inchash::add_expr in tree.cc.
References add_expr(), add_expr_commutative(), inchash::hash::add_int(), inchash::hash::add_object(), commutative_ternary_tree_code(), commutative_tree_code(), CONVERT_EXPR_CODE_P, EXPR_BINARY, EXPR_CALL, EXPR_PHI, EXPR_SINGLE, EXPR_TERNARY, EXPR_UNARY, gcc_unreachable, gimple_call_fn(), gimple_call_internal_fn(), gimple_call_internal_p(), i, inchash::hash::merge_hash(), expr::ops, operand::type, and TYPE_UNSIGNED.
Referenced by avail_expr_hash().
Iteratively hash rtx X into HSTATE.
References inchash::hash::add(), inchash::hash::add_hwi(), inchash::hash::add_int(), inchash::hash::add_object(), inchash::hash::add_poly_int(), add_rtx(), inchash::hash::add_wide_int(), CONST_POLY_INT_COEFFS, CONST_WIDE_INT_ELT, CONST_WIDE_INT_NUNITS, GET_CODE, GET_MODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, INTVAL, NULL_RTX, NUM_POLY_INT_COEFFS, REGNO, SUBREG_BYTE, XEXP, XINT, XSTR, XVECEXP, XVECLEN, and XWINT.
Referenced by add_rtx(), and addr_hasher::hash().
void inchash::add_vrange | ( | const vrange & | v, |
inchash::hash & | hstate, | ||
unsigned int | ) |
References inchash::hash::add_int(), inchash::hash::add_real_value(), inchash::hash::add_wide_int(), as_a(), gcc_unreachable, i, is_a< frange >(), is_a< irange >(), is_a< prange >(), irange_bitmask::mask(), nan_state::neg_p(), nan_state::pos_p(), r, vrange::undefined_p(), irange_bitmask::value(), VR_NAN, VR_RANGE, VR_UNDEFINED, and VR_VARYING.
Referenced by ipa_get_value_range().