diff options
| author | Reid Kleckner <rnk@google.com> | 2017-08-04 17:09:11 +0000 |
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2017-08-04 17:09:11 +0000 |
| commit | da748f1c3d92f7bd02ee3292f3d9654d4f0f4a45 (patch) | |
| tree | 01579f445c01742b3c12d7cbe75ac2f1c5b98c36 /llvm/lib/Transforms/IPO | |
| parent | f785fd94c65c1268556ed89e2485a3673e343ae8 (diff) | |
| download | bcm5719-llvm-da748f1c3d92f7bd02ee3292f3d9654d4f0f4a45.tar.gz bcm5719-llvm-da748f1c3d92f7bd02ee3292f3d9654d4f0f4a45.zip | |
[ArgPromotion] Preserve alignment of byval argument in new alloca
The frontend may have requested a higher alignment for any reason, and
downstream optimizations may already have taken advantage of it. We
should keep the same alignment when moving the allocation from the
parameter area to the local variable area.
Fixes PR34038
llvm-svn: 310071
Diffstat (limited to 'llvm/lib/Transforms/IPO')
| -rw-r--r-- | llvm/lib/Transforms/IPO/ArgumentPromotion.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp b/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp index 53223ab4431..72bae203ee9 100644 --- a/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp +++ b/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp @@ -356,7 +356,7 @@ doPromotion(Function *F, SmallPtrSetImpl<Argument *> &ArgsToPromote, // Just add all the struct element types. Type *AgTy = cast<PointerType>(I->getType())->getElementType(); Value *TheAlloca = new AllocaInst(AgTy, DL.getAllocaAddrSpace(), nullptr, - "", InsertPt); + I->getParamAlignment(), "", InsertPt); StructType *STy = cast<StructType>(AgTy); Value *Idxs[2] = {ConstantInt::get(Type::getInt32Ty(F->getContext()), 0), nullptr}; |

