From: Ted Kremenek Date: Thu, 13 Dec 2007 18:12:10 +0000 (+0000) Subject: Add hack to SourceManager to support missing source files during X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=db9c22917e411c924dae593d71e64fd616fd3a12;p=clang Add hack to SourceManager to support missing source files during deserialization. Eventually this should be replaced with a lazy-reading mechanism that only reads source files when they are needed by clients. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45007 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Basic/SourceManager.cpp b/Basic/SourceManager.cpp index bfa77923b0..22a7cf511f 100644 --- a/Basic/SourceManager.cpp +++ b/Basic/SourceManager.cpp @@ -441,10 +441,14 @@ void ContentCache::ReadToSourceManager(llvm::Deserializer& D, const char* start = &Buf[0]; const FileEntry* E = FMgr->getFile(start,start+Buf.size()); - assert (E && "Not yet supported: missing files."); - - // Get the ContextCache object and register it with the deserializer. - D.RegisterPtr(PtrID,SMgr.getContentCache(E)); + // FIXME: Ideally we want a lazy materialization of the ContentCache + // anyway, because we don't want to read in source files unless this + // is absolutely needed. + if (!E) + D.RegisterPtr(PtrID,NULL); + else + // Get the ContextCache object and register it with the deserializer. + D.RegisterPtr(PtrID,SMgr.getContentCache(E)); } else { // Register the ContextCache object with the deserializer.