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