Mercurial > projects > ldc
diff gen/arrays.cpp @ 174:16e676ae5ab4 trunk
[svn r190] Fixed array concatenation for some broken cases.
Added a sanity check for the Dsymbol state set.
author | lindquist |
---|---|
date | Tue, 06 May 2008 18:36:46 +0200 |
parents | db9890b3fb64 |
children | a074a5ff709c |
line wrap: on
line diff
--- a/gen/arrays.cpp Tue May 06 07:56:03 2008 +0200 +++ b/gen/arrays.cpp Tue May 06 18:36:46 2008 +0200 @@ -578,20 +578,18 @@ assert(t1->ty == t2->ty); DValue* e1 = exp1->toElem(gIR); - llvm::Value* a = e1->getRVal(); - DValue* e2 = exp2->toElem(gIR); - llvm::Value* b = e2->getRVal(); llvm::Value *len1, *len2, *src1, *src2, *res; - len1 = gIR->ir->CreateLoad(DtoGEPi(a,0,0,"tmp"),"tmp"); - len2 = gIR->ir->CreateLoad(DtoGEPi(b,0,0,"tmp"),"tmp"); + + len1 = DtoArrayLen(e1); + len2 = DtoArrayLen(e2); res = gIR->ir->CreateAdd(len1,len2,"tmp"); llvm::Value* mem = DtoNewDynArray(arr, res, DtoDType(t1->next), false); - src1 = gIR->ir->CreateLoad(DtoGEPi(a,0,1,"tmp"),"tmp"); - src2 = gIR->ir->CreateLoad(DtoGEPi(b,0,1,"tmp"),"tmp"); + src1 = DtoArrayPtr(e1); + src2 = DtoArrayPtr(e2); DtoMemCpy(mem,src1,len1); mem = gIR->ir->CreateGEP(mem,len1,"tmp");