PR c++/68795: fix uninitialized close_paren_loc in cp_parser_postfix_expression
[gcc.git] / gcc / tree-hash-traits.h
index 9a2fda7bac69b13530e528269f07b89380c9b31c..ed63453c6b12d809e2fc898ded820f9d1b72fee9 100644 (file)
@@ -1,5 +1,5 @@
 /* Traits for hashing trees.
-   Copyright (C) 2014-2015 Free Software Foundation, Inc.
+   Copyright (C) 2014-2016 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -23,18 +23,20 @@ along with GCC; see the file COPYING3.  If not see
 /* Hash for trees based on operand_equal_p.  */
 struct tree_operand_hash : ggc_ptr_hash <tree_node>
 {
-  static inline hashval_t hash (const_tree);
-  static inline bool equal_keys (const_tree, const_tree);
+  static inline hashval_t hash (const value_type &);
+  static inline bool equal (const value_type &,
+                           const compare_type &);
 };
 
 inline hashval_t
-tree_operand_hash::hash (const_tree t)
+tree_operand_hash::hash (const value_type &t)
 {
   return iterative_hash_expr (t, 0);
 }
 
 inline bool
-tree_operand_hash::equal_keys (const_tree t1, const_tree t2)
+tree_operand_hash::equal (const value_type &t1,
+                         const compare_type &t2)
 {
   return operand_equal_p (t1, t2, 0);
 }
@@ -53,4 +55,30 @@ tree_decl_hash::hash (tree t)
   return DECL_UID (t);
 }
 
+/* Hash for SSA_NAMEs in the same function.  Pointer equality is enough
+   here, but the SSA_NAME_VERSION is a better hash than the pointer
+   value and gives a predictable traversal order.  */
+struct tree_ssa_name_hash : ggc_ptr_hash <tree_node>
+{
+  static inline hashval_t hash (tree);
+};
+
+inline hashval_t
+tree_ssa_name_hash::hash (tree t)
+{
+  return SSA_NAME_VERSION (t);
+}
+
+/* Hasher for general trees, based on their TREE_HASH.  */
+struct tree_hash : ggc_ptr_hash <tree_node>
+{
+  static hashval_t hash (tree);
+};
+
+inline hashval_t
+tree_hash::hash (tree t)
+{
+  return TREE_HASH (t);
+}
+
 #endif