[modules] Print input files when -module-file-info file switch is passed.

This patch improves traceability of duplicated header files which end
up in multiple pcms.

Differential Revision: https://reviews.llvm.org/D47118

llvm-svn: 337353
This commit is contained in:
Vassil Vassilev 2018-07-18 06:49:33 +00:00
parent 17c0f721b9
commit 33eb7297d2
2 changed files with 49 additions and 0 deletions

View File

@ -560,6 +560,45 @@ namespace {
Out << "\n";
}
/// Tells the \c ASTReaderListener that we want to receive the
/// input files of the AST file via \c visitInputFile.
bool needsInputFileVisitation() override { return true; }
/// Tells the \c ASTReaderListener that we want to receive the
/// input files of the AST file via \c visitInputFile.
bool needsSystemInputFileVisitation() override { return true; }
/// Indicates that the AST file contains particular input file.
///
/// \returns true to continue receiving the next input file, false to stop.
bool visitInputFile(StringRef Filename, bool isSystem,
bool isOverridden, bool isExplicitModule) override {
Out.indent(2) << "Input file: " << Filename;
if (isSystem || isOverridden || isExplicitModule) {
Out << " [";
if (isSystem) {
Out << "System";
if (isOverridden || isExplicitModule)
Out << ", ";
}
if (isOverridden) {
Out << "Overridden";
if (isExplicitModule)
Out << ", ";
}
if (isExplicitModule)
Out << "ExplicitModule";
Out << "]";
}
Out << "\n";
return true;
}
#undef DUMP_BOOLEAN
};
}

View File

@ -43,6 +43,16 @@
// CHECK: Predefined macros:
// CHECK: -DBLARG
// CHECK: -DWIBBLE=WOBBLE
// CHECK: Input file: {{.*}}DependsOnModulePrivate.h
// CHECK-NEXT: Input file: {{.*}}Other.h
// CHECK-NEXT: Input file: {{.*}}SubFramework.h
// CHECK-NEXT: Input file: {{.*}}not_coroutines.h
// CHECK-NEXT: Input file: {{.*}}not_cxx.h
// CHECK-NEXT: Input file: {{.*}}other.h
// CHECK-NEXT: Input file: {{.*}}module.map
// CHECK-NEXT: Input file: {{.*}}DependsOnModule.h
// CHECK-NEXT: Input file: {{.*}}module_private.map
// CHECK-NEXT: Input file: {{.*}}module.map
// CHECK: Diagnostic options:
// CHECK: IgnoreWarnings: Yes