diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -4883,6 +4883,11 @@
     return "-";
   }
 
+  if (JA.getType() == types::TY_ModuleFile &&
+      C.getArgs().getLastArg(options::OPT_module_file_info)) {
+    return "-";
+  }
+
   // Is this the assembly listing for /FA?
   if (JA.getType() == types::TY_PP_Asm &&
       (C.getArgs().hasArg(options::OPT__SLASH_FA) ||
diff --git a/clang/test/Modules/clang_module_file_info.m b/clang/test/Modules/clang_module_file_info.m
new file mode 100644
--- /dev/null
+++ b/clang/test/Modules/clang_module_file_info.m
@@ -0,0 +1,16 @@
+
+@import DependsOnModule;
+
+// RUN: rm -rf %t %t-obj
+// RUN: %clang_cc1 -w -Wunused -fmodules -fmodule-format=obj -fimplicit-module-maps -fdisable-module-hash -fmodules-cache-path=%t-obj -F %S/Inputs -DBLARG -DWIBBLE=WOBBLE -fmodule-feature myfeature %s
+// RUN: %clang -module-file-info %t-obj/DependsOnModule.pcm | FileCheck %s
+// RUN: %clang -module-file-info %t-obj/DependsOnModule.pcm | FileCheck %s
+
+// This test is just verifying that the clang driver doesn't delete the input
+// file when -module-file-info is passed. We verify this by dumping the module
+// twice subsequently. We have other tests to verify the contents of the module
+// and the tool output (see: module_file_info.m)
+
+// CHECK: Generated by this Clang:
+
+// CHECK: Module name: DependsOnModule