llvm-6502/lib/Transforms/Scalar
Duncan P. N. Exon Smith 0dee67560f SROA: Only split loads on byte boundaries
r199771 accidently broke the logic that makes sure that SROA only splits
load on byte boundaries.  If such a split happens, some bits get lost
when reassembling loads of wider types, causing data corruption.

Move the width check up to reject such splits early, avoiding the
corruption.  Fixes PR19250.

Patch by: Björn Steinbrink <bsteinbr@gmail.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211082 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-17 00:19:35 +00:00
..
ADCE.cpp [Modules] Fix potential ODR violations by sinking the DEBUG_TYPE 2014-04-22 02:55:47 +00:00
CMakeLists.txt Move GlobalMerge from Transform to CodeGen. 2014-06-13 22:57:59 +00:00
ConstantHoisting.cpp ConstantHoisting.cpp: Add <tuple> for std::tie, since r207593 removed FileSystem.h, it includes <tuple>. 2014-04-30 06:44:50 +00:00
ConstantProp.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
CorrelatedValuePropagation.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
DCE.cpp [Modules] Fix potential ODR violations by sinking the DEBUG_TYPE 2014-04-22 02:55:47 +00:00
DeadStoreElimination.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
EarlyCSE.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
FlattenCFGPass.cpp [Modules] Fix potential ODR violations by sinking the DEBUG_TYPE 2014-04-22 02:55:47 +00:00
GVN.cpp GVN: Enable value forwarding for calloc 2014-06-12 21:16:19 +00:00
IndVarSimplify.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
JumpThreading.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
LICM.cpp [C++] Use 'nullptr'. 2014-04-28 04:05:08 +00:00
LLVMBuild.txt Add proper dependencies to LLVMBuild.txt in llvm/lib. 2013-12-10 05:39:34 +00:00
LoadCombine.cpp Add LoadCombine pass. 2014-05-29 01:55:07 +00:00
LoopDeletion.cpp [Modules] Fix potential ODR violations by sinking the DEBUG_TYPE 2014-04-22 02:55:47 +00:00
LoopIdiomRecognize.cpp Remove extra whitespace in function declaration. No functionality change. 2014-06-14 03:48:29 +00:00
LoopInstSimplify.cpp RecursivelyDeleteTriviallyDeadInstructions() could remove 2014-04-26 05:58:11 +00:00
LoopRerollPass.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
LoopRotation.cpp Make the LoopRotate pass's maximum header size configurable both programmatically 2014-05-26 08:58:51 +00:00
LoopStrengthReduce.cpp [LSR] Canonicalize reg1 + ... + regN into reg1 + ... + 1*regN. 2014-05-20 19:25:04 +00:00
LoopUnrollPass.cpp Teach LoopUnrollPass to respect loop unrolling hints in metadata. 2014-06-16 23:53:02 +00:00
LoopUnswitch.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
LowerAtomic.cpp IR: add "cmpxchg weak" variant to support permitted failure. 2014-06-13 14:24:07 +00:00
Makefile
MemCpyOptimizer.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
PartiallyInlineLibCalls.cpp [Modules] Fix potential ODR violations by sinking the DEBUG_TYPE 2014-04-22 02:55:47 +00:00
Reassociate.cpp [Reassociate] Similar to "X + -X" -> "0", added code to handle "X + ~X" -> "-1". 2014-05-31 15:01:54 +00:00
Reg2Mem.cpp [Modules] Fix potential ODR violations by sinking the DEBUG_TYPE 2014-04-22 02:55:47 +00:00
SampleProfile.cpp Remove 'using std::errro_code' from lib. 2014-06-13 02:24:39 +00:00
Scalar.cpp Move GlobalMerge from Transform to CodeGen. 2014-06-13 22:57:59 +00:00
Scalarizer.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
ScalarReplAggregates.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
SCCP.cpp SCCP: update for cmpxchg returning { iN, i1 } now. 2014-06-13 14:54:09 +00:00
SeparateConstOffsetFromGEP.cpp [SeparateConstOffsetFromGEP] inbounds zext => sext for better splitting 2014-06-08 23:49:34 +00:00
SimplifyCFGPass.cpp Remove 'using std::errro_code' from lib. 2014-06-13 02:24:39 +00:00
Sink.cpp [C++] Use 'nullptr'. Transforms edition. 2014-04-25 05:29:35 +00:00
SROA.cpp SROA: Only split loads on byte boundaries 2014-06-17 00:19:35 +00:00
StructurizeCFG.cpp Use range for 2014-05-19 17:52:48 +00:00
TailRecursionElimination.cpp Add support for missed and analysis optimization remarks. 2014-05-22 14:19:46 +00:00