Just don't transform this memset into "bzero" if no-builtin is specified.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56888 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp
index 1d3fa28..755554b 100644
--- a/lib/Target/X86/X86ISelLowering.cpp
+++ b/lib/Target/X86/X86ISelLowering.cpp
@@ -5148,22 +5148,24 @@
     // Check to see if there is a specialized entry-point for memory zeroing.
     ConstantSDNode *V = dyn_cast<ConstantSDNode>(Src);
 
-    if (const char *bzeroEntry =  V &&
-        V->isNullValue() ? Subtarget->getBZeroEntry(NoBuiltin) : 0) {
-      MVT IntPtr = getPointerTy();
-      const Type *IntPtrTy = TD->getIntPtrType();
-      TargetLowering::ArgListTy Args; 
-      TargetLowering::ArgListEntry Entry;
-      Entry.Node = Dst;
-      Entry.Ty = IntPtrTy;
-      Args.push_back(Entry);
-      Entry.Node = Size;
-      Args.push_back(Entry);
-      std::pair<SDValue,SDValue> CallResult =
-        LowerCallTo(Chain, Type::VoidTy, false, false, false, false, 
-                    CallingConv::C, false, 
-                    DAG.getExternalSymbol(bzeroEntry, IntPtr), Args, DAG);
-      return CallResult.second;
+    if (!NoBuiltin) {
+      if (const char *bzeroEntry =  V &&
+          V->isNullValue() ? Subtarget->getBZeroEntry() : 0) {
+        MVT IntPtr = getPointerTy();
+        const Type *IntPtrTy = TD->getIntPtrType();
+        TargetLowering::ArgListTy Args; 
+        TargetLowering::ArgListEntry Entry;
+        Entry.Node = Dst;
+        Entry.Ty = IntPtrTy;
+        Args.push_back(Entry);
+        Entry.Node = Size;
+        Args.push_back(Entry);
+        std::pair<SDValue,SDValue> CallResult =
+          LowerCallTo(Chain, Type::VoidTy, false, false, false, false, 
+                      CallingConv::C, false, 
+                      DAG.getExternalSymbol(bzeroEntry, IntPtr), Args, DAG);
+        return CallResult.second;
+      }
     }
 
     // Otherwise have the target-independent code call memset.