aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2019-01-03 13:23:27 +0100
committerRichard Biener <rguenth@gcc.gnu.org>2019-01-03 12:23:27 +0000
commit4a62f44193ab95288311d162c45dbd31a7930281 (patch)
treedd8b2512a93699bd03a1ba546488b7b898d2365f /gcc
parent5227609c33e649e337c44653039fff9aacc84e2f (diff)
downloadgcc-4a62f44193ab95288311d162c45dbd31a7930281.zip
gcc-4a62f44193ab95288311d162c45dbd31a7930281.tar.gz
gcc-4a62f44193ab95288311d162c45dbd31a7930281.tar.bz2
re PR lto/85574 (LTO bootstapped binaries differ)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/tree-ssa-uncprop.c23
2 files changed, 21 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4eec4b5..1cf696b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/tree-ssa-uncprop.c b/gcc/tree-ssa-uncprop.c
index a6b7950..b9b05ed 100644
--- a/gcc/tree-ssa-uncprop.c
+++ b/gcc/tree-ssa-uncprop.c
@@ -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. */