Fix a nasty bug in DAGCombine of STORE nodes.
authorOwen Anderson <resistor@mac.com>
Thu, 19 Mar 2015 22:48:57 +0000 (22:48 +0000)
committerOwen Anderson <resistor@mac.com>
Thu, 19 Mar 2015 22:48:57 +0000 (22:48 +0000)
commitdb4201235b515c6ebeb0afb031b0cacfcae656e2
tree2058f0363bc8ee38d38b159ba51ff0ebddd0a72c
parentf80840f784df00023d23d9ee4829b9cbd4a2056e
Fix a nasty bug in DAGCombine of STORE nodes.

This is very related to the bug fixed in r174431.  The problem is that
SelectionDAG does not include alignment in the uniquing of loads and
stores.  When an otherwise no-op DAGCombine would increase the alignment
of a load or store, the original node would be returned (with the
alignment increased), which would cause the node not to be processed by
any further DAGCombines.

I don't have a direct testcase for this that manifests on an in-tree
target, but I did see some noise in the tests for other targets and have
updated them for it.

llvm-svn: 232780
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/test/CodeGen/ARM/2014-01-09-pseudo_expand_implicit_reg.ll
llvm/test/CodeGen/PowerPC/anon_aggr.ll
llvm/test/CodeGen/Thumb2/2013-03-02-vduplane-nonconstant-source-index.ll