From: Junyan He <junyan...@linux.intel.com> Signed-off-by: Junyan He <junyan...@linux.intel.com> --- backend/src/ir/lowering.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/backend/src/ir/lowering.cpp b/backend/src/ir/lowering.cpp index 535f7e6..1746489 100644 --- a/backend/src/ir/lowering.cpp +++ b/backend/src/ir/lowering.cpp @@ -43,12 +43,15 @@ namespace ir { }; void ContextReturn::lower(const std::string &functionName) { + DebugInfo dgInfo; if ((this->fn = unit.getFunction(functionName)) == NULL) return; // Append a new block at the end of the function with a return instruction: // the only one we are going to have this->bb = &this->fn->getBottomBlock(); + /* Just use the last instruction's debug info, no matter whether it is RET. */ + dgInfo = this->fn->getBottomBlock().getLastInstruction()->DBGInfo; const LabelIndex index = this->label(); this->LABEL(index); const BasicBlock *lastBlock = this->bb; @@ -60,13 +63,17 @@ namespace ir { } this->RET(); + Instruction* retInst = lastBlock->getLastInstruction(); + retInst->DBGInfo = dgInfo; // Now traverse all instructions and replace all returns by GOTO index fn->foreachInstruction([&](Instruction &insn) { if (insn.getParent() == lastBlock) return; // This is the last block if (insn.getOpcode() != OP_RET) return; - const Instruction bra = ir::BRA(index); + Instruction bra = ir::BRA(index); + dgInfo = insn.DBGInfo; bra.replace(&insn); + bra.DBGInfo = dgInfo; }); } -- 1.9.1 _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/beignet