[svn r178] Fixed codegen values for function arguments, the old approach was completely broken, amazing it even worked...

This commit is contained in:
Tomas Lindquist Olsen
2008-05-05 00:56:53 +02:00
parent db2b3d1937
commit 06362014f4
8 changed files with 100 additions and 61 deletions

View File

@@ -253,6 +253,7 @@ DValue* VarExp::toElem(IRState* p)
assert(sdecltype->ty == Tstruct);
TypeStruct* ts = (TypeStruct*)sdecltype;
assert(ts->sym);
DtoForceConstInitDsymbol(ts->sym);
assert(gIR->irDsymbol[ts->sym].irStruct->init);
return new DVarValue(type, gIR->irDsymbol[ts->sym].irStruct->init, true);
}
@@ -2291,6 +2292,15 @@ DValue* IdentityExp::toElem(IRState* p)
}
eval = DtoDynArrayIs(op,l,r);
}
else if (t1->ty == Tdelegate) {
if (v->isNull()) {
r = NULL;
}
else {
assert(l->getType() == r->getType());
}
eval = DtoDynArrayIs(op,l,r);
}
else if (t1->isfloating())
{
llvm::FCmpInst::Predicate pred = (op == TOKidentity) ? llvm::FCmpInst::FCMP_OEQ : llvm::FCmpInst::FCMP_ONE;