Resolve mismatch between object.di and typinfo.cpp on 64bit non-x86 systems.

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.

This commit changes an assertion which did not check for the os and therefore
broke on 64bit non-86 systems like ppc64.
This commit is contained in:
kai
2012-12-21 22:05:28 +01:00
parent 5f37ae30cf
commit df4a245040

View File

@@ -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);