diff --git a/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp b/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp --- a/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp +++ b/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp @@ -128,8 +128,7 @@ Function::arg_iterator AI = F.arg_begin(); for (unsigned i = 0, e = ArgumentConstants.size(); i != e; ++i, ++AI) { // Do we have a constant argument? - if (ArgumentConstants[i].getInt() || AI->use_empty() || - AI->hasInAllocaAttr() || (AI->hasByValAttr() && !F.onlyReadsMemory())) + if (ArgumentConstants[i].getInt() || AI->use_empty()) continue; Value *V = ArgumentConstants[i].getPointer();