]> granicus.if.org Git - clang/commitdiff
Renamed Loaded member to ImportedBy, as it's easier to read. Added another set to...
authorJonathan D. Turner <jonathan.d.turner@gmail.com>
Fri, 29 Jul 2011 18:09:09 +0000 (18:09 +0000)
committerJonathan D. Turner <jonathan.d.turner@gmail.com>
Fri, 29 Jul 2011 18:09:09 +0000 (18:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136476 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Serialization/ASTReader.h
lib/Serialization/ASTReader.cpp

index 1d6c536f2855180dde2ed90e84c15d0ca4529add..bcf5384bc6e59f4bdeaf82f86b61da0b91b90bff 100644 (file)
@@ -32,6 +32,7 @@
 #include "llvm/ADT/APInt.h"
 #include "llvm/ADT/APSInt.h"
 #include "llvm/ADT/OwningPtr.h"
+#include "llvm/ADT/SetVector.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Bitcode/BitstreamReader.h"
@@ -397,9 +398,11 @@ public:
   /// preprocessing record.
   unsigned NumPreallocatedPreprocessingEntities;
   
-  /// \brief All the modules that loaded this one. Can contain NULL for
-  /// directly loaded modules.
-  SmallVector<Module *, 1> Loaders;
+  /// \brief List of modules which depend on this module
+  llvm::SetVector<Module *> ImportedBy;
+  
+  /// \brief List of modules which this module depends on
+  llvm::SetVector<Module *> Imports;
 };
 
 /// \brief The manager for modules loaded by the ASTReader.
index f5c2ec39d77488508c1806f0852ffa22275b71d9..d8f6c6a640b0e84443223230f94be8ad178a3ec0 100644 (file)
@@ -1380,9 +1380,10 @@ ASTReader::ASTReadResult ASTReader::ReadSLocEntryRecord(int ID) {
 SourceLocation ASTReader::getImportLocation(Module *F) {
   if (F->ImportLoc.isValid())
     return F->ImportLoc;
+  
   // Otherwise we have a PCH. It's considered to be "imported" at the first
   // location of its includer.
-  if (F->Loaders.empty() || !F->Loaders[0]) {
+  if (F->ImportedBy.empty() || !F->ImportedBy[0]) {
     // Main file is the importer. We assume that it is the first entry in the
     // entry table. We can't ask the manager, because at the time of PCH loading
     // the main file entry doesn't exist yet.
@@ -1390,7 +1391,8 @@ SourceLocation ASTReader::getImportLocation(Module *F) {
     // offsets 0 and 1.
     return SourceLocation::getFromRawEncoding(2U);
   }
-  return F->Loaders[0]->FirstLoc;
+  //return F->Loaders[0]->FirstLoc;
+  return F->ImportedBy[0]->FirstLoc;
 }
 
 /// ReadBlockAbbrevs - Enter a subblock of the specified BlockID with the
@@ -5466,8 +5468,11 @@ Module &ModuleManager::addModule(StringRef FileName, ModuleKind Type) {
   const FileEntry *Entry = FileMgr.getFile(FileName);
   Modules[Entry] = Current;
 
-  Current->Loaders.push_back(Prev);
-
+  if (Prev) {
+    Current->ImportedBy.insert(Prev);
+    Prev->Imports.insert(Current);
+  }
+  
   return *Current;
 }