mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-09-28 22:55:52 +00:00
* Fix divide by zero error with empty structs
* Empty structs should have ALIGNMENT 1, not SIZE 1. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6263 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
77c9fcb797
commit
4e840d4db7
@ -56,15 +56,13 @@ StructLayout::StructLayout(const StructType *ST, const TargetData &TD)
|
|||||||
StructSize += TySize; // Consume space for this data item
|
StructSize += TySize; // Consume space for this data item
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Empty structures have alignment of 1 byte.
|
||||||
|
if (StructAlignment == 0) StructAlignment = 1;
|
||||||
|
|
||||||
// Add padding to the end of the struct so that it could be put in an array
|
// Add padding to the end of the struct so that it could be put in an array
|
||||||
// and all array elements would be aligned correctly.
|
// and all array elements would be aligned correctly.
|
||||||
if (StructSize % StructAlignment != 0)
|
if (StructSize % StructAlignment != 0)
|
||||||
StructSize = (StructSize/StructAlignment + 1) * StructAlignment;
|
StructSize = (StructSize/StructAlignment + 1) * StructAlignment;
|
||||||
|
|
||||||
if (StructSize == 0) {
|
|
||||||
StructSize = 1; // Empty struct is 1 byte
|
|
||||||
StructAlignment = 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Annotation *TargetData::TypeAnFactory(AnnotationID AID, const Annotable *T,
|
Annotation *TargetData::TypeAnFactory(AnnotationID AID, const Annotable *T,
|
||||||
|
Loading…
Reference in New Issue
Block a user