VN has checking code with gcc_unreachable (), the following makes
it cheaper by instead guarding the side-effect with flag_checking.

Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.

2022-07-01  Richard Biener  <rguent...@suse.de>

        * tree-ssa-sccvn.cc (vn_nary_op_insert_into): Make
        checking dominance check conditional on flag_checking.
---
 gcc/tree-ssa-sccvn.cc | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gcc/tree-ssa-sccvn.cc b/gcc/tree-ssa-sccvn.cc
index 76d92895a3a..c40c45ed840 100644
--- a/gcc/tree-ssa-sccvn.cc
+++ b/gcc/tree-ssa-sccvn.cc
@@ -4243,9 +4243,10 @@ vn_nary_op_insert_into (vn_nary_op_t vno, 
vn_nary_op_table_type *table)
                      if (dominated_by_p (CDI_DOMINATORS, vno_bb, val_bb))
                        /* Value registered with more generic predicate.  */
                        return *slot;
-                     else if (dominated_by_p (CDI_DOMINATORS, val_bb, vno_bb))
+                     else if (flag_checking)
                        /* Shouldn't happen, we insert in RPO order.  */
-                       gcc_unreachable ();
+                       gcc_assert (!dominated_by_p (CDI_DOMINATORS,
+                                                    val_bb, vno_bb));
                    }
                  /* Append value.  */
                  *next = (vn_pval *) obstack_alloc (&vn_tables_obstack,
-- 
2.35.3

Reply via email to