mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-12 02:43:14 +01:00
Fix alignment of structs containing real
This commit is contained in:
14
dmd2/mtype.c
14
dmd2/mtype.c
@@ -322,24 +322,24 @@ void Type::init()
|
||||
#endif
|
||||
Tsize_t = Tuns32;
|
||||
Tptrdiff_t = Tint32;
|
||||
PTRSIZE = 4;
|
||||
PTRSIZE = 4;
|
||||
}
|
||||
|
||||
// set real size and padding
|
||||
if (global.params.cpu == ARCHx86)
|
||||
{
|
||||
REALSIZE = 12;
|
||||
REALPAD = 2;
|
||||
REALSIZE = 12;
|
||||
REALPAD = 2;
|
||||
}
|
||||
else if (global.params.cpu == ARCHx86_64)
|
||||
{
|
||||
REALSIZE = 16;
|
||||
REALPAD = 6;
|
||||
REALSIZE = 16;
|
||||
REALPAD = 6;
|
||||
}
|
||||
else
|
||||
{
|
||||
REALSIZE = 8;
|
||||
REALPAD = 0;
|
||||
REALSIZE = 8;
|
||||
REALPAD = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -226,10 +226,13 @@ void AggregateDeclaration::addField(Scope *sc, VarDeclaration *v)
|
||||
if (!isUnionDeclaration())
|
||||
sc->offset = ofs;
|
||||
#endif
|
||||
#if !IN_LLVM
|
||||
if (global.params.is64bit && sc->structalign == 8 && memalignsize == 16)
|
||||
/* Not sure how to handle this */
|
||||
;
|
||||
else if (sc->structalign < memalignsize)
|
||||
else
|
||||
#endif
|
||||
if (sc->structalign < memalignsize)
|
||||
memalignsize = sc->structalign;
|
||||
if (alignsize < memalignsize)
|
||||
alignsize = memalignsize;
|
||||
|
||||
Reference in New Issue
Block a user