diff options
| author | Dan Gohman <gohman@apple.com> | 2010-06-24 14:30:44 +0000 |
|---|---|---|
| committer | Dan Gohman <gohman@apple.com> | 2010-06-24 14:30:44 +0000 |
| commit | 600f62b3ba9724275dc6fbab0f639bc10ddcb379 (patch) | |
| tree | daf2289c93430bb2f81527d8ba570fc0171fdf83 /llvm/lib/Target | |
| parent | 5aafdf1e43c183bdbe8ad87815564b332f5de8cb (diff) | |
| download | bcm5719-llvm-600f62b3ba9724275dc6fbab0f639bc10ddcb379.tar.gz bcm5719-llvm-600f62b3ba9724275dc6fbab0f639bc10ddcb379.zip | |
Reapply r106634, now that the bug it exposed is fixed.
llvm-svn: 106746
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index d64ac6ca229..da10a6f2cad 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -9633,8 +9633,10 @@ static SDValue PerformOrCombine(SDNode *N, SelectionDAG &DAG, if (ShAmt1.getOpcode() == ISD::SUB) { SDValue Sum = ShAmt1.getOperand(0); if (ConstantSDNode *SumC = dyn_cast<ConstantSDNode>(Sum)) { - if (SumC->getSExtValue() == Bits && - ShAmt1.getOperand(1) == ShAmt0) + SDValue ShAmt1Op1 = ShAmt1.getOperand(1); + if (ShAmt1Op1.getNode()->getOpcode() == ISD::TRUNCATE) + ShAmt1Op1 = ShAmt1Op1.getOperand(0); + if (SumC->getSExtValue() == Bits && ShAmt1Op1 == ShAmt0) return DAG.getNode(Opc, DL, VT, Op0, Op1, DAG.getNode(ISD::TRUNCATE, DL, |

