Mercurial > projects > ldc
diff dmd/inline.c @ 92:70d6113eeb8c trunk
[svn r96] Updated to DMD 1.023.
Regular bugfixes.
author | lindquist |
---|---|
date | Thu, 08 Nov 2007 19:13:28 +0100 |
parents | c53b6e3fe49a |
children | aaade6ded589 |
line wrap: on
line diff
--- a/dmd/inline.c Wed Nov 07 04:52:56 2007 +0100 +++ b/dmd/inline.c Thu Nov 08 19:13:28 2007 +0100 @@ -546,8 +546,6 @@ ; else { - ExpInitializer *ie; - ExpInitializer *ieto; VarDeclaration *vto; vto = new VarDeclaration(vd->loc, vd->type, vd->ident, vd->init); @@ -559,16 +557,18 @@ ids->from.push(vd); ids->to.push(vto); - if (vd->init->isVoidInitializer()) + if (vd->init) { - vto->init = new VoidInitializer(vd->init->loc); - } - else - { - ie = vd->init->isExpInitializer(); - assert(ie); - ieto = new ExpInitializer(ie->loc, ie->exp->doInline(ids)); - vto->init = ieto; + if (vd->init->isVoidInitializer()) + { + vto->init = new VoidInitializer(vd->init->loc); + } + else + { + ExpInitializer *ie = vd->init->isExpInitializer(); + assert(ie); + vto->init = new ExpInitializer(ie->loc, ie->exp->doInline(ids)); + } } de->declaration = (Dsymbol *) (void *)vto; } @@ -854,7 +854,8 @@ Statement *ForeachStatement::inlineScan(InlineScanState *iss) { aggr = aggr->inlineScan(iss); - body = body->inlineScan(iss); + if (body) + body = body->inlineScan(iss); return this; } @@ -864,7 +865,8 @@ { lwr = lwr->inlineScan(iss); upr = upr->inlineScan(iss); - body = body->inlineScan(iss); + if (body) + body = body->inlineScan(iss); return this; } #endif @@ -1288,7 +1290,11 @@ #endif isSynchronized() || isImportedSymbol() || +#if V2 + closureVars.dim || // no nested references to this frame +#else nestedFrameRef || // no nested references to this frame +#endif (isVirtual() && !isFinal()) )) {