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 <[email protected]> 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
> > [email protected]
> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
> 
> 
> _______________________________________________
> lldb-dev mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to