<rdar://problem/13037793> Allow the names of modules to differ from the name of their subdirectory in the include path.llvm-svn: 177621
<rdar://problem/13363214> Eliminate race condition between module rebuild and the global module index.The global module index was querying the file manager for each of themodule files it knows abo
<rdar://problem/13363214> Eliminate race condition between module rebuild and the global module index.The global module index was querying the file manager for each of themodule files it knows about at load time, to prune out any out-of-dateinformation. The file manager would then cache the results of thestat() falls used to find that module file.Later, the same translation unit could end up trying to import one of themodule files that had previously been ignored by the module cache, butafter some other Clang instance rebuilt the module file to bring itup-to-date. The stale stat() results in the file manager wouldtrigger a second rebuild of the already-up-to-date module, causingfailures down the line.The global module index now lazily resolves its module file referencesto actual AST reader module files only after the module file has beenloaded, eliminating the stat-caching race. Moreover, the AST readercan communicate to its caller that a module file is missing (ratherthan simply being out-of-date), allowing us to simplify themodule-loading logic and allowing the compiler to recover if adependent module file ends up getting deleted.llvm-svn: 177367
show more ...
When loading a module fails because it is out of date, rebuild thatmodule in place. <rdar://problem/10138913>llvm-svn: 167539