aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp')
-rw-r--r--lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp18
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.