@@ -5571,6 +5571,17 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args,
5571
5571
// When compiling for -fsycl, generate the integration header files and the
5572
5572
// Unique ID that will be used during the compilation.
5573
5573
if (Args.hasFlag (options::OPT_fsycl, options::OPT_fno_sycl, false )) {
5574
+ const bool IsSaveTemps = isSaveTempsEnabled ();
5575
+ SmallString<128 > OutFileDir;
5576
+ if (IsSaveTemps) {
5577
+ if (SaveTemps == SaveTempsObj) {
5578
+ auto *OptO = C.getArgs ().getLastArg (options::OPT_o);
5579
+ OutFileDir = (OptO ? OptO->getValues ()[0 ] : " " );
5580
+ llvm::sys::path::remove_filename (OutFileDir);
5581
+ if (!OutFileDir.empty ())
5582
+ OutFileDir.append (llvm::sys::path::get_separator ());
5583
+ }
5584
+ }
5574
5585
for (auto &I : Inputs) {
5575
5586
std::string SrcFileName (I.second ->getAsString (Args));
5576
5587
if (I.first == types::TY_PP_C || I.first == types::TY_PP_CXX ||
@@ -5582,12 +5593,23 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args,
5582
5593
}
5583
5594
if (!types::isSrcFile (I.first ))
5584
5595
continue ;
5585
- std::string TmpFileNameHeader = C.getDriver ().GetTemporaryPath (
5586
- llvm::sys::path::stem (SrcFileName).str () + " -header" , " h" );
5596
+
5597
+ std::string TmpFileNameHeader;
5598
+ std::string TmpFileNameFooter;
5599
+ auto StemmedSrcFileName = llvm::sys::path::stem (SrcFileName).str ();
5600
+ if (IsSaveTemps) {
5601
+ TmpFileNameHeader.append (C.getDriver ().GetUniquePath (
5602
+ OutFileDir.c_str () + StemmedSrcFileName + " -header" , " h" ));
5603
+ TmpFileNameFooter.append (C.getDriver ().GetUniquePath (
5604
+ OutFileDir.c_str () + StemmedSrcFileName + " -footer" , " h" ));
5605
+ } else {
5606
+ TmpFileNameHeader.assign (C.getDriver ().GetTemporaryPath (
5607
+ StemmedSrcFileName + " -header" , " h" ));
5608
+ TmpFileNameFooter =
5609
+ C.getDriver ().GetTemporaryPath (StemmedSrcFileName + " -footer" , " h" );
5610
+ }
5587
5611
StringRef TmpFileHeader =
5588
5612
C.addTempFile (C.getArgs ().MakeArgString (TmpFileNameHeader));
5589
- std::string TmpFileNameFooter = C.getDriver ().GetTemporaryPath (
5590
- llvm::sys::path::stem (SrcFileName).str () + " -footer" , " h" );
5591
5613
StringRef TmpFileFooter =
5592
5614
C.addTempFile (C.getArgs ().MakeArgString (TmpFileNameFooter));
5593
5615
// Use of -fsycl-footer-path puts the integration footer into that
0 commit comments