diff --git a/premake.lua b/premake.lua index 19ae5b3f..d6897873 100644 --- a/premake.lua +++ b/premake.lua @@ -38,8 +38,8 @@ end io.write("Default target: '"..TRIPLE.."'\n"); -- x86 ABI support -X86_REVERSE_PARAMS = 0 --disabled for now -X86_PASS_IN_EAX = 0 +X86_REVERSE_PARAMS = 1 +X86_PASS_IN_EAX = 0 --disabled for now -- D version - don't change these !!! DMDV1 = "1" diff --git a/runtime/internal/genobj.d b/runtime/internal/genobj.d index 7bffb30b..9c4246e7 100644 --- a/runtime/internal/genobj.d +++ b/runtime/internal/genobj.d @@ -800,7 +800,11 @@ class TypeInfo_Struct : TypeInfo { if (!p2) c = 1; else if (xopCmp) - c = (*xopCmp)(p1, p2); + // the x86 D calling conv requires the this arg to be last here + version(X86) + c = (*xopCmp)(p2, p1); + else + c = (*xopCmp)(p1, p2); else // BUG: relies on the GC not moving objects c = memcmp(p1, p2, m_init.length);