From: Douglas Gregor Date: Sat, 17 Oct 2009 17:25:45 +0000 (+0000) Subject: Write the preprocessor block after we write out types + declarations, X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=813a97b3eee957eac3ac1fb111b8892fb9afd0d4;p=clang Write the preprocessor block after we write out types + declarations, so that we catch any macros used within the declarations and types. Also, properly store a NULL selector. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84334 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/DeclarationName.cpp b/lib/AST/DeclarationName.cpp index 101ddd2509..4b31617f59 100644 --- a/lib/AST/DeclarationName.cpp +++ b/lib/AST/DeclarationName.cpp @@ -60,7 +60,7 @@ bool operator<(DeclarationName LHS, DeclarationName RHS) { DeclarationName::DeclarationName(Selector Sel) { if (!Sel.getAsOpaquePtr()) { - Ptr = StoredObjCZeroArgSelector; + Ptr = 0; return; } diff --git a/lib/Frontend/PCHWriter.cpp b/lib/Frontend/PCHWriter.cpp index 73ce4bef34..a6ee441c86 100644 --- a/lib/Frontend/PCHWriter.cpp +++ b/lib/Frontend/PCHWriter.cpp @@ -1063,6 +1063,7 @@ void PCHWriter::WritePreprocessor(const Preprocessor &PP) { // Loop over all the macro definitions that are live at the end of the file, // emitting each to the PP section. + // FIXME: Make sure that this sees macros defined in included PCH files. for (Preprocessor::macro_iterator I = PP.macro_begin(), E = PP.macro_end(); I != E; ++I) { // FIXME: This emits macros in hash table order, we should do it in a stable @@ -1886,7 +1887,6 @@ void PCHWriter::WritePCH(Sema &SemaRef, MemorizeStatCalls *StatCalls, if (StatCalls && !isysroot) WriteStatCache(*StatCalls, isysroot); WriteSourceManagerBlock(Context.getSourceManager(), PP, isysroot); - WritePreprocessor(PP); WriteComments(Context); // Write the record of special types. Record.clear(); @@ -1919,6 +1919,7 @@ void PCHWriter::WritePCH(Sema &SemaRef, MemorizeStatCalls *StatCalls, } Stream.ExitBlock(); + WritePreprocessor(PP); WriteMethodPool(SemaRef); WriteIdentifierTable(PP);