Don't use __bzero for memset if the second argument isn't zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49050 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp
index f4ec6af..162979b 100644
--- a/lib/Target/X86/X86ISelLowering.cpp
+++ b/lib/Target/X86/X86ISelLowering.cpp
@@ -4562,8 +4562,9 @@
       (I && I->getValue() > Subtarget->getMaxInlineSizeThreshold())) {
 
     // Check to see if there is a specialized entry-point for memory zeroing.
-    const char *bzeroEntry = Subtarget->getBZeroEntry();
     ConstantSDNode *V = dyn_cast<ConstantSDNode>(Op.getOperand(2));
+    const char *bzeroEntry = 
+      V && V->isNullValue() ? Subtarget->getBZeroEntry() : 0;
 
     MVT::ValueType IntPtr = getPointerTy();
     const Type *IntPtrTy = getTargetData()->getIntPtrType();