[PATCH] D66601: [Clang][Bundler] Do not require host triple for extracting device bundles
Sergey Dmitriev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Aug 26 16:07:44 PDT 2019
sdmitriev updated this revision to Diff 217259.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D66601/new/
https://reviews.llvm.org/D66601
Files:
clang/test/Driver/clang-offload-bundler.c
clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp
Index: clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp
===================================================================
--- clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp
+++ clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp
@@ -790,8 +790,9 @@
return false;
}
- // If we found elements, we emit an error if none of those were for the host.
- if (!FoundHostBundle) {
+ // If we found elements, we emit an error if none of those were for the host
+ // in case host bundle name was provided in command line.
+ if (!FoundHostBundle && HostInputIndex != ~0u) {
errs() << "error: Can't find bundle for the host target\n";
return true;
}
@@ -894,7 +895,9 @@
++Index;
}
- if (HostTargetNum != 1) {
+ // Host triple is not really needed for unbundling operation, so do not
+ // treat missing host triple as error if we do unbundling.
+ if ((Unbundle && HostTargetNum > 1) || (!Unbundle && HostTargetNum != 1)) {
Error = true;
errs() << "error: expecting exactly one host target but got "
<< HostTargetNum << ".\n";
Index: clang/test/Driver/clang-offload-bundler.c
===================================================================
--- clang/test/Driver/clang-offload-bundler.c
+++ clang/test/Driver/clang-offload-bundler.c
@@ -183,6 +183,10 @@
// RUN: diff %t.empty %t.res.tgt1
// RUN: diff %t.empty %t.res.tgt2
+// Check that we can extract target parts without providing host triple.
+// RUN: clang-offload-bundler -type=s -targets=openmp-powerpc64le-ibm-linux-gnu -outputs=%t.res.tgt1 -inputs=%t.bundle3.s -unbundle
+// RUN: diff %t.tgt1 %t.res.tgt1
+
//
// Check binary bundle/unbundle. The content that we have before bundling must be the same we have after unbundling.
//
@@ -221,6 +225,10 @@
// RUN: diff %t.empty %t.res.tgt1
// RUN: diff %t.empty %t.res.tgt2
+// Check that we can extract target parts without providing host triple.
+// RUN: clang-offload-bundler -type=ast -targets=openmp-powerpc64le-ibm-linux-gnu -outputs=%t.res.tgt1 -inputs=%t.bundle3.unordered.ast -unbundle
+// RUN: diff %t.tgt1 %t.res.tgt1
+
//
// Check object bundle/unbundle. The content should be bundled into an ELF
// section (we are using a PowerPC little-endian host which uses ELF). We
@@ -253,6 +261,10 @@
// RUN: diff %t.empty %t.res.tgt1
// RUN: diff %t.empty %t.res.tgt2
+// Check that we can extract target parts without providing host triple.
+// RUN: clang-offload-bundler -type=o -targets=openmp-powerpc64le-ibm-linux-gnu -outputs=%t.res.tgt1 -inputs=%t.bundle3.o -unbundle
+// RUN: diff %t.tgt1 %t.res.tgt1
+
// Some code so that we can create a binary out of this file.
int A = 0;
void test_func(void) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66601.217259.patch
Type: text/x-patch
Size: 2714 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190826/f967f1c1/attachment.bin>
More information about the cfe-commits
mailing list