diff options
author | Dan Gohman <gohman@apple.com> | 2009-01-13 23:25:30 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2009-01-13 23:25:30 +0000 |
commit | d3942af5cb58c4db3008660db11d880a170e984c (patch) | |
tree | b1a8b87d73590859c9459448b09d3bcfb4991cfa /llvm | |
parent | b8f5ba6781e3f933b7d0b2c6703dcc5c6a076402 (diff) | |
download | bcm5719-llvm-d3942af5cb58c4db3008660db11d880a170e984c.tar.gz bcm5719-llvm-d3942af5cb58c4db3008660db11d880a170e984c.zip |
Don't use a BT instruction if the AND has multiple uses.
llvm-svn: 62195
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index fe665c351fa..a8bcfeafd39 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -5034,7 +5034,9 @@ SDValue X86TargetLowering::LowerSETCC(SDValue Op, SelectionDAG &DAG) { // Lower ((X >>u N) & 1) != 0 to BT. // Lower ((X >>s N) & 1) != 0 to BT. // FIXME: Is i386 or later or available only on some chips? - if (Op0.getOpcode() == ISD::AND && Op1.getOpcode() == ISD::Constant && + if (Op0.getOpcode() == ISD::AND && + Op0.hasOneUse() && + Op1.getOpcode() == ISD::Constant && Op0.getOperand(1).getOpcode() == ISD::Constant && (CC == ISD::SETEQ || CC == ISD::SETNE)) { ConstantSDNode *AndRHS = cast<ConstantSDNode>(Op0.getOperand(1)); |