diff options
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 7272951..ea655f9 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -5629,10 +5629,15 @@ Error BitcodeReader::materialize(GlobalValue *GV) { } } - // Remove align from return attribute on CallInst. - if (auto *CI = dyn_cast<CallInst>(&I)) { - if (CI->getFunctionType()->getReturnType()->isVoidTy()) - CI->removeAttribute(0, Attribute::Alignment); + // Remove incompatible attributes on function calls. + if (auto *CI = dyn_cast<CallBase>(&I)) { + CI->removeAttributes(AttributeList::ReturnIndex, + AttributeFuncs::typeIncompatible( + CI->getFunctionType()->getReturnType())); + + for (unsigned ArgNo = 0; ArgNo < CI->arg_size(); ++ArgNo) + CI->removeParamAttrs(ArgNo, AttributeFuncs::typeIncompatible( + CI->getArgOperand(ArgNo)->getType())); } } |