diff --git a/src/mapleall/maple_be/include/cg/dbg.def b/src/mapleall/maple_be/include/cg/dbg.def index b49c9093cb005a60ba4fbe57a09e05f2b130993b..b95eefe0c588588023923fd7f8818d11bc94f42f 100644 --- a/src/mapleall/maple_be/include/cg/dbg.def +++ b/src/mapleall/maple_be/include/cg/dbg.def @@ -13,5 +13,5 @@ * See the Mulan PSL v1 for more details. */ /* .loc fileNum lineNum */ -DBG_DEFINE(loc, , 2, Immediate, Immediate, Undef) +DBG_DEFINE(loc, , 3, Immediate, Immediate, Immediate) DBG_DEFINE(scope, , 2, Immediate, Immediate, Undef) diff --git a/src/mapleall/maple_be/src/cg/aarch64/aarch64_proepilog.cpp b/src/mapleall/maple_be/src/cg/aarch64/aarch64_proepilog.cpp index 883c14dd17beccb0a2b82f47be12126a6904cf3c..ce1506a0606e1db78e51c7f9ddea37015647e86d 100644 --- a/src/mapleall/maple_be/src/cg/aarch64/aarch64_proepilog.cpp +++ b/src/mapleall/maple_be/src/cg/aarch64/aarch64_proepilog.cpp @@ -1438,13 +1438,15 @@ void AArch64GenProEpilog::GenerateProlog(BB &bb) { } } Operand *o1 = cgFunc.CreateDbgImmOperand(lineNum); - Insn &loc = currCG->BuildInstruction(mpldbg::OP_DBG_loc, *o0, *o1); + Operand *o2 = cgFunc.CreateDbgImmOperand(fSym->GetSrcPosition().Column()); + Insn &loc = currCG->BuildInstruction(mpldbg::OP_DBG_loc, *o0, *o1, *o2); cgFunc.GetCurBB()->AppendInsn(loc); } } else { Operand *o0 = cgFunc.CreateDbgImmOperand(1); Operand *o1 = cgFunc.CreateDbgImmOperand(fSym->GetSrcPosition().MplLineNum()); - Insn &loc = currCG->BuildInstruction(mpldbg::OP_DBG_loc, *o0, *o1); + Operand *o2 = cgFunc.CreateDbgImmOperand(0); + Insn &loc = currCG->BuildInstruction(mpldbg::OP_DBG_loc, *o0, *o1, *o2); cgFunc.GetCurBB()->AppendInsn(loc); } } diff --git a/src/mapleall/maple_be/src/cg/cgfunc.cpp b/src/mapleall/maple_be/src/cg/cgfunc.cpp index 788a763a8e258d517b60cee902a55894f07e5f3d..aa4fa05150c5f43b69535c865598ccf3f2453c2e 100644 --- a/src/mapleall/maple_be/src/cg/cgfunc.cpp +++ b/src/mapleall/maple_be/src/cg/cgfunc.cpp @@ -1529,7 +1529,8 @@ void CGFunc::GenerateLoc(StmtNode *stmt, SrcPosition &lastSrcPos, SrcPosition &l if (cg->GetCGOptions().WithMpl() && !hasLoc && !lastMplPos.IsEqMpl(newSrcPos)) { Operand *o0 = CreateDbgImmOperand(1); Operand *o1 = CreateDbgImmOperand(newSrcPos.MplLineNum()); - Insn &loc = cg->BuildInstruction(mpldbg::OP_DBG_loc, *o0, *o1); + Operand *o2 = CreateDbgImmOperand(0); + Insn &loc = cg->BuildInstruction(mpldbg::OP_DBG_loc, *o0, *o1, *o2); curBB->AppendInsn(loc); lastMplPos.UpdateWith(newSrcPos); } diff --git a/src/mapleall/maple_driver/src/driver_runner.cpp b/src/mapleall/maple_driver/src/driver_runner.cpp index 96dce5e9d0b82a81901c1dc8ef305dff3f697f91..e236c8f25011a46485cdfb479f84ec267b13b6b6 100644 --- a/src/mapleall/maple_driver/src/driver_runner.cpp +++ b/src/mapleall/maple_driver/src/driver_runner.cpp @@ -314,6 +314,11 @@ void DriverRunner::ProcessCGPhase(const std::string &output, const std::string & if (withDwarf && !theModule->IsWithDbgInfo()) { LogInfo::MapleLogger() << "set up debug info " << '\n'; theMIRModule->GetDbgInfo()->BuildDebugInfo(); +#if DEBUG + if (cgOptions) { + cgOptions->SetOption(CGOptions::kVerboseAsm); + } +#endif } if (cgOptions == nullptr) { return; diff --git a/src/mapleall/maple_driver/src/mplcg_compiler.cpp b/src/mapleall/maple_driver/src/mplcg_compiler.cpp index 19e55113f95efeaa14cc3ded88db4693acd0446e..e24eb66e823472289c36ddcc74fe9dd14ac12bc6 100644 --- a/src/mapleall/maple_driver/src/mplcg_compiler.cpp +++ b/src/mapleall/maple_driver/src/mplcg_compiler.cpp @@ -118,6 +118,9 @@ ErrorCode MplcgCompiler::MakeCGOptions(const MplOptions &options) { /* use maple flags to set cg flags */ if (opts::withDwarf) { cgOption.SetOption(CGOptions::kWithDwarf); +#if DEBUG + cgOption.SetOption(CGOptions::kVerboseAsm); +#endif } cgOption.SetGenerateFlags(CGOptions::kDefaultGflags);