# HG changeset patch # User Tomas Lindquist Olsen # Date 1233701327 -3600 # Node ID 5e3bb0c3ea8b9420a7f60772c84141fe225fad61 # Parent b6647328d11e2ec7972be23185db696a6106fafe Fixed dstress/run/a/array_initialization_17_A.d regression. default initialized static array elements in a constant static array initializer was getting incorrect values. Fixed minor version problem in mini/naked_asm4.d test case. diff -r b6647328d11e -r 5e3bb0c3ea8b gen/arrays.cpp --- a/gen/arrays.cpp Tue Feb 03 21:46:54 2009 +0100 +++ b/gen/arrays.cpp Tue Feb 03 23:48:47 2009 +0100 @@ -290,7 +290,7 @@ // fill out any null entries still left with default values // element default initializer - LLConstant* defelem = elemty->defaultInit(arrinit->loc)->toConstElem(gIR); + LLConstant* defelem = DtoConstExpInit(arrinit->loc, elemty, elemty->defaultInit(arrinit->loc)); bool mismatch2 = (defelem->getType() != llelemty); for (size_t i = 0; i < arrlen; i++) diff -r b6647328d11e -r 5e3bb0c3ea8b gen/toir.cpp --- a/gen/toir.cpp Tue Feb 03 21:46:54 2009 +0100 +++ b/gen/toir.cpp Tue Feb 03 23:48:47 2009 +0100 @@ -1632,6 +1632,8 @@ DVarValue tmpvar(newtype, mem); // default initialize + // FIXME: should this use DtoConstExpInit instead ? + // or is static arrays the only troublemaker? Expression* exp = newtype->defaultInit(loc); DValue* iv = exp->toElem(gIR); DtoAssign(loc, &tmpvar, iv); diff -r b6647328d11e -r 5e3bb0c3ea8b tests/mini/naked_asm4.d --- a/tests/mini/naked_asm4.d Tue Feb 03 21:46:54 2009 +0100 +++ b/tests/mini/naked_asm4.d Tue Feb 03 23:48:47 2009 +0100 @@ -8,7 +8,7 @@ hlt; pass: ret; } - version(X86_64) + else version(X86_64) asm { naked;