From 49d9c50cb6af7a27496f8ad780ed83703befa6db Mon Sep 17 00:00:00 2001 From: fye Date: Mon, 1 Aug 2022 15:50:27 -0700 Subject: [PATCH] debug: loc on func without proloque --- src/mapleall/maple_be/src/cg/cgfunc.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/mapleall/maple_be/src/cg/cgfunc.cpp b/src/mapleall/maple_be/src/cg/cgfunc.cpp index ace890a2b3..fa30e36638 100644 --- a/src/mapleall/maple_be/src/cg/cgfunc.cpp +++ b/src/mapleall/maple_be/src/cg/cgfunc.cpp @@ -1836,6 +1836,19 @@ void CGFunc::GenerateCfiPrologEpilog() { firstBB->AppendInsn(ipoint); } + MIRFunction mirFunc = GetFunction(); + MIRSymbol *fSym = GlobalTables::GetGsymTable().GetSymbolFromStidx(mirFunc.GetStIdx().Idx()); + if (fSym && cg->GetCGOptions().WithLoc() && GetMirModule().IsCModule()) { + uint32 fileNum = fSym->GetSrcPosition().FileNum(); + uint32 lineNum = fSym->GetSrcPosition().LineNum(); + uint32 columnNum = fSym->GetSrcPosition().Column(); + Operand *fOprnd = CreateDbgImmOperand(fileNum); + Operand *lOprnd = CreateDbgImmOperand(lineNum); + Operand *cOprnd = CreateDbgImmOperand(columnNum); + Insn &loc = GetCG()->BuildInstruction(mpldbg::OP_DBG_loc, *fOprnd, *lOprnd, *cOprnd); + firstBB->InsertInsnBefore(*firstBB->GetFirstInsn(), loc); + } + #if !defined(TARGARM32) /* * always generate ".cfi_personality 155, DW.ref.__mpl_personality_v0" for Java methods. -- Gitee