On Jul 29, 2015, at 5:36 PM, Richard Smith <richard@metafoo.co.uk> wrote:On Wed, Jul 29, 2015 at 5:35 PM, Richard Smith <richard@metafoo.co.uk> wrote:On Wed, Jul 29, 2015 at 10:43 AM, Sean Callanan <scallanan@apple.com> wrote: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();FYI, this is redundant; macro_begin does this for you.}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?Does this help:Index: lib/Serialization/ASTReader.cpp===================================================================--- lib/Serialization/ASTReader.cpp (revision 243368)+++ lib/Serialization/ASTReader.cpp (working copy)@@ -1623,7 +1623,7 @@case PP_MACRO_OBJECT_LIKE:case PP_MACRO_FUNCTION_LIKE:- getLocalIdentifier(**I, Record[0]);+ updateOutOfDateIdentifier(*getLocalIdentifier(**I, Record[0]));break;case PP_TOKEN: