]> granicus.if.org Git - clang/commitdiff
Add module name and module map file to -module-file-info
authorBen Langmuir <blangmuir@apple.com>
Mon, 14 Apr 2014 22:12:44 +0000 (22:12 +0000)
committerBen Langmuir <blangmuir@apple.com>
Mon, 14 Apr 2014 22:12:44 +0000 (22:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@206217 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Serialization/ASTReader.h
lib/Frontend/FrontendActions.cpp
lib/Serialization/ASTReader.cpp
test/Modules/module_file_info.m

index 1f27e384ae8820faafbe4077001d212cebf0d428..ffd72752557be9fc7394ea278e4f3c9a7cfc01d0 100644 (file)
@@ -109,6 +109,9 @@ public:
     return FullVersion != getClangFullRepositoryVersion();
   }
 
+  virtual void ReadModuleName(StringRef ModuleName) {}
+  virtual void ReadModuleMapFile(StringRef ModuleMapPath) {}
+
   /// \brief Receives the language options.
   ///
   /// \returns true to indicate the options are invalid or false otherwise.
@@ -203,6 +206,8 @@ public:
       : First(First), Second(Second) { }
 
   bool ReadFullVersionInformation(StringRef FullVersion) override;
+  void ReadModuleName(StringRef ModuleName) override;
+  void ReadModuleMapFile(StringRef ModuleMapPath) override;
   bool ReadLanguageOptions(const LangOptions &LangOpts, bool Complain) override;
   bool ReadTargetOptions(const TargetOptions &TargetOpts,
                          bool Complain) override;
index bbd2dff46c06c600c2c09eb1d21bd2380f63e8e7..1092c56ed59806f2a63a582129fe2d324683ba92 100644 (file)
@@ -416,6 +416,13 @@ namespace {
       return ASTReaderListener::ReadFullVersionInformation(FullVersion);
     }
 
+    void ReadModuleName(StringRef ModuleName) override {
+      Out.indent(2) << "Module name: " << ModuleName << "\n";
+    }
+    void ReadModuleMapFile(StringRef ModuleMapPath) override {
+      Out.indent(2) << "Module map file: " << ModuleMapPath << "\n";
+    }
+
     bool ReadLanguageOptions(const LangOptions &LangOpts,
                              bool Complain) override {
       Out.indent(2) << "Language options:\n";
index ea3b8b6cd1d432386ea9a31a1ad0882a284a6529..78bf151c63f40d0aef37f0dbe9d308790dc84df6 100644 (file)
@@ -70,6 +70,14 @@ ChainedASTReaderListener::ReadFullVersionInformation(StringRef FullVersion) {
   return First->ReadFullVersionInformation(FullVersion) ||
          Second->ReadFullVersionInformation(FullVersion);
 }
+void ChainedASTReaderListener::ReadModuleName(StringRef ModuleName) {
+  First->ReadModuleName(ModuleName);
+  Second->ReadModuleName(ModuleName);
+}
+void ChainedASTReaderListener::ReadModuleMapFile(StringRef ModuleMapPath) {
+  First->ReadModuleMapFile(ModuleMapPath);
+  Second->ReadModuleMapFile(ModuleMapPath);
+}
 bool ChainedASTReaderListener::ReadLanguageOptions(const LangOptions &LangOpts,
                                                    bool Complain) {
   return First->ReadLanguageOptions(LangOpts, Complain) ||
@@ -2313,6 +2321,8 @@ ASTReader::ReadControlBlock(ModuleFile &F,
 
     case MODULE_NAME:
       F.ModuleName = Blob;
+      if (Listener)
+        Listener->ReadModuleName(F.ModuleName);
       break;
 
     case MODULE_MAP_FILE:
@@ -2347,6 +2357,9 @@ ASTReader::ReadControlBlock(ModuleFile &F,
           return OutOfDate;
         }
       }
+
+      if (Listener)
+        Listener->ReadModuleMapFile(F.ModuleMapPath);
       break;
 
     case INPUT_FILE_OFFSETS:
@@ -3952,6 +3965,12 @@ bool ASTReader::readASTFileControlBlock(StringRef Filename,
       
       break;
     }
+    case MODULE_NAME:
+      Listener.ReadModuleName(Blob);
+      break;
+    case MODULE_MAP_FILE:
+      Listener.ReadModuleMapFile(Blob);
+      break;
     case LANGUAGE_OPTIONS:
       if (ParseLanguageOptions(Record, false, Listener))
         return true;
index f9a35babd05d3cff45e4d3589a6c4e8aefa7070c..9f1ff2221b7efc15ab038039de7ffa6a94436ff5 100644 (file)
@@ -7,6 +7,9 @@
 
 // CHECK: Generated by this Clang:
 
+// CHECK: Module name: DependsOnModule
+// CHECK: Module map file: {{.*}}DependsOnModule.framework{{[/\\]}}module.map
+
 // CHECK: Language options:
 // CHECK:   C99: Yes
 // CHECK:   Objective-C 1: Yes