[cfe-dev] macro_begin()/macro_end()
Sean Callanan
scallanan at apple.com
Wed Jul 29 10:43:29 PDT 2015
LLDB’s module support (implemented here: http://llvm.org/svn/llvm-project/lldb/trunk/source/Expression/ClangModulesDeclVendor.cpp) sets up its own CompilerInstance and then loads modules into it.
The way we import macros from modules into expressions is by textual inclusion – we iterate across the macros like this:
–
if (m_compiler_instance->getPreprocessor().getExternalSource())
{
m_compiler_instance->getPreprocessor().getExternalSource()->ReadDefinedMacros();
}
for (clang::Preprocessor::macro_iterator mi = m_compiler_instance->getPreprocessor().macro_begin(),
me = m_compiler_instance->getPreprocessor().macro_end();
mi != me; ++mi)
{
// ...
clang::MacroInfo *macro_info = nullptr;
for (clang::ModuleMacro *module_macro : m_compiler_instance->getPreprocessor().getLeafModuleMacros(ii))
{
// pick the macro_info from the module we care most about; that might be NULL
}
if (macro_info)
{
// make a string from the macro
}
}
–
What Im noticing is that a macro (say, “MAX”) doesn’t appear in the macro_begin() list at all. Only later, after I’ve done a name lookup for “MAX" (on the assumption that it might be a variable, see ClangModulesDeclVendorImpl::FindDecls()), does it appear in the list.
Is there something else I need to tickle here, or is this a bug in the API?
Sean
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150729/3c226575/attachment.html>
More information about the cfe-dev
mailing list