diff --git a/gen/typinf.cpp b/gen/typinf.cpp index 1942c543..566b13d6 100644 --- a/gen/typinf.cpp +++ b/gen/typinf.cpp @@ -716,8 +716,11 @@ void TypeInfoStructDeclaration::llvmDefine() ClassDeclaration* tscd = Type::typeinfostruct; - assert((!global.params.is64bit && tscd->fields.dim == 11) || - (global.params.is64bit && tscd->fields.dim == 13)); + // On Windows x86_64, class TypeInfo_Struct contains 2 additional fields + // (m_arg1/m_arg2) which are used for the X86_64 System V ABI varargs + // implementation. They are not present on any other os. + assert((!(global.params.is64bit && global.params.os == OSWindows) && tscd->fields.dim == 11) || + (global.params.is64bit && global.params.os == OSWindows && tscd->fields.dim == 13)); //void function(void*) xdtor; b.push_funcptr(sd->dtor);