diff --git a/gen/typinf.cpp b/gen/typinf.cpp index bcdab264..b59fffdb 100644 --- a/gen/typinf.cpp +++ b/gen/typinf.cpp @@ -450,9 +450,17 @@ void TypeInfoEnumDeclaration::llvmDefine() // otherwise emit a void[] with the default initializer else { - LLType* memty = DtoType(sd->memtype); - LLConstant* C = LLConstantInt::get(memty, sd->defaultval->toInteger(), !isLLVMUnsigned(sd->memtype)); - b.push_void_array(C, sd->memtype, sd); + Type *memtype = sd->memtype; + LLType *memty = DtoType(memtype); + LLConstant *C; + if (memtype->isintegral()) + C = LLConstantInt::get(memty, sd->defaultval->toInteger(), !isLLVMUnsigned(memtype)); + else if (memtype->isString()) + C = DtoConstString(static_cast(sd->defaultval->toString()->string)); + else + llvm_unreachable("Unsupported type"); + + b.push_void_array(C, memtype, sd); } // finish diff --git a/tests/d2/dmd-testsuite b/tests/d2/dmd-testsuite index 34ab16a4..6ff7ed4b 160000 --- a/tests/d2/dmd-testsuite +++ b/tests/d2/dmd-testsuite @@ -1 +1 @@ -Subproject commit 34ab16a4fc65389527c4a3eb8211c86005b54444 +Subproject commit 6ff7ed4b70183c6a314fe999418e7b2bd881dc6d