https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95192
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |marxin at gcc dot gnu.org --- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #2) > In cp/parser.c, we have code that avoids building attributes with > error_mark_node values (instead just use error_mark_node as the attributes). > > So, I wonder if we shouldn't do that in tsubst_attributes too, like: > --- gcc/cp/pt.c.jj 2020-11-18 09:40:09.618663053 +0100 > +++ gcc/cp/pt.c 2020-11-18 15:47:26.584181671 +0100 > @@ -11502,6 +11502,8 @@ tsubst_attribute (tree t, tree *decl_p, > tree chain > = tsubst_expr (TREE_CHAIN (val), args, complain, in_decl, > /*integral_constant_expression_p=*/false); > + if (chain == error_mark_node) > + return error_mark_node; > if (chain != TREE_CHAIN (val)) > val = tree_cons (NULL_TREE, TREE_VALUE (val), chain); > } > @@ -11524,8 +11526,12 @@ tsubst_attribute (tree t, tree *decl_p, > return list; > } > else > - val = tsubst_expr (val, args, complain, in_decl, > - /*integral_constant_expression_p=*/false); > + { > + val = tsubst_expr (val, args, complain, in_decl, > + /*integral_constant_expression_p=*/false); > + if (val == error_mark_node) > + return val; > + } > > if (val != TREE_VALUE (t)) > return build_tree_list (TREE_PURPOSE (t), val); > > Except that we accept the testcase then rather than reject - the unification > is done with complain == 0... Are you planning Jakub to send the patch candidate to the mailing list?