Per openCL spec, set p->is_built to 1 when build fail.
authorYang Rong <rong.r.yang@intel.com>
Mon, 28 Oct 2013 06:02:18 +0000 (14:02 +0800)
committerZhigang Gong <zhigang.gong@linux.intel.com>
Tue, 29 Oct 2013 02:35:36 +0000 (10:35 +0800)
Also correct the err code when build fail.

Signed-off-by: Yang Rong <rong.r.yang@intel.com>
Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Reviewed-by: "Song, Ruiling" <ruiling.song@intel.com>
src/cl_api.c
src/cl_program.c

index 0e562ed..f668ec6 100644 (file)
@@ -961,7 +961,7 @@ clCreateKernel(cl_program   program,
   cl_int err = CL_SUCCESS;
 
   CHECK_PROGRAM (program);
-  if (program->is_built == CL_FALSE) {
+  if (program->ker_n <= 0) {
     err = CL_INVALID_PROGRAM_EXECUTABLE;
     goto error;
   }
@@ -983,7 +983,7 @@ clCreateKernelsInProgram(cl_program      program,
   cl_int err = CL_SUCCESS;
 
   CHECK_PROGRAM (program);
-  if (program->is_built == CL_FALSE) {
+  if (program->ker_n <= 0) {
     err = CL_INVALID_PROGRAM_EXECUTABLE;
     goto error;
   }
index ad6e098..e7d67de 100644 (file)
@@ -326,7 +326,7 @@ cl_program_build(cl_program p, const char *options)
   if (p->source_type == FROM_SOURCE) {
     p->opaque = gbe_program_new_from_source(p->source, 0, options, NULL, NULL);
     if (UNLIKELY(p->opaque == NULL)) {
-      err = CL_INVALID_PROGRAM;
+      err = CL_BUILD_PROGRAM_FAILURE;
       goto error;
     }
 
@@ -336,7 +336,7 @@ cl_program_build(cl_program p, const char *options)
   } else if (p->source_type == FROM_BINARY) {
     p->opaque = gbe_program_new_from_binary(p->binary, p->binary_sz);
     if (UNLIKELY(p->opaque == NULL)) {
-      err = CL_INVALID_PROGRAM;
+      err = CL_BUILD_PROGRAM_FAILURE;
       goto error;
     }
 
@@ -359,8 +359,8 @@ cl_program_build(cl_program p, const char *options)
     copyed += sz;
   }
 
-  p->is_built = 1;
 error:
+  p->is_built = 1;
   return err;
 }