diff --git a/sycl/source/detail/scheduler/commands.cpp b/sycl/source/detail/scheduler/commands.cpp index d9859929191f6..3b97de5673a92 100644 --- a/sycl/source/detail/scheduler/commands.cpp +++ b/sycl/source/detail/scheduler/commands.cpp @@ -172,7 +172,7 @@ bool Command::enqueue(EnqueueResultT &EnqueueResult, BlockingT Blocking) { if (MIsBlockable && !MCanEnqueue) { // Exit if enqueue type is not blocking if (!Blocking) { - EnqueueResult = EnqueueResultT(EnqueueResultT::BLOCKED, this); + EnqueueResult = EnqueueResultT(EnqueueResultT::SyclEnqueueBlocked, this); return false; } static bool ThrowOnBlock = getenv("SYCL_THROW_ON_BLOCK") != nullptr; @@ -196,7 +196,8 @@ bool Command::enqueue(EnqueueResultT &EnqueueResult, BlockingT Blocking) { cl_int Res = enqueueImp(); if (CL_SUCCESS != Res) - EnqueueResult = EnqueueResultT(EnqueueResultT::FAILED, this, Res); + EnqueueResult = + EnqueueResultT(EnqueueResultT::SyclEnqueueFailed, this, Res); else // Consider the command is successfully enqueued if return code is // CL_SUCCESS diff --git a/sycl/source/detail/scheduler/commands.hpp b/sycl/source/detail/scheduler/commands.hpp index 5150b815880ee..315e0e366fd98 100644 --- a/sycl/source/detail/scheduler/commands.hpp +++ b/sycl/source/detail/scheduler/commands.hpp @@ -38,8 +38,8 @@ enum BlockingT { NON_BLOCKING = 0, BLOCKING }; // The struct represents the result of command enqueueing struct EnqueueResultT { - enum ResultT { SUCCESS, BLOCKED, FAILED }; - EnqueueResultT(ResultT Result = SUCCESS, Command *Cmd = nullptr, + enum ResultT { SyclEnqueueSuccess, SyclEnqueueBlocked, SyclEnqueueFailed }; + EnqueueResultT(ResultT Result = SyclEnqueueSuccess, Command *Cmd = nullptr, cl_int ErrCode = CL_SUCCESS) : MResult(Result), MCmd(Cmd), MErrCode(ErrCode) {} // Indicates result of enqueueing diff --git a/sycl/source/detail/scheduler/graph_processor.cpp b/sycl/source/detail/scheduler/graph_processor.cpp index 5681d2f5bbd31..903f4ac43294a 100644 --- a/sycl/source/detail/scheduler/graph_processor.cpp +++ b/sycl/source/detail/scheduler/graph_processor.cpp @@ -41,7 +41,7 @@ void Scheduler::GraphProcessor::waitForEvent(EventImplPtr Event) { assert(Cmd && "Event has no associated command?"); EnqueueResultT Res; bool Enqueued = enqueueCommand(Cmd, Res, BLOCKING); - if (!Enqueued && EnqueueResultT::FAILED == Res.MResult) + if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult) // TODO: Reschedule commands. throw runtime_error("Enqueue process failed."); @@ -66,12 +66,12 @@ bool Scheduler::GraphProcessor::enqueueCommand(Command *Cmd, enqueueCommand(Dep.MDepCommand, EnqueueResult, Blocking); if (!Enqueued) switch (EnqueueResult.MResult) { - case EnqueueResultT::FAILED: + case EnqueueResultT::SyclEnqueueFailed: default: // Exit immediately if a command fails to avoid enqueueing commands // result of which will be discarded. return false; - case EnqueueResultT::BLOCKED: + case EnqueueResultT::SyclEnqueueBlocked: // If some dependency is blocked from enqueueing remember that, but // try to enqueue other dependencies(that can be ready for // enqueueing). diff --git a/sycl/source/detail/scheduler/scheduler.cpp b/sycl/source/detail/scheduler/scheduler.cpp index 4da29c0a23299..1a87ec99ee252 100644 --- a/sycl/source/detail/scheduler/scheduler.cpp +++ b/sycl/source/detail/scheduler/scheduler.cpp @@ -30,14 +30,14 @@ void Scheduler::waitForRecordToFinish(MemObjRecord *Record) { for (Command *Cmd : Record->MReadLeaves) { EnqueueResultT Res; bool Enqueued = GraphProcessor::enqueueCommand(Cmd, Res); - if (!Enqueued && EnqueueResultT::FAILED == Res.MResult) + if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult) throw runtime_error("Enqueue process failed."); GraphProcessor::waitForEvent(Cmd->getEvent()); } for (Command *Cmd : Record->MWriteLeaves) { EnqueueResultT Res; bool Enqueued = GraphProcessor::enqueueCommand(Cmd, Res); - if (!Enqueued && EnqueueResultT::FAILED == Res.MResult) + if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult) throw runtime_error("Enqueue process failed."); GraphProcessor::waitForEvent(Cmd->getEvent()); } @@ -45,7 +45,7 @@ void Scheduler::waitForRecordToFinish(MemObjRecord *Record) { Command *ReleaseCmd = AllocaCmd->getReleaseCmd(); EnqueueResultT Res; bool Enqueued = GraphProcessor::enqueueCommand(ReleaseCmd, Res); - if (!Enqueued && EnqueueResultT::FAILED == Res.MResult) + if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult) throw runtime_error("Enqueue process failed."); GraphProcessor::waitForEvent(ReleaseCmd->getEvent()); } @@ -70,7 +70,7 @@ EventImplPtr Scheduler::addCG(std::unique_ptr CommandGroup, // TODO: Check if lazy mode. EnqueueResultT Res; bool Enqueued = GraphProcessor::enqueueCommand(NewCmd, Res); - if (!Enqueued && EnqueueResultT::FAILED == Res.MResult) + if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult) throw runtime_error("Enqueue process failed."); } @@ -91,7 +91,7 @@ EventImplPtr Scheduler::addCopyBack(Requirement *Req) { try { EnqueueResultT Res; bool Enqueued = GraphProcessor::enqueueCommand(NewCmd, Res); - if (!Enqueued && EnqueueResultT::FAILED == Res.MResult) + if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult) throw runtime_error("Enqueue process failed."); } catch (...) { NewCmd->getQueue()->reportAsyncException(std::current_exception()); @@ -151,7 +151,7 @@ EventImplPtr Scheduler::addHostAccessor(Requirement *Req, return nullptr; EnqueueResultT Res; bool Enqueued = GraphProcessor::enqueueCommand(NewCmd, Res); - if (!Enqueued && EnqueueResultT::FAILED == Res.MResult) + if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult) throw runtime_error("Enqueue process failed."); return NewCmd->getEvent(); } @@ -163,7 +163,7 @@ void Scheduler::releaseHostAccessor(Requirement *Req) { for (Command *Cmd : Leaves) { EnqueueResultT Res; bool Enqueued = GraphProcessor::enqueueCommand(Cmd, Res); - if (!Enqueued && EnqueueResultT::FAILED == Res.MResult) + if (!Enqueued && EnqueueResultT::SyclEnqueueFailed == Res.MResult) throw runtime_error("Enqueue process failed."); } }; diff --git a/sycl/test/regression/macro_conflict.cpp b/sycl/test/regression/macro_conflict.cpp new file mode 100644 index 0000000000000..6e20ab56ded58 --- /dev/null +++ b/sycl/test/regression/macro_conflict.cpp @@ -0,0 +1,12 @@ +// RUN: %clangxx -fsyntax-only -Xclang -verify %s -o %t.out +// expected-no-diagnostics +// +//===----------------------------------------------------------------------===// +// This test checks if the user-defined macros SUCCESS is +// conflicting with the symbols defined in SYCL header files. +// This test only checks compilation error, so the main function is omitted. +//===----------------------------------------------------------------------===// + +#define SUCCESS 0 + +#include diff --git a/sycl/test/scheduler/BlockedCommands.cpp b/sycl/test/scheduler/BlockedCommands.cpp index 0cba98584a8c1..8f10f355785fe 100644 --- a/sycl/test/scheduler/BlockedCommands.cpp +++ b/sycl/test/scheduler/BlockedCommands.cpp @@ -54,7 +54,7 @@ int main() { return 1; } - if (detail::EnqueueResultT::BLOCKED != Res.MResult) { + if (detail::EnqueueResultT::SyclEnqueueBlocked != Res.MResult) { std::cerr << "Result of enqueueing blocked command should be BLOCKED" << std::endl; return 1; @@ -73,7 +73,7 @@ int main() { return 1; } - if (detail::EnqueueResultT::FAILED != Res.MResult) { + if (detail::EnqueueResultT::SyclEnqueueFailed != Res.MResult) { std::cerr << "The command is expected to fail to enqueue." << std::endl; return 1; } @@ -96,7 +96,8 @@ int main() { bool Enqueued = TestScheduler::enqueueCommand(&FakeCmd, Res, detail::BLOCKING); - if (!Enqueued || detail::EnqueueResultT::SUCCESS != Res.MResult) { + if (!Enqueued || + detail::EnqueueResultT::SyclEnqueueSuccess != Res.MResult) { std::cerr << "The command is expected to be successfully enqueued." << std::endl; return 1;