Similarly to what we did for the relation oracle, but for the path oracle. This was found while working on frange, where we can test for x == x while checking for NANness.
Tested on x86-64 Linux. gcc/ChangeLog: * value-relation.cc (value_relation::set_relation): Remove assert. (path_oracle::register_relation): Exit when trying to register same SSA name relations. --- gcc/value-relation.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gcc/value-relation.cc b/gcc/value-relation.cc index bd344253af3..a447021214f 100644 --- a/gcc/value-relation.cc +++ b/gcc/value-relation.cc @@ -667,8 +667,6 @@ private: inline void value_relation::set_relation (relation_kind r, tree n1, tree n2) { - gcc_checking_assert (SSA_NAME_VERSION (n1) != SSA_NAME_VERSION (n2) - || r == VREL_EQ); related = r; name1 = n1; name2 = n2; @@ -1449,6 +1447,11 @@ void path_oracle::register_relation (basic_block bb, relation_kind k, tree ssa1, tree ssa2) { + // If the 2 ssa_names are the same, do nothing. An equivalence is implied, + // and no other relation makes sense. + if (ssa1 == ssa2) + return; + if (dump_file && (dump_flags & TDF_DETAILS)) { value_relation vr (k, ssa1, ssa2); -- 2.36.1