Fixed inserting an AA entry with 'this' as key.

Fixed debug info for aggregate parameters. Only seems to work on byval arguments.
This commit is contained in:
Tomas Lindquist Olsen 2008-08-02 17:24:10 +02:00
parent 18b376ba66
commit 55639e01ea
2 changed files with 7 additions and 2 deletions

View file

@ -22,6 +22,10 @@ static LLValue* to_pkey(Loc& loc, DValue* key)
if (key->isIm()) { if (key->isIm()) {
pkey = key->getRVal(); pkey = key->getRVal();
} }
else if (key->isThis()) {
pkey = key->getRVal();
needmem = true;
}
else if (DVarValue* var = key->isVar()) { else if (DVarValue* var = key->isVar()) {
if (var->lval) { if (var->lval) {
pkey = key->getLVal(); pkey = key->getLVal();

View file

@ -612,8 +612,9 @@ void DtoDefineFunc(FuncDeclaration* fd)
else if (DtoIsPassedByRef(vd->type)) else if (DtoIsPassedByRef(vd->type))
{ {
Logger::println("skipping arg storage for aggregate (%s) %s ", vd->loc.toChars(), vd->toChars()); Logger::println("skipping arg storage for aggregate (%s) %s ", vd->loc.toChars(), vd->toChars());
if (global.params.symdebug) LLValue* vdirval = vd->ir.getIrValue();
DtoDwarfLocalVariable(vd->ir.getIrValue(), vd); if (global.params.symdebug && !(isaArgument(vdirval) && !isaArgument(vdirval)->hasByValAttr()))
DtoDwarfLocalVariable(vdirval, vd);
continue; continue;
} }