mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-06 02:45:25 +03:00
Fixed passing of structs and static arrays into functions.
Not sure if it is correct, though.
This commit is contained in:
parent
81e0203a6c
commit
e9dacd97e2
2 changed files with 10 additions and 2 deletions
|
@ -752,8 +752,11 @@ void DtoDefineFunction(FuncDeclaration* fd)
|
||||||
|
|
||||||
bool refout = vd->storage_class & (STCref | STCout);
|
bool refout = vd->storage_class & (STCref | STCout);
|
||||||
bool lazy = vd->storage_class & STClazy;
|
bool lazy = vd->storage_class & STClazy;
|
||||||
|
#if DMDV2
|
||||||
|
if (!refout)
|
||||||
|
#else
|
||||||
if (!refout && (!f->fty.args[i]->byref || lazy))
|
if (!refout && (!f->fty.args[i]->byref || lazy))
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
// alloca a stack slot for this first class value arg
|
// alloca a stack slot for this first class value arg
|
||||||
const LLType* argt;
|
const LLType* argt;
|
||||||
|
|
|
@ -86,7 +86,12 @@ void IrFuncTy::getParam(Type* dty, int idx, DValue* val, llvm::Value* lval)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
DtoStore(val->getRVal(), lval);
|
LLValue *rval = val->getRVal();
|
||||||
|
#if DMDV2
|
||||||
|
if (DtoIsPassedByRef(val->type))
|
||||||
|
rval = DtoLoad(rval);
|
||||||
|
#endif
|
||||||
|
DtoStore(rval, lval);
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue