llvm-6502/lib
Bill Schmidt 89e88e30bf This patch addresses an incorrect transformation in the DAG combiner.
The included test case is derived from one of the GCC compatibility tests.
The problem arises after the selection DAG has been converted to type-legalized
form.  The combiner first sees a 64-bit load that can be converted into a
pre-increment form.  The original load feeds into a SRL that isolates the
upper 32 bits of the loaded doubleword.  This looks like an opportunity for
DAGCombiner::ReduceLoadWidth() to replace the 64-bit load with a 32-bit load.

However, this transformation is not valid, as the replacement load is not
a pre-increment load.  The pre-increment load produces an extra result,
which feeds a subsequent add instruction.  The replacement load only has
one result value, and this value is propagated to all uses of the pre-
increment load, including the add.  Because the add is looking for the
second result value as its operand, it ends up attempting to add a constant
to a token chain, resulting in a crash.

So the patch simply disables this transformation for any load with more than
two result values.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172480 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-14 22:04:38 +00:00
..
Analysis SCEVExpander fix. RAUW needs to update the InsertedExpressions cache. 2013-01-14 21:00:37 +00:00
Archive Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
AsmParser There was a switch fall-through in the parser for textual LLVM that caused 2013-01-07 13:32:38 +00:00
Bitcode Revert s/Raw/getBitMask/g name change. This is possibly causing LTO test hangings. 2013-01-09 23:36:50 +00:00
CodeGen This patch addresses an incorrect transformation in the DAG combiner. 2013-01-14 22:04:38 +00:00
DebugInfo [Object, DebugInfo] Make DWARFContext BE-aware. 2013-01-09 02:45:05 +00:00
ExecutionEngine Fix Casting 2013-01-14 21:04:45 +00:00
IR Fix Casting 2013-01-14 21:04:37 +00:00
Linker Fix a copy/paste error in the IR Linker, casting an ArrayType instead of a VectorType. 2013-01-10 10:49:36 +00:00
MC Move CheckForValidSection to the MCAsmParser interface. 2013-01-14 19:15:01 +00:00
Object Fix More Casts 2013-01-14 21:04:38 +00:00
Option Resort the #include lines in include/... and lib/... with the 2013-01-02 10:22:59 +00:00
Support Revert r171829 "Split changeset_ty using iterators instead of loops" as it breaks the VS2008 build 2013-01-14 14:13:06 +00:00
TableGen TableGen: Keep track of superclass reference ranges. 2013-01-10 18:50:11 +00:00
Target Follow up of commit r172472. 2013-01-14 21:34:09 +00:00
Transforms Fix Casting Bug 2013-01-14 21:04:40 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile