Author: bruno Date: Mon Sep 10 22:17:13 2018 New Revision: 341902 URL: http://llvm.org/viewvc/llvm-project?rev=341902&view=rev Log: [Modules] Add imported modules to the output of -module-file-info
Fix a bug in the deserialization of IMPORTS section and allow for imported modules to also be printed with -module-file-info. rdar://problem/43867753 Modified: cfe/trunk/include/clang/Serialization/ASTReader.h cfe/trunk/lib/Frontend/FrontendActions.cpp cfe/trunk/lib/Serialization/ASTReader.cpp cfe/trunk/test/Modules/module_file_info.m Modified: cfe/trunk/include/clang/Serialization/ASTReader.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ASTReader.h?rev=341902&r1=341901&r2=341902&view=diff ============================================================================== --- cfe/trunk/include/clang/Serialization/ASTReader.h (original) +++ cfe/trunk/include/clang/Serialization/ASTReader.h Mon Sep 10 22:17:13 2018 @@ -232,7 +232,7 @@ public: /// If needsImportVisitation returns \c true, this is called for each /// AST file imported by this AST file. - virtual void visitImport(StringRef Filename) {} + virtual void visitImport(StringRef ModuleName, StringRef Filename) {} /// Indicates that a particular module file extension has been read. virtual void readModuleFileExtension( Modified: cfe/trunk/lib/Frontend/FrontendActions.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/FrontendActions.cpp?rev=341902&r1=341901&r2=341902&view=diff ============================================================================== --- cfe/trunk/lib/Frontend/FrontendActions.cpp (original) +++ cfe/trunk/lib/Frontend/FrontendActions.cpp Mon Sep 10 22:17:13 2018 @@ -601,6 +601,17 @@ namespace { return true; } + + /// Returns true if this \c ASTReaderListener wants to receive the + /// imports of the AST file via \c visitImport, false otherwise. + bool needsImportVisitation() const override { return true; } + + /// If needsImportVisitation returns \c true, this is called for each + /// AST file imported by this AST file. + void visitImport(StringRef ModuleName, StringRef Filename) override { + Out.indent(2) << "Imports module '" << ModuleName + << "': " << Filename.str() << "\n"; + } #undef DUMP_BOOLEAN }; } Modified: cfe/trunk/lib/Serialization/ASTReader.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=341902&r1=341901&r2=341902&view=diff ============================================================================== --- cfe/trunk/lib/Serialization/ASTReader.cpp (original) +++ cfe/trunk/lib/Serialization/ASTReader.cpp Mon Sep 10 22:17:13 2018 @@ -4868,11 +4868,11 @@ bool ASTReader::readASTFileControlBlock( unsigned Idx = 0, N = Record.size(); while (Idx < N) { // Read information about the AST file. - Idx += 5; // ImportLoc, Size, ModTime, Signature - SkipString(Record, Idx); // Module name; FIXME: pass to listener? + Idx += 1+1+1+1+5; // Kind, ImportLoc, Size, ModTime, Signature + std::string ModuleName = ReadString(Record, Idx); std::string Filename = ReadString(Record, Idx); ResolveImportedPath(Filename, ModuleDir); - Listener.visitImport(Filename); + Listener.visitImport(ModuleName, Filename); } break; } Modified: cfe/trunk/test/Modules/module_file_info.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/module_file_info.m?rev=341902&r1=341901&r2=341902&view=diff ============================================================================== --- cfe/trunk/test/Modules/module_file_info.m (original) +++ cfe/trunk/test/Modules/module_file_info.m Mon Sep 10 22:17:13 2018 @@ -16,6 +16,7 @@ // CHECK: Module name: DependsOnModule // CHECK: Module map file: {{.*}}DependsOnModule.framework{{[/\\]}}module.map +// CHECK: Imports module 'Module': {{.*}}Module.pcm // CHECK: Language options: // CHECK: C99: Yes _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits