On Fri, Nov 29, 2019 at 02:38:34PM +0100, Harwath, Frederik wrote: > 2019-11-29 Frederik Harwath <frede...@codesourcery.com> > > gcc/ > * gimple-match-head.c (maybe_resimplify_conditional_op): use
s/use/Use/ > generic_expr_could_trap_p to check if the condition of COND_EXPR or > VEC_COND_EXPR can trap. > --- > gcc/gimple-match-head.c | 18 +++++++++++++++--- > 1 file changed, 15 insertions(+), 3 deletions(-) > > diff --git a/gcc/gimple-match-head.c b/gcc/gimple-match-head.c > index 2996bade301..c763a80a6d1 100644 > --- a/gcc/gimple-match-head.c > +++ b/gcc/gimple-match-head.c > @@ -144,9 +144,21 @@ maybe_resimplify_conditional_op (gimple_seq *seq, > gimple_match_op *res_op, > /* Likewise if the operation would not trap. */ > bool honor_trapv = (INTEGRAL_TYPE_P (res_op->type) > && TYPE_OVERFLOW_TRAPS (res_op->type)); > - if (!operation_could_trap_p ((tree_code) res_op->code, > - FLOAT_TYPE_P (res_op->type), > - honor_trapv, res_op->op_or_null (1))) > + tree_code op_code = (tree_code) res_op->code; > + bool op_could_trap; > + > + /* COND_EXPR and VEC_COND_EXPR will trap if, and only if, the condition > + traps and hence we have to check this. For all other operations, we s/. /. / > + don't need to consider the operands. */ Likewise. Jakub