================
@@ -6472,6 +6486,32 @@ const char *Driver::GetNamedOutputPath(Compilation &C,
const JobAction &JA,
std::string BoundArch = sanitizeTargetIDInFileName(OrigBoundArch);
llvm::PrettyStackTraceString CrashInfo("Computing output path");
+
+ auto CreateTempOutputPath = [&](StringRef Prefix) {
+ const char *Suffix =
+ types::getTypeTempSuffix(JA.getType(), IsCLMode() || IsDXCMode());
+ // The non-offloading toolchain on Darwin requires deterministic input
+ // file name for binaries to be deterministic, therefore it needs unique
+ // directory.
+ const llvm::Triple Triple(C.getDriver().getTargetTriple());
+ const bool NeedUniqueDirectory =
+ (JA.getOffloadingDeviceKind() == Action::OFK_None ||
+ JA.getOffloadingDeviceKind() == Action::OFK_Host) &&
+ Triple.isOSDarwin();
+ return CreateTempFile(C, Prefix, Suffix, MultipleArchs, BoundArch,
+ NeedUniqueDirectory);
+ };
+
+ // Standard library output in -fmodules-driver?
+ if (C.getArgs().hasArg(options::OPT_fmodules_driver) &&
+ isa<PrecompileJobAction>(JA) && !JA.getInputs().empty() &&
+ (JA.getInputs().front()->getType() == types::TY_CXXStdModule ||
+ JA.getInputs().front()->getType() == types::TY_PP_CXXStdModule)) {
+ StringRef Filename = llvm::sys::path::filename(BaseInput);
+ StringRef Stem = llvm::sys::path::stem(Filename);
+ return CreateTempOutputPath(Stem);
----------------
ChuanqiXu9 wrote:
Maybe we need a cache for it in the future.
https://github.com/llvm/llvm-project/pull/199289
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits