comparison gen/toir.c @ 83:339422268de1 trunk

[svn r87] Fixed some memory bloat when passing string literals as char[] params (double temporary before)
author lindquist
date Fri, 02 Nov 2007 02:03:13 +0100
parents d8dd47ef3973
children f869c636a113
comparison
equal deleted inserted replaced
82:d8dd47ef3973 83:339422268de1
360 elem* e = new elem; 360 elem* e = new elem;
361 361
362 if (dtype->ty == Tarray) { 362 if (dtype->ty == Tarray) {
363 llvm::Constant* clen = llvm::ConstantInt::get(DtoSize_t(),len,false); 363 llvm::Constant* clen = llvm::ConstantInt::get(DtoSize_t(),len,false);
364 if (!p->topexp() || p->topexp()->e2 != this) { 364 if (!p->topexp() || p->topexp()->e2 != this) {
365 llvm::Value* tmpmem = new llvm::AllocaInst(DtoType(dtype),"tmp",p->topallocapoint()); 365 llvm::Value* tmpmem = new llvm::AllocaInst(DtoType(dtype),"tempstring",p->topallocapoint());
366 DtoSetArray(tmpmem, clen, arrptr); 366 DtoSetArray(tmpmem, clen, arrptr);
367 e->mem = tmpmem; 367 e->mem = tmpmem;
368 e->temp = true;
368 } 369 }
369 else if (p->topexp()->e2 == this) { 370 else if (p->topexp()->e2 == this) {
370 llvm::Value* arr = p->topexp()->v; 371 llvm::Value* arr = p->topexp()->v;
371 assert(arr); 372 assert(arr);
372 DtoSetArray(arr, clen, arrptr); 373 DtoSetArray(arr, clen, arrptr);