diff options
| author | Dale Johannesen <dalej@apple.com> | 2010-05-25 18:47:23 +0000 |
|---|---|---|
| committer | Dale Johannesen <dalej@apple.com> | 2010-05-25 18:47:23 +0000 |
| commit | a31ed7f5ec684073b38e1b0ee9d7c45d3137e59e (patch) | |
| tree | 18917f65ab6db94553081b65d2e5d5bad6d5461b /lib/CodeGen/SelectionDAG | |
| parent | 585371118d04e435d0ff05ef4a47c78a085e6f1e (diff) | |
| download | external_llvm-a31ed7f5ec684073b38e1b0ee9d7c45d3137e59e.zip external_llvm-a31ed7f5ec684073b38e1b0ee9d7c45d3137e59e.tar.gz external_llvm-a31ed7f5ec684073b38e1b0ee9d7c45d3137e59e.tar.bz2 | |
Fix another variant of PR 7191. Also add a testcase
Mon Ping provided; unfortunately bugpoint failed to
reduce it, but I think it's important to have a test for
this in the suite. 8023512.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104624 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG')
| -rw-r--r-- | lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index df1a0a3..6bddd78 100644 --- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -3832,8 +3832,12 @@ SDValue DAGCombiner::visitANY_EXTEND(SDNode *N) { if (N0.getOpcode() == ISD::TRUNCATE) { SDValue NarrowLoad = ReduceLoadWidth(N0.getNode()); if (NarrowLoad.getNode()) { - if (NarrowLoad.getNode() != N0.getNode()) + SDNode* oye = N0.getNode()->getOperand(0).getNode(); + if (NarrowLoad.getNode() != N0.getNode()) { CombineTo(N0.getNode(), NarrowLoad); + // CombineTo deleted the truncate, if needed, but not what's under it. + AddToWorkList(oye); + } return DAG.getNode(ISD::ANY_EXTEND, N->getDebugLoc(), VT, NarrowLoad); } } |
