# HG changeset patch # User Tomas Lindquist Olsen # Date 1221160215 -7200 # Node ID 23538d0f0d5bb85d9e4b94ebb8270c52b29c46bb # Parent 192b82878b78cede4705cda55d9593a8314610fa Fixed a few mini tests issues. Added 'darwin' and 'Posix' as versions user can't set. Fixed #80 . diff -r 192b82878b78 -r 23538d0f0d5b dmd/cond.c --- a/dmd/cond.c Wed Sep 10 12:33:33 2008 -0700 +++ b/dmd/cond.c Thu Sep 11 21:10:15 2008 +0200 @@ -130,7 +130,7 @@ "DigitalMars", "LLVM", "LLVMDC", "LLVM64", "X86", "X86_64", "PPC", "PPC64", "Windows", "Win32", "Win64", - "linux", + "linux", "darwin", "Posix", "LittleEndian", "BigEndian", "all", "none", diff -r 192b82878b78 -r 23538d0f0d5b gen/toir.cpp --- a/gen/toir.cpp Wed Sep 10 12:33:33 2008 -0700 +++ b/gen/toir.cpp Thu Sep 11 21:10:15 2008 +0200 @@ -2156,12 +2156,20 @@ Logger::cout() << (dyn?"dynamic":"static") << " array literal with length " << len << " of D type: '" << arrayType->toChars() << "' has llvm type: '" << *llType << "'\n"; // llvm storage type - const LLType* llStoType = LLArrayType::get(DtoType(elemType), len); + const LLType* llElemType = DtoTypeNotVoid(elemType); + const LLType* llStoType = LLArrayType::get(llElemType, len); Logger::cout() << "llvm storage type: '" << *llStoType << "'\n"; + // don't allocate storage for zero length dynamic array literals + if (dyn && len == 0) + { + // dmd seems to just make them null... + return new DSliceValue(type, DtoConstSize_t(0), getNullPtr(getPtrToType(llElemType))); + } + // dst pointer - LLValue* dstMem = 0; - dstMem = DtoAlloca(llStoType, "arrayliteral"); + // FIXME: dynamic array literals should be allocated with the GC + LLValue* dstMem = DtoAlloca(llStoType, "arrayliteral"); // store elements for (size_t i=0; i 2.9999 && c.re < 3.0001); + assert(c.im > 1.9999i && c.im < 2.0001); +}