[clang] 13a9b22 - Don't delete the module you're inspecting
Chris Bieneman via cfe-commits
cfe-commits at lists.llvm.org
Thu Jun 3 11:00:28 PDT 2021
Author: Chris Bieneman
Date: 2021-06-03T13:00:09-05:00
New Revision: 13a9b2220f227631b3495a42abbab7fc2b414b69
URL: https://github.com/llvm/llvm-project/commit/13a9b2220f227631b3495a42abbab7fc2b414b69
DIFF: https://github.com/llvm/llvm-project/commit/13a9b2220f227631b3495a42abbab7fc2b414b69.diff
LOG: Don't delete the module you're inspecting
Prior to this patch when you used `clang -module-file-info` clang would
delete the module on completion because the module was treated as an
output file.
This fixes the issue so you don't need to invoke cc1 directly to get
module file information.
Reviewed By: steven_wu, phosek
Differential Revision: https://reviews.llvm.org/D103547
Added:
clang/test/Modules/clang_module_file_info.m
Modified:
clang/lib/Driver/Driver.cpp
Removed:
################################################################################
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 5f1553337fea3..287b218641546 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -4883,6 +4883,11 @@ const char *Driver::GetNamedOutputPath(Compilation &C, const JobAction &JA,
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
index 0000000000000..b949c68c63903
--- /dev/null
+++ b/clang/test/Modules/clang_module_file_info.m
@@ -0,0 +1,16 @@
+
+ at 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
More information about the cfe-commits
mailing list