[PATCH] D146364: [Driver] Fix naming conflicts of getStatsFileName when using LTO
Yingwei Zheng via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Mar 18 11:32:20 PDT 2023
dtcxzyw created this revision.
dtcxzyw added reviewers: liaolucy, StephenFan.
Herald added a subscriber: inglorion.
Herald added a project: All.
dtcxzyw requested review of this revision.
Herald added subscribers: cfe-commits, MaskRay.
Herald added a project: clang.
When using `clang` with `-flto=thin -save-stats=obj` to compile a multi-file program, `clang` will save internal statistics during the link time code generation to `<obj_dir>/.stats` because `BaseName` is empty. When multiple binaries are placed in the same directory, conflicts will be caused by identical filenames for statistics. This patch uses the output filename as the base name instead of the input when `-save-stats=obj`.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D146364
Files:
clang/lib/Driver/ToolChains/CommonArgs.cpp
Index: clang/lib/Driver/ToolChains/CommonArgs.cpp
===================================================================
--- clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -1774,14 +1774,13 @@
StringRef SaveStats = A->getValue();
if (SaveStats == "obj" && Output.isFilename()) {
StatsFile.assign(Output.getFilename());
- llvm::sys::path::remove_filename(StatsFile);
- } else if (SaveStats != "cwd") {
+ } else if (SaveStats == "cwd") {
+ StatsFile.assign(Input.getBaseInput());
+ } else {
D.Diag(diag::err_drv_invalid_value) << A->getAsString(Args) << SaveStats;
return {};
}
- StringRef BaseName = llvm::sys::path::filename(Input.getBaseInput());
- llvm::sys::path::append(StatsFile, BaseName);
llvm::sys::path::replace_extension(StatsFile, "stats");
} else {
assert(D.CCPrintInternalStats);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D146364.506306.patch
Type: text/x-patch
Size: 912 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230318/23475974/attachment.bin>
More information about the cfe-commits
mailing list