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?