Argyrios, Could you let the test avoid <float.h>, for now, and use another system header? <float.h> has an issue around #include_next for mingw32.
FYI: mingw-gcc searches /mingw/include prior to $(GCC_LIB)/include. mingw32's <float.h> assumes compiler's <float.h> with #include_next <float.h>. I wonder what would be better solution. ...Takumi 2013/5/9 Argyrios Kyrtzidis <[email protected]>: > Author: akirtzidis > Date: Wed May 8 18:46:46 2013 > New Revision: 181489 > > URL: http://llvm.org/viewvc/llvm-project?rev=181489&view=rev > Log: > [modules] When building a module, make sure we don't serialize out > HeaderFileInfo for headers not belonging to the module. > > After r180934 we may initiate module map parsing for modules not related to > the module what we are building, > make sure we ignore the header file info of headers from such modules. > > First part of rdar://13840148 > > Added: > cfe/trunk/test/Modules/self-import-header/ > cfe/trunk/test/Modules/self-import-header/af.framework/ > cfe/trunk/test/Modules/self-import-header/af.framework/Headers/ > cfe/trunk/test/Modules/self-import-header/af.framework/Headers/a1.h > cfe/trunk/test/Modules/self-import-header/af.framework/Headers/a2.h > cfe/trunk/test/Modules/self-import-header/af.framework/module.map > cfe/trunk/test/Modules/self-import-header/depend_builtin/ > cfe/trunk/test/Modules/self-import-header/depend_builtin/h1.h > cfe/trunk/test/Modules/self-import-header/depend_builtin/module.map > cfe/trunk/test/Modules/self-import-header/test.m > Modified: > cfe/trunk/include/clang/Lex/HeaderSearch.h > cfe/trunk/include/clang/Lex/ModuleMap.h > cfe/trunk/lib/Lex/HeaderSearch.cpp > cfe/trunk/lib/Lex/ModuleMap.cpp > cfe/trunk/lib/Serialization/ASTWriter.cpp > > Modified: cfe/trunk/include/clang/Lex/HeaderSearch.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/HeaderSearch.h?rev=181489&r1=181488&r2=181489&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Lex/HeaderSearch.h (original) > +++ cfe/trunk/include/clang/Lex/HeaderSearch.h Wed May 8 18:46:46 2013 > @@ -53,6 +53,9 @@ struct HeaderFileInfo { > > /// \brief Whether this header is part of a module. > unsigned isModuleHeader : 1; > + > + /// \brief Whether this header is part of the module that we are building. > + unsigned isCompilingModuleHeader : 1; > > /// \brief Whether this structure is considered to already have been > /// "resolved", meaning that it was loaded from the external source. > @@ -93,8 +96,8 @@ struct HeaderFileInfo { > > HeaderFileInfo() > : isImport(false), isPragmaOnce(false), DirInfo(SrcMgr::C_User), > - External(false), isModuleHeader(false), Resolved(false), > - IndexHeaderMapHeader(false), > + External(false), isModuleHeader(false), isCompilingModuleHeader(false), > + Resolved(false), IndexHeaderMapHeader(false), > NumIncludes(0), ControllingMacroID(0), ControllingMacro(0) {} > > /// \brief Retrieve the controlling macro for this header file, if > @@ -405,7 +408,7 @@ public: > } > > /// \brief Mark the specified file as part of a module. > - void MarkFileModuleHeader(const FileEntry *File); > + void MarkFileModuleHeader(const FileEntry *File, bool > IsCompiledModuleHeader); > > /// \brief Increment the count for the number of times the specified > /// FileEntry has been entered. > > Modified: cfe/trunk/include/clang/Lex/ModuleMap.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/ModuleMap.h?rev=181489&r1=181488&r2=181489&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Lex/ModuleMap.h (original) > +++ cfe/trunk/include/clang/Lex/ModuleMap.h Wed May 8 18:46:46 2013 > @@ -52,6 +52,9 @@ class ModuleMap { > /// These are always simple C language options. > LangOptions MMapLangOpts; > > + // The module that we are building; related to \c > LangOptions::CurrentModule. > + Module *CompilingModule; > + > /// \brief The top-level modules that are known. > llvm::StringMap<Module *> Modules; > > > Modified: cfe/trunk/lib/Lex/HeaderSearch.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/HeaderSearch.cpp?rev=181489&r1=181488&r2=181489&view=diff > ============================================================================== > --- cfe/trunk/lib/Lex/HeaderSearch.cpp (original) > +++ cfe/trunk/lib/Lex/HeaderSearch.cpp Wed May 8 18:46:46 2013 > @@ -866,12 +866,14 @@ bool HeaderSearch::isFileMultipleInclude > HFI.ControllingMacro || HFI.ControllingMacroID; > } > > -void HeaderSearch::MarkFileModuleHeader(const FileEntry *FE) { > +void HeaderSearch::MarkFileModuleHeader(const FileEntry *FE, > + bool isCompilingModuleHeader) { > if (FE->getUID() >= FileInfo.size()) > FileInfo.resize(FE->getUID()+1); > > HeaderFileInfo &HFI = FileInfo[FE->getUID()]; > HFI.isModuleHeader = true; > + HFI.isCompilingModuleHeader = isCompilingModuleHeader; > } > > void HeaderSearch::setHeaderFileInfoForUID(HeaderFileInfo HFI, unsigned UID) > { > > Modified: cfe/trunk/lib/Lex/ModuleMap.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/ModuleMap.cpp?rev=181489&r1=181488&r2=181489&view=diff > ============================================================================== > --- cfe/trunk/lib/Lex/ModuleMap.cpp (original) > +++ cfe/trunk/lib/Lex/ModuleMap.cpp Wed May 8 18:46:46 2013 > @@ -87,7 +87,7 @@ ModuleMap::ModuleMap(FileManager &FileMg > const LangOptions &LangOpts, const TargetInfo *Target, > HeaderSearch &HeaderInfo) > : LangOpts(LangOpts), Target(Target), HeaderInfo(HeaderInfo), > - BuiltinIncludeDir(0) > + BuiltinIncludeDir(0), CompilingModule(0) > { > IntrusiveRefCntPtr<DiagnosticIDs> DiagIDs(new DiagnosticIDs); > Diags = IntrusiveRefCntPtr<DiagnosticsEngine>( > @@ -388,8 +388,13 @@ ModuleMap::findOrCreateModule(StringRef > // Create a new module with this name. > Module *Result = new Module(Name, SourceLocation(), Parent, IsFramework, > IsExplicit); > - if (!Parent) > + if (!Parent) { > Modules[Name] = Result; > + if (!LangOpts.CurrentModule.empty() && !CompilingModule && > + Name == LangOpts.CurrentModule) { > + CompilingModule = Result; > + } > + } > return std::make_pair(Result, true); > } > > @@ -605,7 +610,8 @@ void ModuleMap::addHeader(Module *Mod, c > Mod->ExcludedHeaders.push_back(Header); > } else { > Mod->Headers.push_back(Header); > - HeaderInfo.MarkFileModuleHeader(Header); > + bool isCompilingModuleHeader = Mod->getTopLevelModule() == > CompilingModule; > + HeaderInfo.MarkFileModuleHeader(Header, isCompilingModuleHeader); > } > Headers[Header] = KnownHeader(Mod, Excluded); > } > > Modified: cfe/trunk/lib/Serialization/ASTWriter.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriter.cpp?rev=181489&r1=181488&r2=181489&view=diff > ============================================================================== > --- cfe/trunk/lib/Serialization/ASTWriter.cpp (original) > +++ cfe/trunk/lib/Serialization/ASTWriter.cpp Wed May 8 18:46:46 2013 > @@ -1542,6 +1542,8 @@ void ASTWriter::WriteHeaderSearch(const > const HeaderFileInfo &HFI = HS.getFileInfo(File); > if (HFI.External && Chain) > continue; > + if (HFI.isModuleHeader && !HFI.isCompilingModuleHeader) > + continue; > > // Turn the file name into an absolute path, if it isn't already. > const char *Filename = File->getName(); > > Added: cfe/trunk/test/Modules/self-import-header/af.framework/Headers/a1.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/self-import-header/af.framework/Headers/a1.h?rev=181489&view=auto > ============================================================================== > --- cfe/trunk/test/Modules/self-import-header/af.framework/Headers/a1.h > (added) > +++ cfe/trunk/test/Modules/self-import-header/af.framework/Headers/a1.h Wed > May 8 18:46:46 2013 > @@ -0,0 +1,4 @@ > +@import DepBuiltin; > + > +@interface Foo > +@end > > Added: cfe/trunk/test/Modules/self-import-header/af.framework/Headers/a2.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/self-import-header/af.framework/Headers/a2.h?rev=181489&view=auto > ============================================================================== > --- cfe/trunk/test/Modules/self-import-header/af.framework/Headers/a2.h > (added) > +++ cfe/trunk/test/Modules/self-import-header/af.framework/Headers/a2.h Wed > May 8 18:46:46 2013 > @@ -0,0 +1 @@ > +#import "a1.h" > > Added: cfe/trunk/test/Modules/self-import-header/af.framework/module.map > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/self-import-header/af.framework/module.map?rev=181489&view=auto > ============================================================================== > --- cfe/trunk/test/Modules/self-import-header/af.framework/module.map (added) > +++ cfe/trunk/test/Modules/self-import-header/af.framework/module.map Wed May > 8 18:46:46 2013 > @@ -0,0 +1,4 @@ > +framework module af { > + header "a1.h" > + header "a2.h" > +} > > Added: cfe/trunk/test/Modules/self-import-header/depend_builtin/h1.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/self-import-header/depend_builtin/h1.h?rev=181489&view=auto > ============================================================================== > --- cfe/trunk/test/Modules/self-import-header/depend_builtin/h1.h (added) > +++ cfe/trunk/test/Modules/self-import-header/depend_builtin/h1.h Wed May 8 > 18:46:46 2013 > @@ -0,0 +1 @@ > +#include <float.h> > > Added: cfe/trunk/test/Modules/self-import-header/depend_builtin/module.map > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/self-import-header/depend_builtin/module.map?rev=181489&view=auto > ============================================================================== > --- cfe/trunk/test/Modules/self-import-header/depend_builtin/module.map > (added) > +++ cfe/trunk/test/Modules/self-import-header/depend_builtin/module.map Wed > May 8 18:46:46 2013 > @@ -0,0 +1,5 @@ > +module DepBuiltin { > +header "h1.h" > + export * > +} > + > > Added: cfe/trunk/test/Modules/self-import-header/test.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/self-import-header/test.m?rev=181489&view=auto > ============================================================================== > --- cfe/trunk/test/Modules/self-import-header/test.m (added) > +++ cfe/trunk/test/Modules/self-import-header/test.m Wed May 8 18:46:46 2013 > @@ -0,0 +1,7 @@ > +// rdar://13840148 > + > +// RUN: rm -rf %t > +// RUN: %clang -fsyntax-only -isysroot %S/../Inputs/System/usr/include > -fmodules -fmodules-cache-path=%t \ > +// RUN: -F %S -I %S %s -D__need_wint_t > -Werror=implicit-function-declaration > + > +@import af; > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
