diff options
-rw-r--r-- | gcc/tree-cfg.c | 2 | ||||
-rw-r--r-- | gcc/tree-ssa-propagate.c | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 7e3aae5..4f63aa6 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 def16c0..17dd1ef 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)) |