[lldb-dev] using clang::CodeGenOptions::EmitDeclMetadata

ret val retval386 at gmail.com
Wed Aug 3 06:57:27 PDT 2011

Sorry for the delay.

Unfortunately the LLVM/Clang mailing list and IRC channel is not much help,
no one seems to be familiar with this functionality. I'm trying to use this
in a Pass and I'm assuming I would need to call CodeGen a 2nd time(since I
doubt I could set that option in time before its ran), but I dont understand
any potential consequences from this.

Any advice? Anyone happen to know of some code where this is being done(I'm
not entirely sure how to call CodeGen again)?


On Wed, Jul 27, 2011 at 4:21 PM, Sean Callanan <scallanan at apple.com> wrote:

> EmitDeclMetadata generates a mapping from values in the IR that Clang emits
> to their original Clang ASTs.  In an expression like
> (lldb) expr a
> Clang asks LLDB about "a" and LLDB returns a variety of Decls (maybe one
> for a(), a function, and one for a, a variable).   Clang sorts out which one
> it needs, and uses the metadata to indicate which Decl it actually ended up
> using.  Later when LLDB sees the Decl in the metadata for the emitted IR, it
> can use ClangExpressionDeclMap to locate the corresponding LLDB entity (say,
> a VariableSP), and use information about that entity when actually running
> the expression.
> InstrumentFunctions was (and may still be) enabled by default, and added
> calls to __cyg_profile_func_enter/__cyg_profile_func_exit at the boundaries
> of each emitted function.  We have no use for these calls, and they were
> generating undefined references.  I disabled them.
> Sean
> On Jul 27, 2011, at 11:49 AM, ret val wrote:
> Sorry, guess I should of been more specific. Those lines I found, Im just
> not sure how they are used.
> After those are enabled, how could something like a Pass take advantage of
> it and get a Decl for something it finds? I browsed the code and didnt
> notice anything special for this, not sure what I missing.
> Thanks though
> On Wed, Jul 27, 2011 at 2:39 PM, Greg Clayton <gclayton at apple.com> wrote:
>> We typically enable a certain set of options by default with our
>> expression parser by setting the hard coded option manually. See the
>> "ClangExpressionParser::ClangExpressionParser(...)" constructor functions.
>> If you look at the current sources we currently enable this:
>> 238    // Set CodeGen options
>> 239    m_compiler->getCodeGenOpts().EmitDeclMetadata = true;
>> 240    m_compiler->getCodeGenOpts().InstrumentFunctions = false;
>> On Jul 26, 2011, at 7:18 AM, ret val wrote:
>> > Hi
>> >
>> > I'm working with LLVM/Clang and I'm trying to use the
>> clang::CodeGenOptions::EmitDeclMetadata feature. There really arnt docs for
>> anything like this so thanks to lldb/Expression/ClangExpressionParser.cpp I
>> now know how to enable this feature. Can anyone point me to a usage of this?
>> I'm not entirely sure how it should work and nothing stood out to me.
>> >
>> > Thanks
>> > _______________________________________________
>> > lldb-dev mailing list
>> > lldb-dev at cs.uiuc.edu
>> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20110803/d8e621b6/attachment.html>

More information about the lldb-dev mailing list