[clang] [llvm] [Offload][SYCL] Refactor OffloadKind implementation (PR #135809)

2025-04-16 Thread Arvind Sudarsanam via cfe-commits

asudarsa wrote:

AddressSanitizer test is passing in subsequent runs. Mostly a flaky issue.

Thanks

https://github.com/llvm/llvm-project/pull/135809
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [Offload][SYCL] Refactor OffloadKind implementation (PR #135809)

2025-04-16 Thread LLVM Continuous Integration via cfe-commits

llvm-ci wrote:

LLVM Buildbot has detected a new failure on builder 
`llvm-clang-x86_64-gcc-ubuntu` running on `sie-linux-worker3` while building 
`clang,llvm` at step 6 "test-build-unified-tree-check-all".

Full details are available at: 
https://lab.llvm.org/buildbot/#/builders/174/builds/16286


Here is the relevant piece of the build log for the reference

```
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
 TEST 'AddressSanitizer-x86_64-linux :: 
TestCases/asan_lsan_deadlock.cpp' FAILED 
Exit Code: 1

Command Output (stderr):
--
/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/build/./bin/clang  
--driver-mode=g++ -fsanitize=address -mno-omit-leaf-frame-pointer 
-fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only  -m64  
-O0 
/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/compiler-rt/test/asan/TestCases/asan_lsan_deadlock.cpp
 -o 
/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/build/runtimes/runtimes-bins/compiler-rt/test/asan/X86_64LinuxConfig/TestCases/Output/asan_lsan_deadlock.cpp.tmp
 # RUN: at line 4
+ /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/build/./bin/clang 
--driver-mode=g++ -fsanitize=address -mno-omit-leaf-frame-pointer 
-fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only -m64 -O0 
/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/compiler-rt/test/asan/TestCases/asan_lsan_deadlock.cpp
 -o 
/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/build/runtimes/runtimes-bins/compiler-rt/test/asan/X86_64LinuxConfig/TestCases/Output/asan_lsan_deadlock.cpp.tmp
env ASAN_OPTIONS=detect_leaks=1 not  
/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/build/runtimes/runtimes-bins/compiler-rt/test/asan/X86_64LinuxConfig/TestCases/Output/asan_lsan_deadlock.cpp.tmp
 2>&1 | FileCheck 
/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/compiler-rt/test/asan/TestCases/asan_lsan_deadlock.cpp
 # RUN: at line 5
+ env ASAN_OPTIONS=detect_leaks=1 not 
/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/build/runtimes/runtimes-bins/compiler-rt/test/asan/X86_64LinuxConfig/TestCases/Output/asan_lsan_deadlock.cpp.tmp
+ FileCheck 
/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/compiler-rt/test/asan/TestCases/asan_lsan_deadlock.cpp
/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/compiler-rt/test/asan/TestCases/asan_lsan_deadlock.cpp:58:12:
 error: CHECK: expected string not found in input
 // CHECK: SUMMARY: AddressSanitizer: stack-buffer-overflow
   ^
:1:1: note: scanning from here
=
^
:2:10: note: possible intended match here
==1774144==ERROR: AddressSanitizer: stack-buffer-overflow on address 
0x7b8e9eade034 at pc 0x5617cd679260 bp 0x7b8e9ccfdce0 sp 0x7b8e9ccfdcd8
 ^

Input file: 
Check file: 
/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/compiler-rt/test/asan/TestCases/asan_lsan_deadlock.cpp

-dump-input=help explains the following input dump.

Input was:
<<
1: 
=
 
check:58'0 
X~ error: no 
match found
2: ==1774144==ERROR: 
AddressSanitizer: stack-buffer-overflow on address 0x7b8e9eade034 at pc 
0x5617cd679260 bp 0x7b8e9ccfdce0 sp 0x7b8e9ccfdcd8 
check:58'0 
~
check:58'1  ?  

  possible intended match
3: WRITE of size 4 at 0x7b8e9eade034 
thread T2 
check:58'0 
4: Timeout! Deadlock detected. 
check:58'0 
>>

--




```



https://github.com/llvm/llvm-project/pull/135809
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [Offload][SYCL] Refactor OffloadKind implementation (PR #135809)

2025-04-16 Thread Nick Sarnie via cfe-commits

https://github.com/sarnex closed 
https://github.com/llvm/llvm-project/pull/135809
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [Offload][SYCL] Refactor OffloadKind implementation (PR #135809)

2025-04-16 Thread Nick Sarnie via cfe-commits

https://github.com/sarnex approved this pull request.


https://github.com/llvm/llvm-project/pull/135809
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [Offload][SYCL] Refactor OffloadKind implementation (PR #135809)

2025-04-15 Thread Arvind Sudarsanam via cfe-commits

https://github.com/asudarsa updated 
https://github.com/llvm/llvm-project/pull/135809

>From ec072a0ef5b699c58dd2ac404c90a5078f4a774a Mon Sep 17 00:00:00 2001
From: Arvind Sudarsanam 
Date: Tue, 15 Apr 2025 09:27:27 -0700
Subject: [PATCH 1/3] [Offload][SYCL] Refactor OffloadKind implementation

Signed-off-by: Arvind Sudarsanam 
---
 .../tools/clang-linker-wrapper/ClangLinkerWrapper.cpp  | 10 ++
 llvm/include/llvm/Object/OffloadBinary.h   | 10 ++
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp 
b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
index 52d922abbcaec..a76b6f1da1e1d 100644
--- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
+++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
@@ -923,10 +923,9 @@ Expected> linkAndWrapDeviceFiles(
 });
 auto LinkerArgs = getLinkerArgs(Input, BaseArgs);
 
-DenseSet ActiveOffloadKinds;
+uint16_t ActiveOffloadKindMask = 0u;
 for (const auto &File : Input)
-  if (File.getBinary()->getOffloadKind() != OFK_None)
-ActiveOffloadKinds.insert(File.getBinary()->getOffloadKind());
+  ActiveOffloadKindMask |= File.getBinary()->getOffloadKind();
 
 // Write any remaining device inputs to an output file.
 SmallVector InputFiles;
@@ -943,7 +942,10 @@ Expected> linkAndWrapDeviceFiles(
   return OutputOrErr.takeError();
 
 // Store the offloading image for each linked output file.
-for (OffloadKind Kind : ActiveOffloadKinds) {
+for (OffloadKind Kind = OFK_FIRST; Kind != OFK_LAST;
+ Kind = static_cast((uint16_t)(Kind) << 1)) {
+  if ((ActiveOffloadKindMask & Kind) == 0)
+continue;
   llvm::ErrorOr> FileOrErr =
   llvm::MemoryBuffer::getFileOrSTDIN(*OutputOrErr);
   if (std::error_code EC = FileOrErr.getError()) {
diff --git a/llvm/include/llvm/Object/OffloadBinary.h 
b/llvm/include/llvm/Object/OffloadBinary.h
index c02aec8d956ed..858c7a59bce4a 100644
--- a/llvm/include/llvm/Object/OffloadBinary.h
+++ b/llvm/include/llvm/Object/OffloadBinary.h
@@ -32,10 +32,12 @@ namespace object {
 /// The producer of the associated offloading image.
 enum OffloadKind : uint16_t {
   OFK_None = 0,
-  OFK_OpenMP,
-  OFK_Cuda,
-  OFK_HIP,
-  OFK_LAST,
+  OFK_OpenMP = (1 << 1),
+  OFK_FIRST = OFK_OpenMP,
+  OFK_Cuda = (1 << 2),
+  OFK_HIP = (1 << 3),
+  OFK_SYCL = (1 << 4),
+  OFK_LAST = (1 << 5),
 };
 
 /// The type of contents the offloading image contains.

>From c0bc6890a68b7bfc3ce735bc857319a5ca776df2 Mon Sep 17 00:00:00 2001
From: Arvind Sudarsanam 
Date: Tue, 15 Apr 2025 10:44:42 -0700
Subject: [PATCH 2/3] Address review comments

Signed-off-by: Arvind Sudarsanam 
---
 .../tools/clang-linker-wrapper/ClangLinkerWrapper.cpp |  2 +-
 llvm/include/llvm/Object/OffloadBinary.h  | 11 +--
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp 
b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
index a76b6f1da1e1d..082355e6c716f 100644
--- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
+++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
@@ -942,7 +942,7 @@ Expected> linkAndWrapDeviceFiles(
   return OutputOrErr.takeError();
 
 // Store the offloading image for each linked output file.
-for (OffloadKind Kind = OFK_FIRST; Kind != OFK_LAST;
+for (OffloadKind Kind = OFK_OpenMP; Kind != OFK_LAST;
  Kind = static_cast((uint16_t)(Kind) << 1)) {
   if ((ActiveOffloadKindMask & Kind) == 0)
 continue;
diff --git a/llvm/include/llvm/Object/OffloadBinary.h 
b/llvm/include/llvm/Object/OffloadBinary.h
index 858c7a59bce4a..a3b78b8ec6261 100644
--- a/llvm/include/llvm/Object/OffloadBinary.h
+++ b/llvm/include/llvm/Object/OffloadBinary.h
@@ -32,12 +32,11 @@ namespace object {
 /// The producer of the associated offloading image.
 enum OffloadKind : uint16_t {
   OFK_None = 0,
-  OFK_OpenMP = (1 << 1),
-  OFK_FIRST = OFK_OpenMP,
-  OFK_Cuda = (1 << 2),
-  OFK_HIP = (1 << 3),
-  OFK_SYCL = (1 << 4),
-  OFK_LAST = (1 << 5),
+  OFK_OpenMP = (1 << 0),
+  OFK_Cuda = (1 << 1),
+  OFK_HIP = (1 << 2),
+  OFK_SYCL = (1 << 3),
+  OFK_LAST = (1 << 4),
 };
 
 /// The type of contents the offloading image contains.

>From ed2b73cce44a634bfcfc2e8f29287ae3ae72da8f Mon Sep 17 00:00:00 2001
From: Arvind Sudarsanam 
Date: Tue, 15 Apr 2025 14:32:21 -0700
Subject: [PATCH 3/3] Update tests to reflect changes in Offload kind enum
 value for OFK_HIP from 3 to 4

Signed-off-by: Arvind Sudarsanam 
---
 clang/test/CodeGenCUDA/offloading-entries.cu | 24 ++--
 clang/test/Driver/linker-wrapper-image.c |  2 +-
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/clang/test/CodeGenCUDA/offloading-entries.cu 
b/clang/test/CodeGenCUDA/offloading-entries.cu
index c053cf586f8f5..ac0680ff08ea2 100644
--- a/clang/test/CodeGenCUDA/offloading-entries.cu
++

[clang] [llvm] [Offload][SYCL] Refactor OffloadKind implementation (PR #135809)

2025-04-15 Thread Joseph Huber via cfe-commits

https://github.com/jhuber6 approved this pull request.


https://github.com/llvm/llvm-project/pull/135809
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [Offload][SYCL] Refactor OffloadKind implementation (PR #135809)

2025-04-15 Thread Arvind Sudarsanam via cfe-commits


@@ -32,10 +32,12 @@ namespace object {
 /// The producer of the associated offloading image.
 enum OffloadKind : uint16_t {
   OFK_None = 0,
-  OFK_OpenMP,
-  OFK_Cuda,
-  OFK_HIP,
-  OFK_LAST,
+  OFK_OpenMP = (1 << 1),

asudarsa wrote:

Addressed in c0bc6890a68b7bfc3ce735bc857319a5ca776df2

Thanks

https://github.com/llvm/llvm-project/pull/135809
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [Offload][SYCL] Refactor OffloadKind implementation (PR #135809)

2025-04-15 Thread Arvind Sudarsanam via cfe-commits


@@ -32,10 +32,12 @@ namespace object {
 /// The producer of the associated offloading image.
 enum OffloadKind : uint16_t {
   OFK_None = 0,
-  OFK_OpenMP,
-  OFK_Cuda,
-  OFK_HIP,
-  OFK_LAST,
+  OFK_OpenMP = (1 << 1),
+  OFK_FIRST = OFK_OpenMP,

asudarsa wrote:

Good catch. I will update.

Thanks

https://github.com/llvm/llvm-project/pull/135809
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [Offload][SYCL] Refactor OffloadKind implementation (PR #135809)

2025-04-15 Thread Arvind Sudarsanam via cfe-commits


@@ -923,10 +923,9 @@ Expected> linkAndWrapDeviceFiles(
 });
 auto LinkerArgs = getLinkerArgs(Input, BaseArgs);
 
-DenseSet ActiveOffloadKinds;
+uint16_t ActiveOffloadKindMask = 0u;

asudarsa wrote:

I think it is a good optimization to have (16-bit mask instead of a Set). Also, 
it will be easier to pass the mask to callee function when introducing support 
for SYCL in my original PR.

Thanks

https://github.com/llvm/llvm-project/pull/135809
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [Offload][SYCL] Refactor OffloadKind implementation (PR #135809)

2025-04-15 Thread Joseph Huber via cfe-commits


@@ -32,10 +32,12 @@ namespace object {
 /// The producer of the associated offloading image.
 enum OffloadKind : uint16_t {
   OFK_None = 0,
-  OFK_OpenMP,
-  OFK_Cuda,
-  OFK_HIP,
-  OFK_LAST,
+  OFK_OpenMP = (1 << 1),
+  OFK_FIRST = OFK_OpenMP,

jhuber6 wrote:

We don't need `first`.

https://github.com/llvm/llvm-project/pull/135809
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [Offload][SYCL] Refactor OffloadKind implementation (PR #135809)

2025-04-15 Thread Joseph Huber via cfe-commits


@@ -32,10 +32,12 @@ namespace object {
 /// The producer of the associated offloading image.
 enum OffloadKind : uint16_t {
   OFK_None = 0,
-  OFK_OpenMP,
-  OFK_Cuda,
-  OFK_HIP,
-  OFK_LAST,
+  OFK_OpenMP = (1 << 1),

jhuber6 wrote:

This is 2, not 1.

https://github.com/llvm/llvm-project/pull/135809
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [Offload][SYCL] Refactor OffloadKind implementation (PR #135809)

2025-04-15 Thread Joseph Huber via cfe-commits


@@ -923,10 +923,9 @@ Expected> linkAndWrapDeviceFiles(
 });
 auto LinkerArgs = getLinkerArgs(Input, BaseArgs);
 
-DenseSet ActiveOffloadKinds;
+uint16_t ActiveOffloadKindMask = 0u;

jhuber6 wrote:

This code doesn't need to be modified, but I guess we could if we wanted to get 
rid of the set. I don't think it's necessary now though.

https://github.com/llvm/llvm-project/pull/135809
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [Offload][SYCL] Refactor OffloadKind implementation (PR #135809)

2025-04-15 Thread via cfe-commits

llvmbot wrote:




@llvm/pr-subscribers-clang

Author: Arvind Sudarsanam (asudarsa)


Changes

Following are the changes:

1. Make OffloadKind enum values to be powers of two so we can use them like a 
bitfield
2. Include OFK_SYCL enum value
3. Modify ActiveOffloadKinds support in clang-linker-wrapper to use bitfields 
instead of a vector.

Thanks

---
Full diff: https://github.com/llvm/llvm-project/pull/135809.diff


2 Files Affected:

- (modified) clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp (+6-4) 
- (modified) llvm/include/llvm/Object/OffloadBinary.h (+6-4) 


``diff
diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp 
b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
index 52d922abbcaec..a76b6f1da1e1d 100644
--- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
+++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
@@ -923,10 +923,9 @@ Expected> linkAndWrapDeviceFiles(
 });
 auto LinkerArgs = getLinkerArgs(Input, BaseArgs);
 
-DenseSet ActiveOffloadKinds;
+uint16_t ActiveOffloadKindMask = 0u;
 for (const auto &File : Input)
-  if (File.getBinary()->getOffloadKind() != OFK_None)
-ActiveOffloadKinds.insert(File.getBinary()->getOffloadKind());
+  ActiveOffloadKindMask |= File.getBinary()->getOffloadKind();
 
 // Write any remaining device inputs to an output file.
 SmallVector InputFiles;
@@ -943,7 +942,10 @@ Expected> linkAndWrapDeviceFiles(
   return OutputOrErr.takeError();
 
 // Store the offloading image for each linked output file.
-for (OffloadKind Kind : ActiveOffloadKinds) {
+for (OffloadKind Kind = OFK_FIRST; Kind != OFK_LAST;
+ Kind = static_cast((uint16_t)(Kind) << 1)) {
+  if ((ActiveOffloadKindMask & Kind) == 0)
+continue;
   llvm::ErrorOr> FileOrErr =
   llvm::MemoryBuffer::getFileOrSTDIN(*OutputOrErr);
   if (std::error_code EC = FileOrErr.getError()) {
diff --git a/llvm/include/llvm/Object/OffloadBinary.h 
b/llvm/include/llvm/Object/OffloadBinary.h
index c02aec8d956ed..858c7a59bce4a 100644
--- a/llvm/include/llvm/Object/OffloadBinary.h
+++ b/llvm/include/llvm/Object/OffloadBinary.h
@@ -32,10 +32,12 @@ namespace object {
 /// The producer of the associated offloading image.
 enum OffloadKind : uint16_t {
   OFK_None = 0,
-  OFK_OpenMP,
-  OFK_Cuda,
-  OFK_HIP,
-  OFK_LAST,
+  OFK_OpenMP = (1 << 1),
+  OFK_FIRST = OFK_OpenMP,
+  OFK_Cuda = (1 << 2),
+  OFK_HIP = (1 << 3),
+  OFK_SYCL = (1 << 4),
+  OFK_LAST = (1 << 5),
 };
 
 /// The type of contents the offloading image contains.

``




https://github.com/llvm/llvm-project/pull/135809
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [llvm] [Offload][SYCL] Refactor OffloadKind implementation (PR #135809)

2025-04-15 Thread Arvind Sudarsanam via cfe-commits

https://github.com/asudarsa created 
https://github.com/llvm/llvm-project/pull/135809

Following are the changes:

1. Make OffloadKind enum values to be powers of two so we can use them like a 
bitfield
2. Include OFK_SYCL enum value
3. Modify ActiveOffloadKinds support in clang-linker-wrapper to use bitfields 
instead of a vector.

Thanks

>From ec072a0ef5b699c58dd2ac404c90a5078f4a774a Mon Sep 17 00:00:00 2001
From: Arvind Sudarsanam 
Date: Tue, 15 Apr 2025 09:27:27 -0700
Subject: [PATCH] [Offload][SYCL] Refactor OffloadKind implementation

Signed-off-by: Arvind Sudarsanam 
---
 .../tools/clang-linker-wrapper/ClangLinkerWrapper.cpp  | 10 ++
 llvm/include/llvm/Object/OffloadBinary.h   | 10 ++
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp 
b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
index 52d922abbcaec..a76b6f1da1e1d 100644
--- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
+++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
@@ -923,10 +923,9 @@ Expected> linkAndWrapDeviceFiles(
 });
 auto LinkerArgs = getLinkerArgs(Input, BaseArgs);
 
-DenseSet ActiveOffloadKinds;
+uint16_t ActiveOffloadKindMask = 0u;
 for (const auto &File : Input)
-  if (File.getBinary()->getOffloadKind() != OFK_None)
-ActiveOffloadKinds.insert(File.getBinary()->getOffloadKind());
+  ActiveOffloadKindMask |= File.getBinary()->getOffloadKind();
 
 // Write any remaining device inputs to an output file.
 SmallVector InputFiles;
@@ -943,7 +942,10 @@ Expected> linkAndWrapDeviceFiles(
   return OutputOrErr.takeError();
 
 // Store the offloading image for each linked output file.
-for (OffloadKind Kind : ActiveOffloadKinds) {
+for (OffloadKind Kind = OFK_FIRST; Kind != OFK_LAST;
+ Kind = static_cast((uint16_t)(Kind) << 1)) {
+  if ((ActiveOffloadKindMask & Kind) == 0)
+continue;
   llvm::ErrorOr> FileOrErr =
   llvm::MemoryBuffer::getFileOrSTDIN(*OutputOrErr);
   if (std::error_code EC = FileOrErr.getError()) {
diff --git a/llvm/include/llvm/Object/OffloadBinary.h 
b/llvm/include/llvm/Object/OffloadBinary.h
index c02aec8d956ed..858c7a59bce4a 100644
--- a/llvm/include/llvm/Object/OffloadBinary.h
+++ b/llvm/include/llvm/Object/OffloadBinary.h
@@ -32,10 +32,12 @@ namespace object {
 /// The producer of the associated offloading image.
 enum OffloadKind : uint16_t {
   OFK_None = 0,
-  OFK_OpenMP,
-  OFK_Cuda,
-  OFK_HIP,
-  OFK_LAST,
+  OFK_OpenMP = (1 << 1),
+  OFK_FIRST = OFK_OpenMP,
+  OFK_Cuda = (1 << 2),
+  OFK_HIP = (1 << 3),
+  OFK_SYCL = (1 << 4),
+  OFK_LAST = (1 << 5),
 };
 
 /// The type of contents the offloading image contains.

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits