forked from OSchip/llvm-project
1d04b5bacf
This is a 2nd attempt at: https://reviews.llvm.org/rL310055 ...which was reverted at rL310123 because of PR34074: https://bugs.llvm.org/show_bug.cgi?id=34074 In this version, we break out of the inner loop after we successfully merge and kill a pair of stores. In the earlier rev, we were continuing instead, which meant we could process the invalid info from a now dead store. Original commit message (authored by Filipe Cabecinhas): This fixes PR31777. If both stores' values are ConstantInt, we merge the two stores (shifting the smaller store appropriately) and replace the earlier (and larger) store with an updated constant. In the future we should also support vectors of integers. And maybe float/double if we can. Differential Revision: https://reviews.llvm.org/D30703 llvm-svn: 314206 |
||
---|---|---|
.. | ||
2011-03-25-DSEMiscompile.ll | ||
2011-09-06-EndOfFunction.ll | ||
2011-09-06-MemCpy.ll | ||
2016-07-17-UseAfterFree.ll | ||
OverwriteStoreBegin.ll | ||
OverwriteStoreEnd.ll | ||
PartialStore.ll | ||
atomic.ll | ||
calloc-store.ll | ||
combined-partial-overwrites.ll | ||
const-pointers.ll | ||
crash.ll | ||
cs-cs-aliasing.ll | ||
dominate.ll | ||
fence.ll | ||
free.ll | ||
inst-limits.ll | ||
invariant.start.ll | ||
libcalls.ll | ||
lifetime.ll | ||
memintrinsics.ll | ||
merge-stores-big-endian.ll | ||
merge-stores.ll | ||
no-targetdata.ll | ||
operand-bundles.ll | ||
pr11390.ll | ||
simple.ll |