GCC Middle and Back End API Reference
inchash Namespace 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)
 

Detailed Description

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.   

Function Documentation

◆ add_expr()

void inchash::add_expr ( const_tree t,
inchash::hash & hstate,
unsigned int flags )

◆ add_expr_commutative()

static void inchash::add_expr_commutative ( const_tree t1,
const_tree t2,
hash & hstate )
static

References add_expr(), and ggc_alloc().

Referenced by add_hashable_expr().

◆ add_hashable_expr()

static void inchash::add_hashable_expr ( const struct hashable_expr * expr,
hash & hstate )
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(), 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, ggc_alloc(), gimple_call_fn(), gimple_call_internal_fn(), gimple_call_internal_p(), i, expr::ops, operand::type, and TYPE_UNSIGNED.

Referenced by avail_expr_hash().

◆ add_path_var()

void inchash::add_path_var ( path_var pv,
hash & hstate )
extern

◆ add_rtx()

◆ add_vrange() [1/2]

void inchash::add_vrange ( const vrange & ,
hash & ,
unsigned flags = 0 )
extern

◆ add_vrange() [2/2]