From: Douglas Gregor Date: Fri, 7 Jun 2013 22:56:11 +0000 (+0000) Subject: Loosen r178109 even further, to assume that all redefined macros in system headers... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f9dbae754bba75df78b8e73ab35d04134c1fed17;p=clang Loosen r178109 even further, to assume that all redefined macros in system headers and system modules are equivalent. Fixes . git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183588 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index e7d17dede8..fd4f90e3ef 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -1585,18 +1585,21 @@ void ASTReader::installPCHMacroDirectives(IdentifierInfo *II, /// \brief For the given macro definitions, check if they are both in system /// modules. static bool areDefinedInSystemModules(MacroInfo *PrevMI, MacroInfo *NewMI, - Module *NewOwner, ASTReader &Reader) { + Module *NewOwner, ASTReader &Reader) { assert(PrevMI && NewMI); - if (!NewOwner) - return false; Module *PrevOwner = 0; if (SubmoduleID PrevModID = PrevMI->getOwningModuleID()) PrevOwner = Reader.getSubmodule(PrevModID); - if (!PrevOwner) - return false; - if (PrevOwner == NewOwner) + SourceManager &SrcMgr = Reader.getSourceManager(); + bool PrevInSystem + = PrevOwner? PrevOwner->IsSystem + : SrcMgr.isInSystemHeader(PrevMI->getDefinitionLoc()); + bool NewInSystem + = NewOwner? NewOwner->IsSystem + : SrcMgr.isInSystemHeader(NewMI->getDefinitionLoc()); + if (PrevOwner && PrevOwner == NewOwner) return false; - return PrevOwner->IsSystem && NewOwner->IsSystem; + return PrevInSystem && NewInSystem; } void ASTReader::installImportedMacro(IdentifierInfo *II, MacroDirective *MD,