mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-19 14:23:13 +01:00
Fixed passing of structs and static arrays into functions.
Not sure if it is correct, though.
This commit is contained in:
@@ -752,8 +752,11 @@ void DtoDefineFunction(FuncDeclaration* fd)
|
||||
|
||||
bool refout = vd->storage_class & (STCref | STCout);
|
||||
bool lazy = vd->storage_class & STClazy;
|
||||
|
||||
#if DMDV2
|
||||
if (!refout)
|
||||
#else
|
||||
if (!refout && (!f->fty.args[i]->byref || lazy))
|
||||
#endif
|
||||
{
|
||||
// alloca a stack slot for this first class value arg
|
||||
const LLType* argt;
|
||||
|
||||
@@ -86,7 +86,12 @@ void IrFuncTy::getParam(Type* dty, int idx, DValue* val, llvm::Value* lval)
|
||||
return;
|
||||
}
|
||||
|
||||
DtoStore(val->getRVal(), lval);
|
||||
LLValue *rval = val->getRVal();
|
||||
#if DMDV2
|
||||
if (DtoIsPassedByRef(val->type))
|
||||
rval = DtoLoad(rval);
|
||||
#endif
|
||||
DtoStore(rval, lval);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user