https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101118
--- Comment #6 from Jan Hubicka <hubicka at gcc dot gnu.org> --- I am not really expert on coroutines. But this seems to be a type (not a declaration we globalize during LTO) generated internally by the front-end. The name __D.9984.3.4 looks like it has a global counter in it. ODR types are supposed to be literaly the same across units. One way to silence this would be to not make these types ODR types since they are not the usual C++ types anyway. I wonder if this is a part of the cross-unit API that is supposed to be same? I.e. is the coroutine in one compilation unit visible from the other? If so, perhaps the only problem is hte global counter 9984 and if the counts were generated internally for each such type, the ODR handling wlll be happy.