diff --git a/rocclr/platform/program.cpp b/rocclr/platform/program.cpp old mode 100644 new mode 100755 index 582b56ced1..24c621d10a --- a/rocclr/platform/program.cpp +++ b/rocclr/platform/program.cpp @@ -469,7 +469,7 @@ void Program::StubProgramSource(const std::string& app_name) { int32_t Program::build(const std::vector& devices, const char* options, void(CL_CALLBACK* notifyFptr)(cl_program, void*), void* data, - bool optionChangable) { + bool optionChangable, bool newDevProg) { ScopedLock sl(buildLock_); int32_t retval = CL_SUCCESS; @@ -485,8 +485,10 @@ int32_t Program::build(const std::vector& devices, const char* options, StubProgramSource(devices[0]->appProfile()->appFileName()); } - // Clear the program object - clear(); + if (newDevProg) { + // Clear the program object + clear(); + } // Process build options. std::string cppstr(options ? options : ""); diff --git a/rocclr/platform/program.hpp b/rocclr/platform/program.hpp old mode 100644 new mode 100755 index 91d4d98ad9..68bd72c2e3 --- a/rocclr/platform/program.hpp +++ b/rocclr/platform/program.hpp @@ -205,7 +205,7 @@ class Program : public RuntimeObject { //! Build the program for the given devices. int32_t build(const std::vector& devices, const char* options = NULL, void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL, - bool optionChangable = true); + bool optionChangable = true, bool newDevProg = true); //! RTTI internal implementation virtual ObjectType objectType() const { return ObjectTypeProgram; }