diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp
index c722fbf648b..ef98a2cbf5c 100644
--- a/lib/Target/X86/X86ISelLowering.cpp
+++ b/lib/Target/X86/X86ISelLowering.cpp
@@ -5612,7 +5612,7 @@ SDValue X86TargetLowering::EmitTest(SDValue Op, unsigned X86CC,
       for (SDNode::use_iterator UI = Op.getNode()->use_begin(),
            UE = Op.getNode()->use_end(); UI != UE; ++UI)
         if (UI->getOpcode() != ISD::BRCOND &&
-            UI->getOpcode() != ISD::SELECT &&
+            (UI->getOpcode() != ISD::SELECT || UI.getOperandNo() != 0) &&
             UI->getOpcode() != ISD::SETCC) {
           NonFlagUse = true;
           break;