mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-08-28 17:20:04 +02:00
fixes #431 :: apply DMDFE 1.062; thanks SiegeLord
This commit is contained in:
13
dmd/struct.c
13
dmd/struct.c
@@ -200,11 +200,22 @@ void AggregateDeclaration::addField(Scope *sc, VarDeclaration *v)
|
||||
memsize = v->type->size(loc);
|
||||
memalignsize = v->type->alignsize();
|
||||
xalign = v->type->memalign(sc->structalign);
|
||||
#if 0
|
||||
alignmember(xalign, memalignsize, &sc->offset);
|
||||
v->offset = sc->offset;
|
||||
sc->offset += memsize;
|
||||
if (sc->offset > structsize)
|
||||
structsize = sc->offset;
|
||||
#else
|
||||
unsigned ofs = sc->offset;
|
||||
alignmember(xalign, memalignsize, &ofs);
|
||||
v->offset = ofs;
|
||||
ofs += memsize;
|
||||
if (ofs > structsize)
|
||||
structsize = ofs;
|
||||
if (!isUnionDeclaration())
|
||||
sc->offset = ofs;
|
||||
#endif
|
||||
if (sc->structalign < memalignsize)
|
||||
memalignsize = sc->structalign;
|
||||
if (alignsize < memalignsize)
|
||||
@@ -337,8 +348,6 @@ void StructDeclaration::semantic(Scope *sc)
|
||||
{
|
||||
Dsymbol *s = (Dsymbol *)members->data[i];
|
||||
s->semantic(sc2);
|
||||
if (isUnionDeclaration())
|
||||
sc2->offset = 0;
|
||||
#if 0
|
||||
if (sizeok == 2)
|
||||
{ //printf("forward reference\n");
|
||||
|
||||
Reference in New Issue
Block a user