From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 859B63858C3A; Wed, 22 Dec 2021 07:07:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 859B63858C3A From: "pinskia at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/103490] Linkage type of typeinfo of polymorphic object with OOL functions Date: Wed, 22 Dec 2021 07:07:47 +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.0 X-Bugzilla-Keywords: ABI X-Bugzilla-Severity: normal X-Bugzilla-Who: pinskia at gcc dot gnu.org X-Bugzilla-Status: RESOLVED X-Bugzilla-Resolution: INVALID 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 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Dec 2021 07:07:47 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D103490 --- Comment #4 from Andrew Pinski --- (In reply to John McCall from comment #3) > I'm not sure I agree that that's the letter of the law, but even taken th= at > as given, I think I would argue that it's a defect rather than something > that has to be followed. The purpose of the key-function optimization is= to > avoid the overheads of having to redundantly emit and unique v-tables. A > lot of uniquing can happen at link time, of course, but not all, and > optimizing load times is important. https://itanium-cxx-abi.github.io/cxx-abi/cxx-closed.html#B5 There was an open issue a long time ago which resolved this. If you think t= here should be a new defect opened against the ABI be my guest but the resolutio= n of the original issue was resolved to say comdat in all cases. "Resolution: Vtables will be emitted with the key function (first virtual function that is not inline at the point of class definition), if any. If no key function, emit everywhere used (i.e. referred to by name). Place in a comdat group in all cases." Given clang is the only compiler out there that is not complaint I think cl= ang should change.=