Mercurial > projects > ldc
diff gen/toir.c @ 78:2332006e1fa4 trunk
[svn r82] Fixed: Fall-through switch cases were broken.
author | lindquist |
---|---|
date | Wed, 31 Oct 2007 20:50:21 +0100 |
parents | 714057ff2dbb |
children | 3587401b6eeb |
line wrap: on
line diff
--- a/gen/toir.c Wed Oct 31 09:34:18 2007 +0100 +++ b/gen/toir.c Wed Oct 31 20:50:21 2007 +0100 @@ -1445,6 +1445,7 @@ llvm::Value* llvalue = vd->nestedref ? LLVM_DtoNestedVariable(vd) : vd->llvmValue; if (vdtype->ty == Tstruct && !(t->ty == Tpointer && t->next == vdtype)) { + Logger::println("struct"); TypeStruct* vdt = (TypeStruct*)vdtype; assert(vdt->sym); e = new elem; @@ -1455,26 +1456,12 @@ else { std::vector<unsigned> dst; e->mem = LLVM_DtoIndexStruct(llvalue,vdt->sym, tnext, offset, dst); - /*size_t fo = vdt->sym->offsetToIndex(tnext, offset, dst); - llvm::Value* ptr = llvalue; - assert(ptr); - e->mem = LLVM_DtoGEP(ptr,dst,"tmp"); - if (e->mem->getType() != llt) { - e->mem = p->ir->CreateBitCast(e->mem, llt, "tmp"); - } - if (fo == (size_t)-1) { - size_t llt_sz = gTargetData->getTypeSize(llt->getContainedType(0)); - assert(offset % llt_sz == 0); - e->mem = new llvm::GetElementPtrInst(e->mem, LLVM_DtoConstUint(offset / llt_sz), "tmp", p->scopebb()); - } - else if (fo) { - e->mem = new llvm::GetElementPtrInst(e->mem, LLVM_DtoConstUint(fo), "tmp", p->scopebb()); - }*/ } e->type = elem::VAL; e->field = true; } else if (vdtype->ty == Tsarray) { + Logger::println("sarray"); e = new elem; assert(llvalue); e->arg = llvalue; @@ -1496,6 +1483,7 @@ } } else if (offset == 0) { + Logger::println("normal symoff"); e = new elem; e->type = elem::VAL; assert(llvalue);