]> granicus.if.org Git - clang/commitdiff
[PCH] When writing out the list of input files, avoid emitting duplicate
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Tue, 11 Dec 2012 07:48:08 +0000 (07:48 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Tue, 11 Dec 2012 07:48:08 +0000 (07:48 +0000)
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

lib/Serialization/ASTWriter.cpp

index ff98d9beb054fa0c966054918e7193d211b30f0c..ed0a272faa0acd70a61b808e56867f211f9b6330 100644 (file)
@@ -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);