https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96394

--- Comment #2 from Sergei Trofimovich <slyfox at gcc dot gnu.org> ---
My guess is it's somehow related to the fact that inliner did 'termvalid'
inline (twice probably?):

"""
static int
validate_chain_two_ops(node *tree, int (*termvalid)(node *), int op1, int op2)
 {
    int pos = 1;
    int nch = ((tree)->n_nchildren);
    int res = ((((nch) & 1) == 1)
               && (*termvalid)((&(tree)->n_child[0])));

    for ( ; res && (pos < nch); pos += 2) {
        if ((((&(tree)->n_child[pos]))->n_type) != op1)
            res = validate_ntype((&(tree)->n_child[pos]), op2);
        if (res)
            res = (*termvalid)((&(tree)->n_child[pos + 1]));
    }
    return (res);
}


static int
validate_shift_expr(node *tree)
{
    return (validate_ntype(tree, 321)
            && validate_chain_two_ops(tree, validate_arith_expr,
                                      34, 35));
}


static int
validate_arith_expr(node *tree)
{
    return (validate_ntype(tree, 322)
            && validate_chain_two_ops(tree, validate_term, 14, 15));
}
"""

I can't craft short example from this as is. Is there a way to reduce with
cvise/creduce both .c and .gcda files at the same time?

Reply via email to