diff gen/toir.c @ 28:1c80c18f3c82 trunk

[svn r32] * Fixed problems with arrays members of aggregates
author lindquist
date Thu, 04 Oct 2007 12:49:37 +0200
parents 92408a3a2bac
children 253a5fc4033a
line wrap: on
line diff
--- a/gen/toir.c	Thu Oct 04 11:39:53 2007 +0200
+++ b/gen/toir.c	Thu Oct 04 12:49:37 2007 +0200
@@ -228,12 +228,16 @@
     LOG_SCOPE;
     elem* e = new elem;
     const llvm::Type* t = LLVM_DtoType(type);
-    if (llvm::isa<llvm::StructType>(t))
-        t = llvm::PointerType::get(t);
-    Logger::cout() << *t << '\n';
-    e->val = llvm::Constant::getNullValue(t);
+
+    if (type->ty == Tarray) {
+        assert(llvm::isa<llvm::StructType>(t));
+        e->val = llvm::ConstantAggregateZero::get(t);
+    }
+    else
+        e->val = llvm::Constant::getNullValue(t);
     assert(e->val);
-    Logger::cout() << *e->val << '\n';
+
+    Logger::cout() << "null value is now " << *e->val << '\n';
     e->type = elem::NUL;
     return e;
 }