When compile a empty string, we may get an empty module which is not an error.
And when we fail to compile a module, the fileName may be NULL, we can't access it unconditionally. The last one is to fix a memory leak bug : we need to delete unit if we fail to generate Gen unit. Signed-off-by: Zhigang Gong <[email protected]> --- backend/src/backend/program.cpp | 4 +++- backend/src/llvm/llvm_to_gen.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp index cc76493..06c22ac 100644 --- a/backend/src/backend/program.cpp +++ b/backend/src/backend/program.cpp @@ -114,7 +114,9 @@ namespace gbe { cloned_module = llvm::CloneModule((llvm::Module*)module); } if (llvmToGen(*unit, fileName, module, optLevel, OCL_STRICT_CONFORMANCE) == false) { - error = std::string(fileName) + " not found"; + if (fileName) + error = std::string(fileName) + " not found"; + delete unit; return false; } //If unit is not valid, maybe some thing don't support by backend, introduce by some passes diff --git a/backend/src/llvm/llvm_to_gen.cpp b/backend/src/llvm/llvm_to_gen.cpp index 67890d1..e31421f 100644 --- a/backend/src/llvm/llvm_to_gen.cpp +++ b/backend/src/llvm/llvm_to_gen.cpp @@ -227,7 +227,7 @@ namespace gbe if (!module) delete cl_mod; if (M.get() == 0) - return false; + return true; Module &mod = *M.get(); DataLayout DL(&mod); -- 1.8.3.2 _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
