From: Argyrios Kyrtzidis Date: Tue, 11 Dec 2012 07:48:08 +0000 (+0000) Subject: [PCH] When writing out the list of input files, avoid emitting duplicate X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a89b618a04409c93b3b3c56d606a97a317567436;p=clang [PCH] When writing out the list of input files, avoid emitting duplicate entries of the same file. This can happen because the file was "included" multiple times and is referenced by multiple SLocEntries. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169829 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Serialization/ASTWriter.cpp b/lib/Serialization/ASTWriter.cpp index ff98d9beb0..ed0a272faa 100644 --- a/lib/Serialization/ASTWriter.cpp +++ b/lib/Serialization/ASTWriter.cpp @@ -1235,9 +1235,14 @@ void ASTWriter::WriteInputFiles(SourceManager &SourceMgr, StringRef isysroot) { if (!Cache->OrigEntry) continue; + uint32_t &InputFileID = InputFileIDs[Cache->OrigEntry]; + if (InputFileID != 0) + continue; // already recorded this file. + // Record this entry's offset. InputFileOffsets.push_back(Stream.GetCurrentBitNo()); - InputFileIDs[Cache->OrigEntry] = InputFileOffsets.size(); + + InputFileID = InputFileOffsets.size(); Record.clear(); Record.push_back(INPUT_FILE);