mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
Add getABITypeSize, getABITypeSizeInBits
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42488 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
21c276d2fa
commit
3b5b4cd1a5
@ -159,10 +159,23 @@ public:
|
||||
/// type.
|
||||
uint64_t getTypeSize(const Type *Ty) const;
|
||||
|
||||
/// getABITypeSize - Return the number of bytes allocated for the specified
|
||||
/// type when used as an element in a larger object, including alignment
|
||||
/// padding.
|
||||
uint64_t getABITypeSize(const Type *Ty) const {
|
||||
unsigned char Align = getABITypeAlignment(Ty);
|
||||
return (getTypeSize(Ty) + Align - 1)/Align*Align;
|
||||
}
|
||||
|
||||
/// getTypeSizeInBits - Return the number of bits necessary to hold the
|
||||
/// specified type.
|
||||
uint64_t getTypeSizeInBits(const Type* Ty) const;
|
||||
|
||||
/// getABITypeSizeInBits - Return the number of bytes allocated for the
|
||||
/// specified type when used as an element in a larger object, including
|
||||
/// alignment padding.
|
||||
uint64_t getABITypeSizeInBits(const Type* Ty) const;
|
||||
|
||||
/// getABITypeAlignment - Return the minimum ABI-required alignment for the
|
||||
/// specified type.
|
||||
unsigned char getABITypeAlignment(const Type *Ty) const;
|
||||
|
@ -471,7 +471,12 @@ uint64_t TargetData::getTypeSizeInBits(const Type *Ty) const {
|
||||
return getTypeSize(Ty) * 8;
|
||||
}
|
||||
|
||||
|
||||
uint64_t TargetData::getABITypeSizeInBits(const Type *Ty) const {
|
||||
if (Ty->isInteger())
|
||||
return cast<IntegerType>(Ty)->getBitWidth();
|
||||
else
|
||||
return getABITypeSize(Ty) * 8;
|
||||
}
|
||||
/*!
|
||||
\param abi_or_pref Flag that determines which alignment is returned. true
|
||||
returns the ABI alignment, false returns the preferred alignment.
|
||||
|
Loading…
Reference in New Issue
Block a user