[PATCH] D125165: [Clang] Introduce clang-offload-binary tool to bundle device files
Artem Belevich via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon May 9 14:36:59 PDT 2022
tra added inline comments.
================
Comment at: clang/docs/ClangOffloadBinary.rst:8
+
+.. _clang-offload-binary:
+
----------------
Naming nit: `binary` may not be the best term for what we're trying to do here. Perhaps something like `package`, `container` or `collection` would work better.
================
Comment at: clang/docs/ClangOffloadBinary.rst:42
+
+ clang-offload-binary options:
+
----------------
This appears to be a one-way process. How one would examine what's in the binary and unpack/extract specific component from it?
================
Comment at: clang/test/Frontend/embed-object.ll:7
+; CHECK: @[[OBJECT_1:.+]] = private constant [0 x i8] zeroinitializer, section ".llvm.offloading", align 8
+; CHECK: @[[OBJECT_2:.+]] = private constant [0 x i8] zeroinitializer, section ".llvm.offloading", align 8
; CHECK: @llvm.compiler.used = appending global [3 x ptr] [ptr @x, ptr @[[OBJECT_1]], ptr @[[OBJECT_2]]], section "llvm.metadata"
----------------
What will happen if an openMP file compiled this way is linked with the older version of OpenMP runtime which presumably expected to see extra data in `.llvm.offloading`?
Will it provide a sensible error? Perhaps we should change the section name, too.
================
Comment at: clang/tools/clang-offload-binary/ClangOffloadBinary.cpp:70
+ raw_svector_ostream OS(BinaryData);
+ for (StringRef Image : DeviceImages) {
+ StringMap<StringRef> Args;
----------------
It would be useful to add a comment describing the 'special' keys `file` and `kind`.
================
Comment at: clang/tools/clang-offload-binary/ClangOffloadBinary.cpp:75
+
+ if (!Args.count("triple") || !Args.count("file"))
+ return reportError(createStringError(
----------------
Should `kind` also be required? If not, what's the default kind?
================
Comment at: clang/tools/clang-offload-binary/ClangOffloadBinary.cpp:99
+ }
+ std::unique_ptr<MemoryBuffer> Buffer = OffloadBinary::write(ImageBinary);
+ OS << Buffer->getBuffer();
----------------
Nit: `write` is a rather misleading function name here. AFAICT, we're not actually writing anything, but rather packing the `ImageBinary` into a memory buffer, which we then return.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D125165/new/
https://reviews.llvm.org/D125165
More information about the cfe-commits
mailing list