From ed7dd481e5d56a014936b278171a57239f11999f Mon Sep 17 00:00:00 2001 From: Tomas Lindquist Olsen Date: Wed, 8 Oct 2008 22:38:52 +0200 Subject: [PATCH] Fixed dynamic array -> boolean. does (arr.ptr !is null) now instead of (arr.length != 0) --- gen/llvmhelpers.cpp | 6 ++++-- tests/mini/strings2.d | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 tests/mini/strings2.d diff --git a/gen/llvmhelpers.cpp b/gen/llvmhelpers.cpp index f1cad18d..932ab667 100644 --- a/gen/llvmhelpers.cpp +++ b/gen/llvmhelpers.cpp @@ -1562,8 +1562,10 @@ LLValue* DtoBoolean(Loc& loc, DValue* dval) // dynamic array else if (ty == Tarray) { - // return (arr.length != 0) - return gIR->ir->CreateICmpNE(DtoArrayLen(dval), DtoConstSize_t(0), "tmp"); + // return (arr.ptr !is null) + LLValue* ptr = DtoArrayPtr(dval); + LLConstant* nul = getNullPtr(ptr->getType()); + return gIR->ir->CreateICmpNE(ptr, nul, "tmp"); } // delegate else if (ty == Tdelegate) diff --git a/tests/mini/strings2.d b/tests/mini/strings2.d new file mode 100644 index 00000000..c826acce --- /dev/null +++ b/tests/mini/strings2.d @@ -0,0 +1,5 @@ +void main() +{ + char[] s = ""; + assert(s); +}