diff --git a/llvm/lib/Analysis/MemoryBuiltins.cpp b/llvm/lib/Analysis/MemoryBuiltins.cpp --- a/llvm/lib/Analysis/MemoryBuiltins.cpp +++ b/llvm/lib/Analysis/MemoryBuiltins.cpp @@ -336,9 +336,12 @@ return V->getOperand(FnData->AlignParam); } unsigned AllocAlignParam; + const Function *F = V->getCalledFunction(); if (V->getAttributes().hasAttrSomewhere(Attribute::AllocAlign, - &AllocAlignParam)) { - return V->getOperand(AllocAlignParam-1); + &AllocAlignParam) || + (F && F->getAttributes().hasAttrSomewhere(Attribute::AllocAlign, + &AllocAlignParam))) { + return V->getOperand(AllocAlignParam - 1); } return nullptr; }