Mercurial > projects > ldc
comparison 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 |
comparison
equal
deleted
inserted
replaced
27:92408a3a2bac | 28:1c80c18f3c82 |
---|---|
226 { | 226 { |
227 Logger::print("NullExp::toElem(type=%s): %s\n", type->toChars(),toChars()); | 227 Logger::print("NullExp::toElem(type=%s): %s\n", type->toChars(),toChars()); |
228 LOG_SCOPE; | 228 LOG_SCOPE; |
229 elem* e = new elem; | 229 elem* e = new elem; |
230 const llvm::Type* t = LLVM_DtoType(type); | 230 const llvm::Type* t = LLVM_DtoType(type); |
231 if (llvm::isa<llvm::StructType>(t)) | 231 |
232 t = llvm::PointerType::get(t); | 232 if (type->ty == Tarray) { |
233 Logger::cout() << *t << '\n'; | 233 assert(llvm::isa<llvm::StructType>(t)); |
234 e->val = llvm::Constant::getNullValue(t); | 234 e->val = llvm::ConstantAggregateZero::get(t); |
235 } | |
236 else | |
237 e->val = llvm::Constant::getNullValue(t); | |
235 assert(e->val); | 238 assert(e->val); |
236 Logger::cout() << *e->val << '\n'; | 239 |
240 Logger::cout() << "null value is now " << *e->val << '\n'; | |
237 e->type = elem::NUL; | 241 e->type = elem::NUL; |
238 return e; | 242 return e; |
239 } | 243 } |
240 | 244 |
241 ////////////////////////////////////////////////////////////////////////////////////////// | 245 ////////////////////////////////////////////////////////////////////////////////////////// |