From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id A6305385840F; Fri, 3 Mar 2023 19:29:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A6305385840F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1677871762; bh=MkCaJgdQ8/yGQiYYbMzwWMlL+COIcCl1LziooiMJrF0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=L4fpS4GiVOgNasARcX3zPej37k9+0M02iLpkTCE4fUMrTcBi5ZWQ8fbkqIUqAgWdd lKehzKA/h0iVJnoB7y/PFKk7hmvaqGuMbmu1bB2Ipg3VQ9eiTVm/eE867NG/NtPUed ECw9dwW4N0sqJLVyGaWDIjlH2ZQ7a5AXyL2BaUIk= From: "iains at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/101118] coroutines: unexpected ODR warning for coroutine frame type in LTO builds Date: Fri, 03 Mar 2023 19:29:22 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 11.1.0 X-Bugzilla-Keywords: C++-coroutines, diagnostic, lto X-Bugzilla-Severity: normal X-Bugzilla-Who: iains at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D101118 --- Comment #11 from Iain Sandoe --- (In reply to Iain Sandoe from comment #10) > Hmm... maybe I am being too hasty here. >=20 > If the coroutine has a definition in a header, then the coroutine frame t= ype > _should_ be the same for each instance of it. So maybe this is actually > reporting a genuine ODR violation? ah (I still misread) ... so the reported error is that the frame type *is* = the same (which is correct) but the field names differ (which is probably a consequence of using static counters to produce them). So we need a stable= way to generate the field names.=