summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2017-03-02 17:37:11 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2017-03-02 17:37:11 +0000
commit97d25552ed0647f843dda92c47e3dd5bc4c6b90f (patch)
tree80047cb422a0da454cf3788ed212361cd74cdaba
parentfffa17983756af40fb726b425a314091767f1388 (diff)
downloadbcm5719-llvm-97d25552ed0647f843dda92c47e3dd5bc4c6b90f.tar.gz
bcm5719-llvm-97d25552ed0647f843dda92c47e3dd5bc4c6b90f.zip
Serialization: use the PCH chain to check PCH mode
When we are deciding whether we are creating a PCH or a module, we would check if the ModuleMgr had any elements to switch into PCH mode. However, when creating a module, the size may be 1. This would result in us going down the wrong path. This was found by cross-compiling the swift standard library. Use the PCH chain length instead to identify the PCH mode. Unfortunately, I have not yet been able to create a simple test case for this, but have verified that this fixes the swift standard library construction. Thanks to Adrian Prantl for help and discussions with this change! llvm-svn: 296769
-rw-r--r--clang/lib/Serialization/ASTReader.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index e9cb51dec6e..3ec009afaa2 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -7928,7 +7928,8 @@ ASTReader::getSourceDescriptor(unsigned ID) {
// If there is only a single PCH, return it instead.
// Chained PCH are not suported.
- if (ModuleMgr.size() == 1) {
+ const auto &PCHChain = ModuleMgr.pch_modules();
+ if (std::distance(std::begin(PCHChain), std::end(PCHChain))) {
ModuleFile &MF = ModuleMgr.getPrimaryModule();
StringRef ModuleName = llvm::sys::path::filename(MF.OriginalSourceFileName);
StringRef FileName = llvm::sys::path::filename(MF.FileName);
OpenPOWER on IntegriCloud