Mercurial > projects > ldc
diff gen/arrays.cpp @ 655:93433f4b6963
Added -version=Tango in default llvmdc.conf
Fixed problem with array casts, all DWT modules needed for HelloWorld1 samples now compile. Still some linking issues.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Mon, 06 Oct 2008 12:46:57 +0200 |
parents | df196c8dea26 |
children | b411c41a9716 |
line wrap: on
line diff
--- a/gen/arrays.cpp Mon Oct 06 10:23:25 2008 +0200 +++ b/gen/arrays.cpp Mon Oct 06 12:46:57 2008 +0200 @@ -998,10 +998,12 @@ rval2 = DtoArrayCastLength(DtoArrayLen(usl), ety, ptrty->getContainedType(0)); } else { - LLValue* uval = u->getRVal(); if (fromtype->ty == Tsarray) { + LLValue* uval = u->getRVal(); + if (Logger::enabled()) Logger::cout() << "uvalTy = " << *uval->getType() << '\n'; + assert(isaPointer(uval->getType())); const LLArrayType* arrty = isaArray(uval->getType()->getContainedType(0)); @@ -1016,15 +1018,10 @@ rval = DtoBitCast(uval, ptrty); } else { - LLValue* zero = llvm::ConstantInt::get(LLType::Int32Ty, 0, false); - LLValue* one = llvm::ConstantInt::get(LLType::Int32Ty, 1, false); - rval2 = DtoGEP(uval,zero,zero); - rval2 = DtoLoad(rval2); + rval2 = DtoArrayLen(u); rval2 = DtoArrayCastLength(rval2, ety, ptrty->getContainedType(0)); - rval = DtoGEP(uval,zero,one); - rval = DtoLoad(rval); - //Logger::cout() << *e->mem->getType() << '|' << *ptrty << '\n'; + rval = DtoArrayPtr(u); rval = DtoBitCast(rval, ptrty); } }