[svn r316] Fixed array slice assignments like: int[] arr = ...; arr[] = 42;

There was problems with most non basic types...
Added an option to premake so we can do: premake --target gnu --no-boehm
to disable the Boehm GC.
This commit is contained in:
Tomas Lindquist Olsen
2008-06-23 14:48:42 +02:00
parent 0bddb2568f
commit 599f879149
11 changed files with 90 additions and 72 deletions

View File

@@ -2702,18 +2702,20 @@ DValue* StructLiteralExp::toElem(IRState* p)
LLValue* mem = 0;
bool isinplace = true;
// already has memory (r-value of assignment)
IRExp* topexp = p->topexp();
if (topexp && topexp->e2 == this && !topexp->v->isSlice())
{
assert(topexp->e2 == this);
sptr = topexp->v->getLVal();
}
// temporary struct literal
if (!p->topexp() || p->topexp()->e2 != this)
else
{
sptr = new llvm::AllocaInst(llt,"tmpstructliteral",p->topallocapoint());
isinplace = false;
}
// already has memory
else
{
assert(p->topexp()->e2 == this);
sptr = p->topexp()->v->getLVal();
}
// num elements in literal
unsigned n = elements->dim;