Fix a cycle in the DAG. In this code we replace multiple loads with a single load and
authorNadav Rotem <nrotem@apple.com>
Wed, 3 Oct 2012 19:30:31 +0000 (19:30 +0000)
committerNadav Rotem <nrotem@apple.com>
Wed, 3 Oct 2012 19:30:31 +0000 (19:30 +0000)
commit2e7d38192de6ccdc54cf138fabdf00b81a6cd11d
tree1665281885e90a2aa3f387795b40014507004378
parent436eaa88fda780e135405c9fc9dc9cac892eb9d8
Fix a cycle in the DAG. In this code we replace multiple loads with a single load and
multiple stores with a single load. We create the wide loads and stores (and their chains)
before we remove the scalar loads and stores and fix the DAG chain. We attempted to merge
loads with a different chain. When that happened, the assumption that it is safe to RAUW
broke and a cycle was introduced.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165148 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
test/CodeGen/X86/2012-10-03-DAGCycle.ll [new file with mode: 0644]