[llvm-dev] [DebugInfo][DIBuilder] Good way to pass arguments to createClassType/createMemberType

via llvm-dev
Thu, 07 Feb 2019 16:43:07 -0000

Commentary in CGDebugInfo::CreateTypeDefinition says it first creates a forward
declaration for the record, then adds the members to it using the forward
declaration as the scope; then it does some sort of fixup. It looks like the
fixup part is MDNode::replaceWithPermanent which is admittedly not a
particularly smooth interface.
Adrian or David might be able to comment on that part.
--paulr

From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Adrian
Prantl via llvm-dev
Sent: Wednesday, February 06, 2019 1:26 PM
To: David Blaikie
Cc: Vivien Millet; llvm-dev
Subject: Re: [llvm-dev] [DebugInfo][DIBuilder] Good way to pass arguments to
createClassType/createMemberType

At least for generating DWARF the scope of of a composite type member should be
irrelevant since it will always be nested inside its parent.

-- adrian


On Feb 6, 2019, at 10:24 AM, David Blaikie <dblaikie at
gmail.com<mailto:dblaikie at gmail.com>> wrote:

A good rough rule of thumb here is "what would/does Clang do?" &
it looks (to me, on a very cursory glance) like Clang mostly passes the
unit's DIFile as the scope parameter for a member - so perhaps it's just
ignored? not sure.
On Tue, Feb 5, 2019 at 1:38 PM Vivien Millet via llvm-dev <llvm-dev at
lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote:
Hi,
I'm trying to use DIBuilder to build my debug info and export it into a PDB,
but I don't understand the way some DIBuilder method work.
My question might have a straightforward answer but I don't see it ... (and
I can't find any example code using these methods anywhere).
Indeed createClassType takes an "Elements" argument, and
createMemberType takes a "Scope" argument. Like the "who's
first, egg or hen", I don't know If I need to create my members first
using le compilation unit as the scope, put them in an array and give them to
createClassType Elements parameter. Or forget the Elements parameter, call
createClassType first then give it as "Scope" of createMemberType..
Thanks !
_______________________________________________
LLVM Developers mailing list
llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20190207/2b3bf21f/attachment.html>