r248069 - Refactor ASTReader::getSourceDescriptor(const Module &) into a constructor
David Blaikie via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 18 17:15:56 PDT 2015
On Fri, Sep 18, 2015 at 5:10 PM, Adrian Prantl via cfe-commits <
cfe-commits at lists.llvm.org> wrote:
> Author: adrian
> Date: Fri Sep 18 19:10:32 2015
> New Revision: 248069
>
> URL: http://llvm.org/viewvc/llvm-project?rev=248069&view=rev
> Log:
> Refactor ASTReader::getSourceDescriptor(const Module &) into a constructor
> of ASTSourceDescriptor. It was effectively a static function.
>
> NFC.
>
> Modified:
> cfe/trunk/include/clang/AST/ExternalASTSource.h
> cfe/trunk/include/clang/Serialization/ASTReader.h
> cfe/trunk/lib/AST/ExternalASTSource.cpp
> cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
> cfe/trunk/lib/Serialization/ASTReader.cpp
>
> Modified: cfe/trunk/include/clang/AST/ExternalASTSource.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ExternalASTSource.h?rev=248069&r1=248068&r2=248069&view=diff
>
> ==============================================================================
> --- cfe/trunk/include/clang/AST/ExternalASTSource.h (original)
> +++ cfe/trunk/include/clang/AST/ExternalASTSource.h Fri Sep 18 19:10:32
> 2015
> @@ -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),
>
Missing std::moves on all three of these initializers ^
> + 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.
>
> Modified: cfe/trunk/include/clang/Serialization/ASTReader.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ASTReader.h?rev=248069&r1=248068&r2=248069&view=diff
>
> ==============================================================================
> --- cfe/trunk/include/clang/Serialization/ASTReader.h (original)
> +++ cfe/trunk/include/clang/Serialization/ASTReader.h Fri Sep 18 19:10:32
> 2015
> @@ -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.
>
> Modified: cfe/trunk/lib/AST/ExternalASTSource.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExternalASTSource.cpp?rev=248069&r1=248068&r2=248069&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/AST/ExternalASTSource.cpp (original)
> +++ cfe/trunk/lib/AST/ExternalASTSource.cpp Fri Sep 18 19:10:32 2015
> @@ -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(u
> 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,
>
> Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=248069&r1=248068&r2=248069&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Fri Sep 18 19:10:32 2015
> @@ -3391,8 +3391,7 @@ void CGDebugInfo::EmitUsingDecl(const Us
> }
>
> 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),
>
> Modified: cfe/trunk/lib/Serialization/ASTReader.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=248069&r1=248068&r2=248069&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Serialization/ASTReader.cpp (original)
> +++ cfe/trunk/lib/Serialization/ASTReader.cpp Fri Sep 18 19:10:32 2015
> @@ -7403,33 +7403,17 @@ unsigned ASTReader::getModuleFileID(Modu
> 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;
> }
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150918/d42b6a4d/attachment.html>
More information about the cfe-commits
mailing list