From 987618fcd1029c18be09233672b6f43f9864496b Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Sun, 26 Jul 2009 18:32:25 +0200 Subject: [PATCH] Always emit a stop point for return statements - even for void returns. --- gen/statements.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/gen/statements.cpp b/gen/statements.cpp index de78032d..47e8ef14 100644 --- a/gen/statements.cpp +++ b/gen/statements.cpp @@ -53,6 +53,9 @@ void ReturnStatement::toIR(IRState* p) Logger::println("ReturnStatement::toIR(): %s", loc.toChars()); LOG_SCOPE; + if (global.params.symdebug) + DtoDwarfStopPoint(loc.linnum); + // is there a return value expression? if (exp) { @@ -64,9 +67,6 @@ void ReturnStatement::toIR(IRState* p) IrFunction* f = p->func(); assert(f->decl->ir.irFunc->retArg); - // emit dbg line - if (global.params.symdebug) DtoDwarfStopPoint(loc.linnum); - // FIXME: is there ever a case where a sret return needs to be rewritten for the ABI? // get return pointer @@ -88,8 +88,6 @@ void ReturnStatement::toIR(IRState* p) // the return type is not void, so this is a normal "register" return else { - if (global.params.symdebug) DtoDwarfStopPoint(loc.linnum); - // do abi specific transformations on the return value LLValue* v = p->func()->type->fty.putRet(exp->type, exp->toElem(p));