]> granicus.if.org Git - clang/commitdiff
Refactor ASTReader::getSourceDescriptor(const Module &) into a constructor
authorAdrian Prantl <aprantl@apple.com>
Sat, 19 Sep 2015 00:10:32 +0000 (00:10 +0000)
committerAdrian Prantl <aprantl@apple.com>
Sat, 19 Sep 2015 00:10:32 +0000 (00:10 +0000)
of ASTSourceDescriptor. It was effectively a static function.

NFC.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248069 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/ExternalASTSource.h
include/clang/Serialization/ASTReader.h
lib/AST/ExternalASTSource.cpp
lib/CodeGen/CGDebugInfo.cpp
lib/Serialization/ASTReader.cpp

index d5d52e60b1fab70e14df2f57b56b50467c9cdaa0..6be592f0e1f2a878082505772db2685cc14e422e 100644 (file)
@@ -142,19 +142,23 @@ public:
   /// \brief Retrieve the module that corresponds to the given module ID.
   virtual Module *getModule(unsigned ID) { return nullptr; }
 
-  /// \brief Holds everything needed to generate debug info for an
-  /// imported module or precompiled header file.
+  /// Abstracts clang modules and precompiled header files and holds
+  /// everything needed to generate debug info for an imported module
+  /// or PCH.
   struct ASTSourceDescriptor {
+    ASTSourceDescriptor(std::string Name, std::string Path, std::string ASTFile,
+                        uint64_t Signature)
+        : ModuleName(Name), Path(Path), ASTFile(ASTFile),
+          Signature(Signature){};
+    ASTSourceDescriptor(const Module &M);
     std::string ModuleName;
     std::string Path;
     std::string ASTFile;
-    uint64_t Signature;
+    uint64_t Signature = 0;
   };
 
-  /// \brief Return a descriptor for the corresponding module, if one exists.
+  /// Return a descriptor for the corresponding module, if one exists.
   virtual llvm::Optional<ASTSourceDescriptor> getSourceDescriptor(unsigned ID);
-  /// \brief Return a descriptor for the module.
-  virtual ASTSourceDescriptor getSourceDescriptor(const Module &M);
 
   /// \brief Finds all declarations lexically contained within the given
   /// DeclContext, after applying an optional filter predicate.
index 1039faebe0c07b5741e7f1f1ac1fa857717de496..be37186b3eedb036b1083088c44cb168c43553c6 100644 (file)
@@ -1889,8 +1889,6 @@ public:
 
   /// \brief Return a descriptor for the corresponding module.
   llvm::Optional<ASTSourceDescriptor> getSourceDescriptor(unsigned ID) override;
-  /// \brief Return a descriptor for the module.
-  ASTSourceDescriptor getSourceDescriptor(const Module &M) override;
 
   /// \brief Retrieve a selector from the given module with its local ID
   /// number.
index 8a44c05dbb7d30d4dd72d83796d50efacfcf8aed..62d41d3e497745c0f3cc67746866f5bdd86aa992 100644 (file)
@@ -16,6 +16,7 @@
 #include "clang/AST/ExternalASTSource.h"
 #include "clang/AST/ASTContext.h"
 #include "clang/AST/DeclarationName.h"
+#include "clang/Basic/Module.h"
 #include "llvm/Support/ErrorHandling.h"
 
 using namespace clang;
@@ -27,9 +28,12 @@ ExternalASTSource::getSourceDescriptor(unsigned ID) {
   return None;
 }
 
-ExternalASTSource::ASTSourceDescriptor
-ExternalASTSource::getSourceDescriptor(const Module &M) {
-  return ASTSourceDescriptor();
+ExternalASTSource::ASTSourceDescriptor::ASTSourceDescriptor(const Module &M)
+    : ModuleName(M.getFullModuleName()), Signature(M.Signature) {
+  if (M.Directory)
+    Path = M.Directory->getName();
+  if (auto *File = M.getASTFile())
+    ASTFile = File->getName();
 }
 
 void ExternalASTSource::FindFileRegionDecls(FileID File, unsigned Offset,
index 723e8ffde3bfcda4eeaf9074b4d214b98cc31e59..7d6bd1668739019fd6c6538b8ed80a5a7791dabc 100644 (file)
@@ -3391,8 +3391,7 @@ void CGDebugInfo::EmitUsingDecl(const UsingDecl &UD) {
 }
 
 void CGDebugInfo::EmitImportDecl(const ImportDecl &ID) {
-  auto *Reader = CGM.getContext().getExternalSource();
-  auto Info = Reader->getSourceDescriptor(*ID.getImportedModule());
+  auto Info = ExternalASTSource::ASTSourceDescriptor(*ID.getImportedModule());
   DBuilder.createImportedDeclaration(
       getCurrentContextDescriptor(cast<Decl>(ID.getDeclContext())),
       getOrCreateModuleRef(Info, DebugTypeExtRefs),
index 45837285cda76953f7b36fcb71e063dd2e38352a..110afbdf863670b87107b56dad4ac132be0ebd2d 100644 (file)
@@ -7403,33 +7403,17 @@ unsigned ASTReader::getModuleFileID(ModuleFile *F) {
   return (I - PCHModules.end()) << 1;
 }
 
-ExternalASTSource::ASTSourceDescriptor
-ASTReader::getSourceDescriptor(const Module &M) {
-  StringRef Dir, Filename;
-  if (M.Directory)
-    Dir = M.Directory->getName();
-  if (auto *File = M.getASTFile())
-    Filename = File->getName();
-  return ASTReader::ASTSourceDescriptor{
-             M.getFullModuleName(), Dir, Filename,
-             M.Signature
-         };
-}
-
 llvm::Optional<ExternalASTSource::ASTSourceDescriptor>
 ASTReader::getSourceDescriptor(unsigned ID) {
   if (const Module *M = getSubmodule(ID))
-    return getSourceDescriptor(*M);
+    return ExternalASTSource::ASTSourceDescriptor(*M);
 
   // If there is only a single PCH, return it instead.
   // Chained PCH are not suported.
   if (ModuleMgr.size() == 1) {
     ModuleFile &MF = ModuleMgr.getPrimaryModule();
-    return ASTReader::ASTSourceDescriptor{
-      MF.OriginalSourceFileName, MF.OriginalDir,
-      MF.FileName,
-      MF.Signature
-    };
+    return ASTReader::ASTSourceDescriptor(
+        MF.OriginalSourceFileName, MF.OriginalDir, MF.FileName, MF.Signature);
   }
   return None;
 }