Mercurial > projects > ldc
diff gen/tollvm.cpp @ 92:70d6113eeb8c trunk
[svn r96] Updated to DMD 1.023.
Regular bugfixes.
author | lindquist |
---|---|
date | Thu, 08 Nov 2007 19:13:28 +0100 |
parents | 3f949c6e2e9d |
children | 08508eebbb3e |
line wrap: on
line diff
--- a/gen/tollvm.cpp Wed Nov 07 04:52:56 2007 +0100 +++ b/gen/tollvm.cpp Thu Nov 08 19:13:28 2007 +0100 @@ -795,12 +795,15 @@ ////////////////////////////////////////////////////////////////////////////////////////// -DValue* DtoInitializer(Initializer* init) +DValue* DtoInitializer(Initializer* init, DValue* v) { if (ExpInitializer* ex = init->isExpInitializer()) { Logger::println("expression initializer"); + assert(ex->exp); + if (v) gIR->exps.push_back(IRExp(NULL,ex->exp,v)); return ex->exp->toElem(gIR); + if (v) gIR->exps.pop_back(); } else if (init->isVoidInitializer()) { @@ -1226,6 +1229,7 @@ void DtoAssign(DValue* lhs, DValue* rhs) { + Logger::cout() << "DtoAssign(...);\n"; Type* t = DtoDType(lhs->getType()); Type* t2 = DtoDType(rhs->getType()); @@ -1425,7 +1429,7 @@ llvm::Value* cond = gIR->ir->CreateICmpEQ(gIR->ir->CreateLoad(gflag,"tmp"),DtoConstBool(false)); gIR->ir->CreateCondBr(cond, initbb, endinitbb); gIR->scope() = IRScope(initbb,endinitbb); - DValue* ie = DtoInitializer(init); + DValue* ie = DtoInitializer(init, NULL); if (!ie->inPlace()) { DValue* dst = new DVarValue(t, gvar, true); DtoAssign(dst, ie);