changes to get the naked asm stuff working for x64

This commit is contained in:
Kelly Wilson
2009-02-10 08:02:25 -07:00
parent a4ca550874
commit 707c7bc29f
4 changed files with 125 additions and 23 deletions

View File

@@ -179,8 +179,8 @@ void emitABIReturnAsmStmt(IRAsmBlock* asmblock, Loc loc, FuncDeclaration* fdecl)
asmblock->retty = llretTy;
asmblock->retn = 1;
// x86
if (global.params.cpu == ARCHx86)
// x86 or x86_64
if (global.params.cpu == ARCHx86 || global.params.cpu == ARCHx86_64)
{
LINK l = fdecl->linkage;
assert((l == LINKd || l == LINKc || l == LINKwindows) && "invalid linkage for asm implicit return");

View File

@@ -464,7 +464,7 @@ DValue* DtoCallFunction(Loc& loc, Type* resulttype, DValue* fnval, Expressions*
LLValue* retllval = (retinptr) ? args[0] : call->get();
// swap real/imag parts on a x87
if (global.params.cpu == ARCHx86 && tf->nextOf()->toBasetype()->iscomplex())
if ((global.params.cpu == ARCHx86 || global.params.cpu == ARCHx86_64) && tf->nextOf()->toBasetype()->iscomplex())
{
retllval = DtoAggrPairSwap(retllval);
}