Skip to content

Commit 2addab0

Browse files
committed
fix code duplication
1 parent b8cef90 commit 2addab0

File tree

1 file changed

+33
-27
lines changed

1 file changed

+33
-27
lines changed

clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp

Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)