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;
             }