diff options
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64StackOffset.h')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64StackOffset.h | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64StackOffset.h b/llvm/lib/Target/AArch64/AArch64StackOffset.h index 13f12a6c9c30..f95b5dc5246e 100644 --- a/llvm/lib/Target/AArch64/AArch64StackOffset.h +++ b/llvm/lib/Target/AArch64/AArch64StackOffset.h @@ -15,6 +15,7 @@ #define LLVM_LIB_TARGET_AARCH64_AARCH64STACKOFFSET_H #include "llvm/Support/MachineValueType.h" +#include "llvm/Support/TypeSize.h" namespace llvm { @@ -45,8 +46,7 @@ public: StackOffset() : Bytes(0), ScalableBytes(0) {} StackOffset(int64_t Offset, MVT::SimpleValueType T) : StackOffset() { - assert(MVT(T).getSizeInBits() % 8 == 0 && - "Offset type is not a multiple of bytes"); + assert(MVT(T).isByteSized() && "Offset type is not a multiple of bytes"); *this += Part(Offset, T); } @@ -56,11 +56,11 @@ public: StackOffset &operator=(const StackOffset &) = default; StackOffset &operator+=(const StackOffset::Part &Other) { - int64_t OffsetInBytes = Other.first * (Other.second.getSizeInBits() / 8); - if (Other.second.isScalableVector()) - ScalableBytes += OffsetInBytes; + const TypeSize Size = Other.second.getSizeInBits(); + if (Size.isScalable()) + ScalableBytes += Other.first * ((int64_t)Size.getKnownMinSize() / 8); else - Bytes += OffsetInBytes; + Bytes += Other.first * ((int64_t)Size.getFixedSize() / 8); return *this; } |