Mercurial > projects > ldc
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); |