================
@@ -721,13 +721,78 @@ Expected<StringRef> compileModule(Module &M, OffloadKind
Kind) {
return *TempFileOrErr;
}
+/// Performs the wrapping stage with individual tool invocations for verbose
+/// printing.
+Expected<StringRef>
+wrapDeviceImagesVerbose(ArrayRef<std::unique_ptr<MemoryBuffer>> Buffers,
+ const ArgList &Args, OffloadKind Kind) {
+ Expected<std::string> WrapperPath = findProgram(
+ "llvm-offload-wrapper", {getExecutableDir("llvm-offload-wrapper")});
+ if (!WrapperPath)
+ return WrapperPath.takeError();
+
+ llvm::Triple Triple(
+ Args.getLastArgValue(OPT_host_triple_EQ, sys::getDefaultTargetTriple()));
+
+ // Generate the runtime registration bitcode from the bundled images.
+ auto BitcodeOrErr = createOutputFile(
+ ExecutableName + "." + getOffloadKindName(Kind) + ".image.wrapper",
"bc");
+ if (!BitcodeOrErr)
+ return BitcodeOrErr.takeError();
+
+ SmallVector<StringRef> WrapperArgs = {
+ *WrapperPath,
+ Args.MakeArgString("--kind=" + getOffloadKindName(Kind)),
+ Args.MakeArgString("--triple=" + Triple.getTriple()),
+ "-o",
+ *BitcodeOrErr,
+ };
+ if (Kind == OFK_OpenMP && Args.hasArg(OPT_relocatable))
+ WrapperArgs.push_back("--relocatable");
+ for (const auto &Buffer : Buffers)
+ WrapperArgs.push_back(Buffer->getBufferIdentifier());
+
+ if (Error Err = executeCommands(*WrapperPath, WrapperArgs))
+ return std::move(Err);
+
+ // Compile the generated registration bitcode into a host object.
+ Expected<std::string> ClangPath =
+ findProgram("clang", {getExecutableDir("clang")});
+ if (!ClangPath)
+ return ClangPath.takeError();
+
+ auto ObjectOrErr = createOutputFile(
+ ExecutableName + "." + getOffloadKindName(Kind) + ".image.wrapper", "o");
+ if (!ObjectOrErr)
+ return ObjectOrErr.takeError();
+
+ SmallVector<StringRef> ClangArgs = {
----------------
arsenm wrote:
```suggestion
StringRef ClangArgs[] = {
```
https://github.com/llvm/llvm-project/pull/204186
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits