From 04288e93be7bbcdca5707d84149e864923f9ed25 Mon Sep 17 00:00:00 2001 From: Guillaume Chatelet Date: Mon, 6 Jul 2020 08:44:49 +0000 Subject: [PATCH] Fix 46594 - Alignment assertion failure in instcombine --- llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp index 966b3246f4f..836af6234ad 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp @@ -4540,10 +4540,11 @@ static void annotateAnyAllocSite(CallBase &Call, const TargetLibraryInfo *TLI) { Call.getContext(), Op1C->getZExtValue())); // Add alignment attribute if alignment is a power of two constant. if (Op0C && Op0C->getValue().ult(llvm::Value::MaximumAlignment)) { - if (MaybeAlign AlignmentVal = Op0C->getMaybeAlignValue()) - Call.addAttribute( - AttributeList::ReturnIndex, - Attribute::getWithAlignment(Call.getContext(), *AlignmentVal)); + uint64_t AlignmentVal = Op0C->getZExtValue(); + if (llvm::isPowerOf2_64(AlignmentVal)) + Call.addAttribute(AttributeList::ReturnIndex, + Attribute::getWithAlignment(Call.getContext(), + Align(AlignmentVal))); } } else if (isReallocLikeFn(&Call, TLI) && Op1C) { Call.addAttribute(AttributeList::ReturnIndex, -- 2.11.0