re PR lto/85574 (LTO bootstapped binaries differ)
authorJan Hubicka <hubicka@ucw.cz>
Thu, 3 Jan 2019 12:23:27 +0000 (13:23 +0100)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 3 Jan 2019 12:23:27 +0000 (12:23 +0000)
2019-01-03  Jan Hubicka  <hubicka@ucw.cz>

PR tree-optimization/85574
* tree-ssa-uncprop.c (struct equiv_hash_elt): Remove unused
structure.
(struct ssa_equip_hash_traits): Declare.
(val_ssa_equiv): Use custom hash traits using operand_equal_p.

From-SVN: r267552

gcc/ChangeLog
gcc/tree-ssa-uncprop.c

index 4eec4b5..1cf696b 100644 (file)
@@ -1,3 +1,11 @@
+2019-01-03  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR tree-optimization/85574
+       * tree-ssa-uncprop.c (struct equiv_hash_elt): Remove unused
+       structure.
+       (struct ssa_equip_hash_traits): Declare.
+       (val_ssa_equiv): Use custom hash traits using operand_equal_p.
+
 2019-01-03  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/88644
index a6b7950..b9b05ed 100644 (file)
@@ -268,21 +268,24 @@ associate_equivalences_with_edges (void)
    so with each value we have a list of SSA_NAMEs that have the
    same value.  */
 
-
-/* Main structure for recording equivalences into our hash table.  */
-struct equiv_hash_elt
+/* Traits for the hash_map to record the value to SSA name equivalences
+   mapping.  */
+struct ssa_equip_hash_traits : default_hash_traits <tree>
 {
-  /* The value/key of this entry.  */
-  tree value;
-
-  /* List of SSA_NAMEs which have the same value/key.  */
-  vec<tree> equivalences;
+  static inline hashval_t hash (value_type value)
+    { return iterative_hash_expr (value, 0); }
+  static inline bool equal (value_type existing, value_type candidate)
+    { return operand_equal_p (existing, candidate, 0); }
 };
 
+typedef hash_map<tree, auto_vec<tree>,
+                simple_hashmap_traits <ssa_equip_hash_traits,
+                                       auto_vec <tree> > > val_ssa_equiv_t;
+
 /* Global hash table implementing a mapping from invariant values
    to a list of SSA_NAMEs which have the same value.  We might be
    able to reuse tree-vn for this code.  */
-static hash_map<tree, auto_vec<tree> > *val_ssa_equiv;
+val_ssa_equiv_t *val_ssa_equiv;
 
 static void uncprop_into_successor_phis (basic_block);
 
@@ -476,7 +479,7 @@ pass_uncprop::execute (function *fun)
   associate_equivalences_with_edges ();
 
   /* Create our global data structures.  */
-  val_ssa_equiv = new hash_map<tree, auto_vec<tree> > (1024);
+  val_ssa_equiv = new val_ssa_equiv_t (1024);
 
   /* We're going to do a dominator walk, so ensure that we have
      dominance information.  */