llvm-project/clang/lib/Frontend
Ben Langmuir dbdc036858 Retry building modules that were compiled by other instances and are out-of-date
When another clang instance builds a module, it may still be considered
"out of date" for the current instance in a couple of cases*.  This
patch prevents us from giving spurious errors when compilers race to
build a module by allowing the module load to fail when the pcm was
built by a different compiler instance.

* Cases where a module can be out of date despite just having been
built:

1) There are different -I paths between invocations that result in
finding a different module map file for some dependent module. This is
not an error, and should never be diagnosed.

<rdar://problem/16843887>

2) There are file system races where the headers making up a module are
touched or moved. Although this can sometimes mean trouble, diagnosing
it only during a build-race is worse than useless and we cannot detect
this in general.  It is more robust to just rebuild.  This was causing
spurious issues in some setups where only the modtime of headers was
bumped during a build.

<rdar://problem/16157638>

llvm-svn: 211129
2014-06-17 22:35:27 +00:00
..
ASTConsumers.cpp [C++11] Use 'nullptr'. Frontend edition. 2014-05-22 04:46:25 +00:00
ASTMerge.cpp [C++11] Replacing DeclBase iterators decls_begin() and decls_end() with iterator_range decls(). The same is true for the noload versions of these APIs. Updating all of the usages of the iterators with range-based for loops. 2014-03-07 19:56:05 +00:00
ASTUnit.cpp [C++11] Use 'nullptr'. Frontend edition. 2014-05-22 04:46:25 +00:00
CMakeLists.txt Reapply r207477 and r207479 without cyclic dependency 2014-04-29 16:25:26 +00:00
CacheTokens.cpp [C++11] Use 'nullptr'. Frontend edition. 2014-05-22 04:46:25 +00:00
ChainedDiagnosticConsumer.cpp Remove spurious mode marker from .cpp file. 2012-10-29 06:05:01 +00:00
ChainedIncludesSource.cpp [C++11] Use 'nullptr'. Frontend edition. 2014-05-22 04:46:25 +00:00
CompilerInstance.cpp Retry building modules that were compiled by other instances and are out-of-date 2014-06-17 22:35:27 +00:00
CompilerInvocation.cpp Remove dead code. 2014-06-17 20:01:51 +00:00
CreateInvocationFromCommandLine.cpp [C++11] Use 'nullptr'. Frontend edition. 2014-05-22 04:46:25 +00:00
DependencyFile.cpp [C++11] Use 'nullptr'. Frontend edition. 2014-05-22 04:46:25 +00:00
DependencyGraph.cpp [C++11] Use 'nullptr'. Frontend edition. 2014-05-22 04:46:25 +00:00
DiagnosticRenderer.cpp [C++11] Use 'nullptr'. Frontend edition. 2014-05-22 04:46:25 +00:00
FrontendAction.cpp Include system_error directly. 2014-06-12 17:19:42 +00:00
FrontendActions.cpp Refer to error_code with the std prefix. 2014-06-12 20:37:59 +00:00
FrontendOptions.cpp Remove duplicated case. 2013-06-22 16:44:45 +00:00
HeaderIncludeGen.cpp [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-13 06:07:04 +00:00
InitHeaderSearch.cpp Fix crash with x86_64-pc-win32-macho target. <rdar://problem/17235840> 2014-06-10 21:07:12 +00:00
InitPreprocessor.cpp Add -std=c++1z flag for C++17 features. 2014-06-16 15:16:56 +00:00
LangStandards.cpp [C++11] Use 'nullptr'. Frontend edition. 2014-05-22 04:46:25 +00:00
LayoutOverrideSource.cpp Excise <cctype> from Clang (except clang-tblgen) in favor of CharInfo.h. 2013-02-08 22:30:41 +00:00
LogDiagnosticPrinter.cpp [C++11] Use 'nullptr'. Frontend edition. 2014-05-22 04:46:25 +00:00
Makefile
MultiplexConsumer.cpp Emit used/dllexport inline method definitions in nested classes (PR19743, PR11170) 2014-05-23 20:37:38 +00:00
PrintPreprocessedOutput.cpp Complete the switch from mappings to declarative diagnostic severities 2014-06-12 10:15:20 +00:00
SerializedDiagnosticPrinter.cpp Remove limits on the number of fix-it hints and ranges in the DiagnosticsEngine. 2014-05-22 19:56:11 +00:00
TextDiagnostic.cpp The Visual Studio IDE changed behavior in VS2012. It used to be the case that 2014-03-07 00:23:36 +00:00
TextDiagnosticBuffer.cpp Support 'remark' in VerifyDiagnosticConsumer 2014-05-01 14:06:01 +00:00
TextDiagnosticPrinter.cpp Remove limits on the number of fix-it hints and ranges in the DiagnosticsEngine. 2014-05-22 19:56:11 +00:00
VerifyDiagnosticConsumer.cpp [C++11] Use 'nullptr'. Frontend edition. 2014-05-22 04:46:25 +00:00