From: Junyan He <junyan...@linux.intel.com> 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 <junyan...@linux.intel.com> --- 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 Beignet@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/beignet