================
@@ -5858,22 +5858,67 @@ static void handleTimeTrace(Compilation &C, const
ArgList &Args,
Args.getLastArg(options::OPT_ftime_trace, options::OPT_ftime_trace_EQ);
if (!A)
return;
+
+ std::string OffloadingPrefix;
+ if (JA->getOffloadingDeviceKind() != Action::OFK_None) {
+ const ToolChain *TC = JA->getOffloadingToolChain();
+ OffloadingPrefix = Action::GetOffloadingFileNamePrefix(
+ JA->getOffloadingDeviceKind(),
+ TC ? TC->getTriple().normalize() : "",
+ /*CreatePrefixForHost=*/false);
+ if (const char *Arch = JA->getOffloadingArch()) {
+ OffloadingPrefix += "-";
+ OffloadingPrefix += Arch;
+ }
+ } else if (JA->getOffloadingHostActiveKinds() != Action::OFK_None &&
+ C.getDriver().isSaveTempsEnabled()) {
+ OffloadingPrefix = Action::GetOffloadingFileNamePrefix(
+ Action::OFK_None,
+ C.getDefaultToolChain().getTriple().normalize(),
+ /*CreatePrefixForHost=*/true);
+ }
+
SmallString<128> Path;
if (A->getOption().matches(options::OPT_ftime_trace_EQ)) {
Path = A->getValue();
if (llvm::sys::fs::is_directory(Path)) {
- SmallString<128> Tmp(Result.getFilename());
- llvm::sys::path::replace_extension(Tmp, "json");
- llvm::sys::path::append(Path, llvm::sys::path::filename(Tmp));
+ // When -ftime-trace=<dir> and it's a directory:
+ // - For host/non-offload: use the output filename stem
+ // - For offload: use input filename stem + offloading prefix
+ SmallString<128> Tmp;
+ if (OffloadingPrefix.empty()) {
----------------
jhuber6 wrote:
Why does this portion need to be aware of the OffloadingPrefix? Couldn't we
just replace the value of `Result` or something?
https://github.com/llvm/llvm-project/pull/179701
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits