Skip to content

Commit 0f7e361

Browse files
authored
[SYCL] Fix SYCL internal enumerators conflict with user defined macro (#1188)
Enum variables were too commonly used by users. This kind of conflicts cannot be avoided 100%, but we can minimize the chance by using the prefix SYCL_ Signed-off-by: Byoungro So <[email protected]>
1 parent ef68270 commit 0f7e361

File tree

6 files changed

+31
-17
lines changed

6 files changed

+31
-17
lines changed

sycl/source/detail/scheduler/commands.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ bool Command::enqueue(EnqueueResultT &EnqueueResult, BlockingT Blocking) {
172172
if (MIsBlockable && !MCanEnqueue) {
173173
// Exit if enqueue type is not blocking
174174
if (!Blocking) {
175-
EnqueueResult = EnqueueResultT(EnqueueResultT::BLOCKED, this);
175+
EnqueueResult = EnqueueResultT(EnqueueResultT::SyclEnqueueBlocked, this);
176176
return false;
177177
}
178178
static bool ThrowOnBlock = getenv("SYCL_THROW_ON_BLOCK") != nullptr;
@@ -196,7 +196,8 @@ bool Command::enqueue(EnqueueResultT &EnqueueResult, BlockingT Blocking) {
196196
cl_int Res = enqueueImp();
197197

198198
if (CL_SUCCESS != Res)
199-
EnqueueResult = EnqueueResultT(EnqueueResultT::FAILED, this, Res);
199+
EnqueueResult =
200+
EnqueueResultT(EnqueueResultT::SyclEnqueueFailed, this, Res);
200201
else
201202
// Consider the command is successfully enqueued if return code is
202203
// CL_SUCCESS

sycl/source/detail/scheduler/commands.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ enum BlockingT { NON_BLOCKING = 0, BLOCKING };
3838

3939
// The struct represents the result of command enqueueing
4040
struct EnqueueResultT {
41-
enum ResultT { SUCCESS, BLOCKED, FAILED };
42-
EnqueueResultT(ResultT Result = SUCCESS, Command *Cmd = nullptr,
41+
enum ResultT { SyclEnqueueSuccess, SyclEnqueueBlocked, SyclEnqueueFailed };
42+
EnqueueResultT(ResultT Result = SyclEnqueueSuccess, Command *Cmd = nullptr,
4343
cl_int ErrCode = CL_SUCCESS)
4444
: MResult(Result), MCmd(Cmd), MErrCode(ErrCode) {}
4545
// Indicates result of enqueueing

sycl/source/detail/scheduler/graph_processor.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ void Scheduler::GraphProcessor::waitForEvent(EventImplPtr Event) {
4141
assert(Cmd && "Event has no associated command?");
4242
EnqueueResultT Res;
4343
bool Enqueued = enqueueCommand(Cmd, Res, BLOCKING);
44-
if (!Enqueued && EnqueueResultT::FAILED == Res.MResult)
44+
if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult)
4545
// TODO: Reschedule commands.
4646
throw runtime_error("Enqueue process failed.");
4747

@@ -66,12 +66,12 @@ bool Scheduler::GraphProcessor::enqueueCommand(Command *Cmd,
6666
enqueueCommand(Dep.MDepCommand, EnqueueResult, Blocking);
6767
if (!Enqueued)
6868
switch (EnqueueResult.MResult) {
69-
case EnqueueResultT::FAILED:
69+
case EnqueueResultT::SyclEnqueueFailed:
7070
default:
7171
// Exit immediately if a command fails to avoid enqueueing commands
7272
// result of which will be discarded.
7373
return false;
74-
case EnqueueResultT::BLOCKED:
74+
case EnqueueResultT::SyclEnqueueBlocked:
7575
// If some dependency is blocked from enqueueing remember that, but
7676
// try to enqueue other dependencies(that can be ready for
7777
// enqueueing).

sycl/source/detail/scheduler/scheduler.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,22 @@ void Scheduler::waitForRecordToFinish(MemObjRecord *Record) {
3030
for (Command *Cmd : Record->MReadLeaves) {
3131
EnqueueResultT Res;
3232
bool Enqueued = GraphProcessor::enqueueCommand(Cmd, Res);
33-
if (!Enqueued && EnqueueResultT::FAILED == Res.MResult)
33+
if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult)
3434
throw runtime_error("Enqueue process failed.");
3535
GraphProcessor::waitForEvent(Cmd->getEvent());
3636
}
3737
for (Command *Cmd : Record->MWriteLeaves) {
3838
EnqueueResultT Res;
3939
bool Enqueued = GraphProcessor::enqueueCommand(Cmd, Res);
40-
if (!Enqueued && EnqueueResultT::FAILED == Res.MResult)
40+
if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult)
4141
throw runtime_error("Enqueue process failed.");
4242
GraphProcessor::waitForEvent(Cmd->getEvent());
4343
}
4444
for (AllocaCommandBase *AllocaCmd : Record->MAllocaCommands) {
4545
Command *ReleaseCmd = AllocaCmd->getReleaseCmd();
4646
EnqueueResultT Res;
4747
bool Enqueued = GraphProcessor::enqueueCommand(ReleaseCmd, Res);
48-
if (!Enqueued && EnqueueResultT::FAILED == Res.MResult)
48+
if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult)
4949
throw runtime_error("Enqueue process failed.");
5050
GraphProcessor::waitForEvent(ReleaseCmd->getEvent());
5151
}
@@ -70,7 +70,7 @@ EventImplPtr Scheduler::addCG(std::unique_ptr<detail::CG> CommandGroup,
7070
// TODO: Check if lazy mode.
7171
EnqueueResultT Res;
7272
bool Enqueued = GraphProcessor::enqueueCommand(NewCmd, Res);
73-
if (!Enqueued && EnqueueResultT::FAILED == Res.MResult)
73+
if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult)
7474
throw runtime_error("Enqueue process failed.");
7575
}
7676

@@ -91,7 +91,7 @@ EventImplPtr Scheduler::addCopyBack(Requirement *Req) {
9191
try {
9292
EnqueueResultT Res;
9393
bool Enqueued = GraphProcessor::enqueueCommand(NewCmd, Res);
94-
if (!Enqueued && EnqueueResultT::FAILED == Res.MResult)
94+
if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult)
9595
throw runtime_error("Enqueue process failed.");
9696
} catch (...) {
9797
NewCmd->getQueue()->reportAsyncException(std::current_exception());
@@ -155,7 +155,7 @@ EventImplPtr Scheduler::addHostAccessor(Requirement *Req,
155155
return nullptr;
156156
EnqueueResultT Res;
157157
bool Enqueued = GraphProcessor::enqueueCommand(NewCmd, Res);
158-
if (!Enqueued && EnqueueResultT::FAILED == Res.MResult)
158+
if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult)
159159
throw runtime_error("Enqueue process failed.");
160160
return NewCmd->getEvent();
161161
}
@@ -167,7 +167,7 @@ void Scheduler::releaseHostAccessor(Requirement *Req) {
167167
for (Command *Cmd : Leaves) {
168168
EnqueueResultT Res;
169169
bool Enqueued = GraphProcessor::enqueueCommand(Cmd, Res);
170-
if (!Enqueued && EnqueueResultT::FAILED == Res.MResult)
170+
if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult)
171171
throw runtime_error("Enqueue process failed.");
172172
}
173173
};
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// RUN: %clangxx -fsyntax-only -Xclang -verify %s -o %t.out
2+
// expected-no-diagnostics
3+
//
4+
//===----------------------------------------------------------------------===//
5+
// This test checks if the user-defined macros SUCCESS is
6+
// conflicting with the symbols defined in SYCL header files.
7+
// This test only checks compilation error, so the main function is omitted.
8+
//===----------------------------------------------------------------------===//
9+
10+
#define SUCCESS 0
11+
12+
#include <CL/sycl.hpp>

sycl/test/scheduler/BlockedCommands.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ int main() {
5454
return 1;
5555
}
5656

57-
if (detail::EnqueueResultT::BLOCKED != Res.MResult) {
57+
if (detail::EnqueueResultT::SyclEnqueueBlocked != Res.MResult) {
5858
std::cerr << "Result of enqueueing blocked command should be BLOCKED"
5959
<< std::endl;
6060
return 1;
@@ -73,7 +73,7 @@ int main() {
7373
return 1;
7474
}
7575

76-
if (detail::EnqueueResultT::FAILED != Res.MResult) {
76+
if (detail::EnqueueResultT::SyclEnqueueFailed != Res.MResult) {
7777
std::cerr << "The command is expected to fail to enqueue." << std::endl;
7878
return 1;
7979
}
@@ -96,7 +96,8 @@ int main() {
9696
bool Enqueued =
9797
TestScheduler::enqueueCommand(&FakeCmd, Res, detail::BLOCKING);
9898

99-
if (!Enqueued || detail::EnqueueResultT::SUCCESS != Res.MResult) {
99+
if (!Enqueued ||
100+
detail::EnqueueResultT::SyclEnqueueSuccess != Res.MResult) {
100101
std::cerr << "The command is expected to be successfully enqueued."
101102
<< std::endl;
102103
return 1;

0 commit comments

Comments
 (0)