This adjusts GIMPLE verification with respect to the VEC_COND_EXPR
changes forcing a split out condition.

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

2021-04-14  Richard Biener  <rguent...@suse.de>

        * tree-cfg.c (verify_gimple_assign_ternary): Verify that
        VEC_COND_EXPRs have a gimple_val condition.
        * tree-ssa-propagate.c (valid_gimple_rhs_p): VEC_COND_EXPR
        can no longer have a GENERIC condition.
---
 gcc/tree-cfg.c           | 2 ++
 gcc/tree-ssa-propagate.c | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 7e3aae5f9c2..4f63aa69ba8 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -4246,6 +4246,8 @@ verify_gimple_assign_ternary (gassign *stmt)
          debug_generic_expr (rhs1_type);
          return true;
        }
+      if (!is_gimple_val (rhs1))
+       return true;
       /* Fallthrough.  */
     case COND_EXPR:
       if (!is_gimple_val (rhs1)
diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c
index def16c036ab..17dd1efd81d 100644
--- a/gcc/tree-ssa-propagate.c
+++ b/gcc/tree-ssa-propagate.c
@@ -515,7 +515,7 @@ valid_gimple_rhs_p (tree expr)
        default:
          if (get_gimple_rhs_class (code) == GIMPLE_TERNARY_RHS)
            {
-             if (((code == VEC_COND_EXPR || code == COND_EXPR)
+             if ((code == COND_EXPR
                   ? !is_gimple_condexpr (TREE_OPERAND (expr, 0))
                   : !is_gimple_val (TREE_OPERAND (expr, 0)))
                  || !is_gimple_val (TREE_OPERAND (expr, 1))
-- 
2.26.2

Reply via email to