diff options
Diffstat (limited to 'lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp')
-rw-r--r-- | lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp b/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp index fa68000df5..7446a51a4d 100644 --- a/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp +++ b/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp @@ -379,22 +379,10 @@ Instruction *InstCombiner::visitStoreInst(StoreInst &SI) { unsigned EffectiveStoreAlign = StoreAlign != 0 ? StoreAlign : TD->getABITypeAlignment(Val->getType()); - if (KnownAlign > EffectiveStoreAlign) { + if (KnownAlign > EffectiveStoreAlign) SI.setAlignment(KnownAlign); - } else if (StoreAlign == 0) { - unsigned PtrAlign = 0; - if (GlobalValue *GV = dyn_cast<GlobalValue>(Ptr->stripPointerCasts())) - PtrAlign = GV->getAlignment(); - - if (PtrAlign != 0 && PtrAlign < EffectiveStoreAlign) - // The pointer alignment may be less than the effective store - // alignment. If so, then we don't want to increase the alignment here, - // since that could lead to code-gen using instructions which require a - // higher alignment than the pointer guarantees. - SI.setAlignment(PtrAlign); - else - SI.setAlignment(EffectiveStoreAlign); - } + else if (StoreAlign == 0) + SI.setAlignment(EffectiveStoreAlign); } // Don't hack volatile/atomic stores. |