From a98662f4c15e91b697e589ac93a39777a62bfb64 Mon Sep 17 00:00:00 2001 From: Guillaume Chatelet Date: Thu, 26 Mar 2020 15:58:11 +0000 Subject: [PATCH] [Alignment][NFC] Update MachineMemOperand implementation to use MaybeAlign Summary: This is patch is part of a series to introduce an Alignment type. See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html See this patch for the introduction of the type: https://reviews.llvm.org/D64790 Reviewers: courbet Reviewed By: courbet Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D76625 --- llvm/include/llvm/CodeGen/MachineMemOperand.h | 4 ++-- llvm/lib/CodeGen/MachineOperand.cpp | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/llvm/include/llvm/CodeGen/MachineMemOperand.h b/llvm/include/llvm/CodeGen/MachineMemOperand.h index 7ee700c..76ae8de 100644 --- a/llvm/include/llvm/CodeGen/MachineMemOperand.h +++ b/llvm/include/llvm/CodeGen/MachineMemOperand.h @@ -169,7 +169,7 @@ private: MachinePointerInfo PtrInfo; uint64_t Size; Flags FlagVals; - uint16_t BaseAlignLog2; // log_2(base_alignment) + 1 + Align BaseAlign; MachineAtomicInfo AtomicInfo; AAMDNodes AAInfo; const MDNode *Ranges; @@ -229,7 +229,7 @@ public: /// Return the minimum known alignment in bytes of the base address, without /// the offset. - uint64_t getBaseAlignment() const { return (1ull << BaseAlignLog2) >> 1; } + uint64_t getBaseAlignment() const { return BaseAlign.value(); } /// Return the AA tags for the memory reference. AAMDNodes getAAInfo() const { return AAInfo; } diff --git a/llvm/lib/CodeGen/MachineOperand.cpp b/llvm/lib/CodeGen/MachineOperand.cpp index c7cbd9e..47d1c68 100644 --- a/llvm/lib/CodeGen/MachineOperand.cpp +++ b/llvm/lib/CodeGen/MachineOperand.cpp @@ -1009,8 +1009,8 @@ MachineMemOperand::MachineMemOperand(MachinePointerInfo ptrinfo, Flags f, const MDNode *Ranges, SyncScope::ID SSID, AtomicOrdering Ordering, AtomicOrdering FailureOrdering) - : PtrInfo(ptrinfo), Size(s), FlagVals(f), BaseAlignLog2(Log2_32(a) + 1), - AAInfo(AAInfo), Ranges(Ranges) { + : PtrInfo(ptrinfo), Size(s), FlagVals(f), BaseAlign(a), AAInfo(AAInfo), + Ranges(Ranges) { assert((PtrInfo.V.isNull() || PtrInfo.V.is() || isa(PtrInfo.V.get()->getType())) && "invalid pointer value"); @@ -1043,7 +1043,7 @@ void MachineMemOperand::refineAlignment(const MachineMemOperand *MMO) { if (MMO->getBaseAlignment() >= getBaseAlignment()) { // Update the alignment value. - BaseAlignLog2 = Log2_32(MMO->getBaseAlignment()) + 1; + BaseAlign = Align(MMO->getBaseAlignment()); // Also update the base and offset, because the new alignment may // not be applicable with the old ones. PtrInfo = MMO->PtrInfo; -- 2.7.4