@@ -751,6 +751,26 @@ runSYCLPostLinkTool(ArrayRef<StringRef> InputFiles, const ArgList &Args) {
751751 return llvm::module_split::parseProcessedModulesFromFile(*TempFileOrErr);
752752}
753753
754+ /// Prints the message for DryRun and Verbose modes. The message contains of
755+ /// input, output and settings.
756+ void logSYCLLibraryInvocation(
757+ ArrayRef<StringRef> InputFiles,
758+ const std::vector<module_split::ProcessedModule> &Modules,
759+ const module_split::ModuleProcessingSettings &Settings) {
760+ auto InputFilesStr = llvm::join(InputFiles.begin(), InputFiles.end(), ",");
761+ SmallString<128> SplitOutputFilesStr;
762+ for (size_t I = 0, E = Modules.size(); I != E; ++I) {
763+ if (I > 0)
764+ SplitOutputFilesStr += ',';
765+
766+ SplitOutputFilesStr += Modules[I].ModuleFilePath;
767+ }
768+
769+ errs() << formatv("sycl-post-link-library: input: {0}, output: {1}, {2}\n",
770+ InputFilesStr, SplitOutputFilesStr,
771+ convertProcessingSettingsToString(Settings));
772+ }
773+
754774/// Invokes SYCL Post Link library for SYCL offloading.
755775///
756776/// \param InputFiles the list of input LLVM IR files.
@@ -766,11 +786,19 @@ runSYCLPostLinkLibrary(ArrayRef<StringRef> InputFiles, const ArgList &Args,
766786 llvm::module_split::ModuleProcessingSettings Settings;
767787 Settings.Mode = Mode;
768788 Settings.OutputPrefix = "";
789+ if (DryRun) {
790+ auto OutputFileOrErr = createOutputFile(
791+ sys::path::filename(ExecutableName) + ".sycl.split.image", "bc");
792+ if (!OutputFileOrErr)
793+ return OutputFileOrErr.takeError();
769794
770- for (StringRef InputFile : InputFiles) {
771- if (DryRun)
772- break;
795+ OutputModules.emplace_back(*OutputFileOrErr, util::PropertySetRegistry(),
796+ "");
797+ logSYCLLibraryInvocation(InputFiles, OutputModules, Settings);
798+ return OutputModules;
799+ }
773800
801+ for (StringRef InputFile : InputFiles) {
774802 SMDiagnostic Err;
775803 LLVMContext C;
776804 std::unique_ptr<Module> M = parseIRFile(InputFile, Err, C);
@@ -787,30 +815,8 @@ runSYCLPostLinkLibrary(ArrayRef<StringRef> InputFiles, const ArgList &Args,
787815 NewModules.end());
788816 }
789817
790- if (Verbose || DryRun) {
791- if (DryRun) {
792- auto OutputFileOrErr = createOutputFile(
793- sys::path::filename(ExecutableName) + ".sycl.split.image", "bc");
794- if (!OutputFileOrErr)
795- return OutputFileOrErr.takeError();
796-
797- OutputModules.emplace_back(*OutputFileOrErr, util::PropertySetRegistry(),
798- "");
799- }
800-
801- auto InputFilesStr = llvm::join(InputFiles.begin(), InputFiles.end(), ",");
802- std::string SplitOutputFilesStr;
803- for (size_t I = 0, E = OutputModules.size(); I != E; ++I) {
804- if (I > 0)
805- SplitOutputFilesStr += ',';
806-
807- SplitOutputFilesStr += OutputModules[I].ModuleFilePath;
808- }
809-
810- errs() << formatv("sycl-post-link-library: input: {0}, output: {1}, {2}\n",
811- InputFilesStr, SplitOutputFilesStr,
812- convertProcessingSettingsToString(Settings));
813- }
818+ if (Verbose)
819+ logSYCLLibraryInvocation(InputFiles, OutputModules, Settings);
814820
815821 return OutputModules;
816822}
0 commit comments