Don't use __bzero for memset if the second argument isn't zero.
authorDan Gohman <gohman@apple.com>
Tue, 1 Apr 2008 20:56:18 +0000 (20:56 +0000)
committerDan Gohman <gohman@apple.com>
Tue, 1 Apr 2008 20:56:18 +0000 (20:56 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49050 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelLowering.cpp

index f4ec6afd5406ff02cb92642b215a472bc5932daa..162979b8039a65b378eee99a1a8c0832badd2bc6 100644 (file)
@@ -4562,8 +4562,9 @@ SDOperand X86TargetLowering::LowerMEMSET(SDOperand Op, SelectionDAG &DAG) {
       (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();