From 8b4eb43a4aab9699537e68136df523d8dfb785e0 Mon Sep 17 00:00:00 2001 From: Jason Tang Date: Sun, 6 Sep 2020 21:37:17 -0400 Subject: [PATCH] Call callback even if clBuildProgram is not successful Change-Id: I3be1d500ecc712c738cfaf252eca83663cad6b77 --- rocclr/platform/program.cpp | 42 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/rocclr/platform/program.cpp b/rocclr/platform/program.cpp index 4660fbc604..ee5cdea926 100755 --- a/rocclr/platform/program.cpp +++ b/rocclr/platform/program.cpp @@ -570,34 +570,32 @@ int32_t Program::build(const std::vector& devices, const char* options, } } - if (retval != CL_SUCCESS) { - return retval; - } + if (retval == CL_SUCCESS) { + // Rebuild the symbol table + for (const auto& it : devicePrograms_) { + const Device& device = *(it.first); + const device::Program& program = *(it.second); - // Rebuild the symbol table - for (const auto& it : devicePrograms_) { - const Device& device = *(it.first); - const device::Program& program = *(it.second); + const device::Program::kernels_t& kernels = program.kernels(); + for (const auto& kit : kernels) { + const std::string& name = kit.first; + const device::Kernel* devKernel = kit.second; - const device::Program::kernels_t& kernels = program.kernels(); - for (const auto& kit : kernels) { - const std::string& name = kit.first; - const device::Kernel* devKernel = kit.second; - - Symbol& symbol = (*symbolTable_)[name]; - if (!symbol.setDeviceKernel(device, devKernel)) { - retval = CL_BUILD_PROGRAM_FAILURE; + Symbol& symbol = (*symbolTable_)[name]; + if (!symbol.setDeviceKernel(device, devKernel)) { + retval = CL_BUILD_PROGRAM_FAILURE; + } } } - } - // Create a string with all kernel names from the program - if (kernelNames_.length() == 0) { - for (auto it = symbols().cbegin(); it != symbols().cend(); ++it) { - if (it != symbols().cbegin()) { - kernelNames_.append(1, ';'); + // Create a string with all kernel names from the program + if (kernelNames_.length() == 0) { + for (auto it = symbols().cbegin(); it != symbols().cend(); ++it) { + if (it != symbols().cbegin()) { + kernelNames_.append(1, ';'); + } + kernelNames_.append(it->first.c_str()); } - kernelNames_.append(it->first.c_str()); } }