[Beignet] [PATCH] GBE: fix some minor bugs.

Zhigang Gong zhigang.gong at intel.com
Wed Sep 10 22:02:23 PDT 2014


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 <zhigang.gong at intel.com>
---
 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



More information about the Beignet mailing list