Index: clang/include/clang/Lex/PreprocessorExcludedConditionalDirectiveSkipMapping.h =================================================================== --- clang/include/clang/Lex/PreprocessorExcludedConditionalDirectiveSkipMapping.h +++ clang/include/clang/Lex/PreprocessorExcludedConditionalDirectiveSkipMapping.h @@ -23,8 +23,7 @@ /// The datastructure that holds the mapping between the active memory buffers /// and the individual skip mappings. using ExcludedPreprocessorDirectiveSkipMapping = - llvm::DenseMap; + llvm::DenseMap; } // end namespace clang Index: clang/lib/Lex/PPDirectives.cpp =================================================================== --- clang/lib/Lex/PPDirectives.cpp +++ clang/lib/Lex/PPDirectives.cpp @@ -380,7 +380,10 @@ std::pair HashFileOffset = SourceMgr.getDecomposedLoc(HashLoc); const llvm::MemoryBuffer *Buf = SourceMgr.getBuffer(HashFileOffset.first); - auto It = ExcludedConditionalDirectiveSkipMappings->find(Buf); + if (!Buf) + return None; + auto It = + ExcludedConditionalDirectiveSkipMappings->find(Buf->getBufferStart()); if (It == ExcludedConditionalDirectiveSkipMappings->end()) return None; Index: clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp =================================================================== --- clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp +++ clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp @@ -219,8 +219,6 @@ llvm::ErrorOr status() override { return Stat; } - const llvm::MemoryBuffer *getBufferPtr() const { return Buffer.get(); } - llvm::ErrorOr> getBuffer(const Twine &Name, int64_t FileSize, bool RequiresNullTerminator, bool IsVolatile) override { @@ -248,7 +246,7 @@ /*RequiresNullTerminator=*/false), *Entry->getStatus()); if (!Entry->getPPSkippedRangeMapping().empty() && PPSkipMappings) - (*PPSkipMappings)[Result->getBufferPtr()] = + (*PPSkipMappings)[Result->Buffer->getBufferStart()] = &Entry->getPPSkippedRangeMapping(); return llvm::ErrorOr>( std::unique_ptr(std::move(Result)));