# HG changeset patch # User Christian Kamm # Date 1224189386 -7200 # Node ID b972fb129d3719394e7d593cbad1b0a863bf74ee # Parent fd5665da3a27db2761ca6d1bba58350040e521b1 Add missing case to DtoAssign for T[n] = T[]. Fixes downs' initializer bug. diff -r fd5665da3a27 -r b972fb129d37 gen/llvmhelpers.cpp --- a/gen/llvmhelpers.cpp Thu Oct 16 22:07:02 2008 +0200 +++ b/gen/llvmhelpers.cpp Thu Oct 16 22:36:26 2008 +0200 @@ -450,12 +450,20 @@ } } else if (t->ty == Tsarray) { + // T[n] = T[n] if (DtoType(lhs->getType()) == DtoType(rhs->getType())) { DtoStaticArrayCopy(lhs->getLVal(), rhs->getRVal()); } - else { + // T[n] = T + else if (t->next->toBasetype()->equals(t2)) { DtoArrayInit(loc, lhs, rhs); } + // T[n] = T[] - generally only generated by frontend in rare cases + else if (t2->ty == Tarray && t->next->toBasetype()->equals(t2->next->toBasetype())) { + DtoMemCpy(lhs->getLVal(), DtoArrayPtr(rhs), DtoArrayLen(rhs)); + } else { + assert(0 && "Unimplemented static array assign!"); + } } else if (t->ty == Tdelegate) { if (rhs->isNull())