summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/IPO
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2017-08-04 17:09:11 +0000
committerReid Kleckner <rnk@google.com>2017-08-04 17:09:11 +0000
commitda748f1c3d92f7bd02ee3292f3d9654d4f0f4a45 (patch)
tree01579f445c01742b3c12d7cbe75ac2f1c5b98c36 /llvm/lib/Transforms/IPO
parentf785fd94c65c1268556ed89e2485a3673e343ae8 (diff)
downloadbcm5719-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.cpp2
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};
OpenPOWER on IntegriCloud