aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2022-07-20 20:36:54 +0200
committerAldy Hernandez <aldyh@redhat.com>2022-07-24 17:00:50 +0200
commit4a36b4e1fe405fe347d57c39f8e23ac8a6c57263 (patch)
tree64c4d9700076230723677fa2fef3ee1fea8c7768 /gcc
parente850c98f1f06721126606ad3439d7cd9393c687c (diff)
downloadgcc-4a36b4e1fe405fe347d57c39f8e23ac8a6c57263.zip
gcc-4a36b4e1fe405fe347d57c39f8e23ac8a6c57263.tar.gz
gcc-4a36b4e1fe405fe347d57c39f8e23ac8a6c57263.tar.bz2
Allow registering same SSA name relations in oracle.
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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/value-relation.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/value-relation.cc b/gcc/value-relation.cc
index bd34425..a447021 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);