# HG changeset patch # User lindquist # Date 1215990233 -7200 # Node ID b85cf5faccfc30342bf429c9dc36223a91d0345c # Parent d22d8d63c1fdb40186a4b2eab07c4366a862d957 [svn r371] Fixed array init was still broken for immediate slices and complex values. diff -r d22d8d63c1fd -r b85cf5faccfc gen/arrays.cpp --- a/gen/arrays.cpp Sun Jul 13 21:41:45 2008 +0200 +++ b/gen/arrays.cpp Mon Jul 14 01:03:53 2008 +0200 @@ -113,7 +113,20 @@ LLValue* dim = DtoArrayLen(array); LLValue* ptr = DtoArrayPtr(array); - LLValue* val = value->getRVal(); + LLValue* val; + + // give slices and complex values storage (and thus an address to pass) + if (value->isSlice() || value->isComplex()) + { + val = new llvm::AllocaInst(DtoType(value->getType()), ".tmpparam", gIR->topallocapoint()); + DVarValue lval(value->getType(), val, true); + DtoAssign(&lval, value); + } + else + { + val = value->getRVal(); + } + assert(val); // prepare runtime call LLSmallVector args;