https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125376
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2026-05-19
Status|UNCONFIRMED |ASSIGNED
Ever confirmed|0 |1
Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 64494
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=64494&action=edit
gcc17-pr125376.patch
Minimal untested fix.
That said, I think that
tree name = DECL_NAME (arg); if (!name) { char *buf
= xasprintf ("_Coro_q%u___unnamed", parm_num);
and
if (lvname != NULL_TREE && lvd->nest_depth == 0) buf = xasprintf
("%s", IDENTIFIER_POINTER (lvname)); else if (lvname != NULL_TREE)
buf = xasprintf ("%s_%u_%u", IDENTIFIER_POINTER (lvname),
lvd->nest_depth, lvd->bind_indx); else buf = xasprintf
("_D%u_%u_%u", lvd->nest_depth, lvd->bind_indx,
serial++);
is really a bad idea. While at least _Coro_* is in implementation namespace,
though one can still define parameters like _Coro_q2___unnamed and get clashes,
the %s_%u_%u certainly is not in implementation namespace, one can have a and
a_1_2 variable names next to each other and get similar problems.
I think it would be nice to have a space or dot in the names (though sure, not
sure how that would work out in the debugger).