From: Junyan He <[email protected]>

This function will be widely used to copy the debug
information between llvm instructions.
In our backend, sometimes we need to append or modify
some instructions, the debug info should also be set
correctly.

Signed-off-by: Junyan He <[email protected]>
---
 backend/src/llvm/llvm_gen_backend.hpp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/backend/src/llvm/llvm_gen_backend.hpp 
b/backend/src/llvm/llvm_gen_backend.hpp
index 23688f5..18e6827 100644
--- a/backend/src/llvm/llvm_gen_backend.hpp
+++ b/backend/src/llvm/llvm_gen_backend.hpp
@@ -48,9 +48,12 @@ namespace llvm {
   FunctionPass *createPromoteIntegersPass();
   FunctionPass *createStripAttributesPass();
   // Copy debug information from Original to New, and return New.
-  template <typename T> T *CopyDebug(T *New, llvm::Instruction *Original) {
-    New->setDebugLoc(Original->getDebugLoc());
-   return New;
+  template <typename T> T *CopyDebug(T *New, llvm::Value *Original) {
+    if (dyn_cast<llvm::Instruction>(Original) && 
dyn_cast<llvm::Instruction>(New)) {
+      dyn_cast<llvm::Instruction>(New)->setDebugLoc(
+          dyn_cast<llvm::Instruction>(Original)->getDebugLoc());
+    }
+    return New;
   }
 }
 
-- 
1.9.1



_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to