[svn r209] Fixed: exotic array to pointer casts were broken.

Changed: classes now have opaque vtables.
This commit is contained in:
Tomas Lindquist Olsen 2008-05-12 18:44:11 +02:00
parent 7c78e3665b
commit 9f3be435b0
11 changed files with 129 additions and 48 deletions

View file

@ -934,10 +934,9 @@ DValue* DtoCastArray(DValue* u, Type* to)
Logger::cout() << "from array or sarray" << '\n';
if (totype->ty == Tpointer) {
Logger::cout() << "to pointer" << '\n';
assert(fromtype->next == totype->next || totype->next->ty == Tvoid);
rval = DtoArrayPtr(u);
if (fromtype->next != totype->next)
rval = gIR->ir->CreateBitCast(rval, getPtrToType(llvm::Type::Int8Ty), "tmp");
if (rval->getType() != tolltype)
rval = gIR->ir->CreateBitCast(rval, tolltype, "tmp");
}
else if (totype->ty == Tarray) {
Logger::cout() << "to array" << '\n';