diff options
author | Guillaume Chatelet <gchatelet@google.com> | 2022-06-14 09:46:14 +0000 |
---|---|---|
committer | Guillaume Chatelet <gchatelet@google.com> | 2022-06-14 10:56:36 +0000 |
commit | 6725d806400e4071ebf32a95bb21466b32e52a76 (patch) | |
tree | 8eecde276917c03ce76111bc3eff85a1ae0b527e /llvm/lib/CodeGen/CodeGenPrepare.cpp | |
parent | 6fd480d95703fdd0a5e6d3bad394b5d638b837c4 (diff) | |
download | llvm-6725d806400e4071ebf32a95bb21466b32e52a76.zip llvm-6725d806400e4071ebf32a95bb21466b32e52a76.tar.gz llvm-6725d806400e4071ebf32a95bb21466b32e52a76.tar.bz2 |
[NFC][Alignment] Use Align in shouldAlignPointerArgs
Diffstat (limited to 'llvm/lib/CodeGen/CodeGenPrepare.cpp')
-rw-r--r-- | llvm/lib/CodeGen/CodeGenPrepare.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp index 6076ecd..85d8afb 100644 --- a/llvm/lib/CodeGen/CodeGenPrepare.cpp +++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp @@ -2124,7 +2124,8 @@ bool CodeGenPrepare::optimizeCallInst(CallInst *CI, bool &ModifiedDT) { // Align the pointer arguments to this call if the target thinks it's a good // idea - unsigned MinSize, PrefAlign; + unsigned MinSize; + Align PrefAlign; if (TLI->shouldAlignPointerArgs(CI, MinSize, PrefAlign)) { for (auto &Arg : CI->args()) { // We want to align both objects whose address is used directly and @@ -2138,12 +2139,12 @@ bool CodeGenPrepare::optimizeCallInst(CallInst *CI, bool &ModifiedDT) { 0); Value *Val = Arg->stripAndAccumulateInBoundsConstantOffsets(*DL, Offset); uint64_t Offset2 = Offset.getLimitedValue(); - if ((Offset2 & (PrefAlign-1)) != 0) + if (!isAligned(PrefAlign, Offset2)) continue; AllocaInst *AI; - if ((AI = dyn_cast<AllocaInst>(Val)) && AI->getAlignment() < PrefAlign && + if ((AI = dyn_cast<AllocaInst>(Val)) && AI->getAlign() < PrefAlign && DL->getTypeAllocSize(AI->getAllocatedType()) >= MinSize + Offset2) - AI->setAlignment(Align(PrefAlign)); + AI->setAlignment(PrefAlign); // Global variables can only be aligned if they are defined in this // object (i.e. they are uniquely initialized in this object), and // over-aligning global variables that have an explicit section is @@ -2153,7 +2154,7 @@ bool CodeGenPrepare::optimizeCallInst(CallInst *CI, bool &ModifiedDT) { GV->getPointerAlignment(*DL) < PrefAlign && DL->getTypeAllocSize(GV->getValueType()) >= MinSize + Offset2) - GV->setAlignment(MaybeAlign(PrefAlign)); + GV->setAlignment(PrefAlign); } // If this is a memcpy (or similar) then we may be able to improve the // alignment |