Mercurial > projects > ldc
diff gen/toir.cpp @ 163:a8cd9bc1021a trunk
[svn r179] lots and lots of fixes, much more of tango now compiles/works.
author | lindquist |
---|---|
date | Mon, 05 May 2008 07:36:29 +0200 |
parents | 1856c62af24b |
children | a64becf2a702 |
line wrap: on
line diff
--- a/gen/toir.cpp Mon May 05 00:56:53 2008 +0200 +++ b/gen/toir.cpp Mon May 05 07:36:29 2008 +0200 @@ -212,6 +212,7 @@ else if (vd->isParameter()) { Logger::println("function param"); if (!gIR->irDsymbol[vd].getIrValue()) { + assert(0); // should be fixed now // TODO: determine this properly // this happens when the DMD frontend generates by pointer wrappers for struct opEquals(S) and opCmp(S) gIR->irDsymbol[vd].getIrValue() = &p->func()->func->getArgumentList().back(); @@ -230,8 +231,9 @@ vd->toObjFile(); DtoConstInitGlobal(vd); } - if (!gIR->irDsymbol[vd].getIrValue() || gIR->irDsymbol[vd].getIrValue()->getType()->isAbstract()) { + if (!gIR->irDsymbol[vd].getIrValue() || DtoType(vd->type)->isAbstract()) { Logger::println("global variable not resolved :/ %s", vd->toChars()); + Logger::cout() << *DtoType(vd->type) << '\n'; assert(0); } return new DVarValue(vd, gIR->irDsymbol[vd].getIrValue(), true); @@ -1503,7 +1505,7 @@ arrptr = DtoGEP(l->getRVal(), zero, r->getRVal(),"tmp",p->scopebb()); } else if (e1type->ty == Tarray) { - arrptr = DtoGEP(l->getLVal(),zero,one,"tmp",p->scopebb()); + arrptr = DtoGEP(l->getRVal(),zero,one,"tmp",p->scopebb()); arrptr = new llvm::LoadInst(arrptr,"tmp",p->scopebb()); arrptr = new llvm::GetElementPtrInst(arrptr,r->getRVal(),"tmp",p->scopebb()); }