Mercurial > projects > ldc
changeset 455:d3d3519b72e8
Fixed inserting an AA entry with 'this' as key.
Fixed debug info for aggregate parameters. Only seems to work on byval arguments.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Sat, 02 Aug 2008 17:24:10 +0200 |
parents | 283d113d4753 |
children | b975f29b7256 |
files | gen/aa.cpp gen/functions.cpp |
diffstat | 2 files changed, 7 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/gen/aa.cpp Sat Aug 02 02:54:57 2008 +0200 +++ b/gen/aa.cpp Sat Aug 02 17:24:10 2008 +0200 @@ -22,6 +22,10 @@ if (key->isIm()) { pkey = key->getRVal(); } + else if (key->isThis()) { + pkey = key->getRVal(); + needmem = true; + } else if (DVarValue* var = key->isVar()) { if (var->lval) { pkey = key->getLVal();
--- a/gen/functions.cpp Sat Aug 02 02:54:57 2008 +0200 +++ b/gen/functions.cpp Sat Aug 02 17:24:10 2008 +0200 @@ -612,8 +612,9 @@ else if (DtoIsPassedByRef(vd->type)) { Logger::println("skipping arg storage for aggregate (%s) %s ", vd->loc.toChars(), vd->toChars()); - if (global.params.symdebug) - DtoDwarfLocalVariable(vd->ir.getIrValue(), vd); + LLValue* vdirval = vd->ir.getIrValue(); + if (global.params.symdebug && !(isaArgument(vdirval) && !isaArgument(vdirval)->hasByValAttr())) + DtoDwarfLocalVariable(vdirval, vd); continue; }