[llvm-commits] [llvm] r56888 - in /llvm/trunk: lib/Target/X86/X86ISelLowering.cpp lib/Target/X86/X86Subtarget.cpp lib/Target/X86/X86Subtarget.h test/CodeGen/X86/darwin-bzero.ll

Bill Wendling isanbard at gmail.com
Tue Sep 30 15:05:33 PDT 2008


Author: void
Date: Tue Sep 30 17:05:33 2008
New Revision: 56888

URL: http://llvm.org/viewvc/llvm-project?rev=56888&view=rev
Log:
Just don't transform this memset into "bzero" if no-builtin is specified.

Modified:
    llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
    llvm/trunk/lib/Target/X86/X86Subtarget.cpp
    llvm/trunk/lib/Target/X86/X86Subtarget.h
    llvm/trunk/test/CodeGen/X86/darwin-bzero.ll

Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=56888&r1=56887&r2=56888&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Tue Sep 30 17:05:33 2008
@@ -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.

Modified: llvm/trunk/lib/Target/X86/X86Subtarget.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86Subtarget.cpp?rev=56888&r1=56887&r2=56888&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86Subtarget.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86Subtarget.cpp Tue Sep 30 17:05:33 2008
@@ -63,10 +63,10 @@
 /// interface like the non-standard bzero function, if such a function exists on
 /// the current subtarget and it is considered prefereable over memset with zero
 /// passed as the second argument. Otherwise it returns null.
-const char *X86Subtarget::getBZeroEntry(bool NoBuiltin) const {
+const char *X86Subtarget::getBZeroEntry() const {
   // Darwin 10 has a __bzero entry point for this purpose.
   if (getDarwinVers() >= 10)
-    return NoBuiltin ? "_bzero" : "__bzero";
+    return "__bzero";
 
   return 0;
 }

Modified: llvm/trunk/lib/Target/X86/X86Subtarget.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86Subtarget.h?rev=56888&r1=56887&r2=56888&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86Subtarget.h (original)
+++ llvm/trunk/lib/Target/X86/X86Subtarget.h Tue Sep 30 17:05:33 2008
@@ -184,7 +184,7 @@
   /// the current subtarget and it is considered prefereable over
   /// memset with zero passed as the second argument. Otherwise it
   /// returns null.
-  const char *getBZeroEntry(bool NoBuiltin) const;
+  const char *getBZeroEntry() const;
 };
 
 namespace X86 {

Modified: llvm/trunk/test/CodeGen/X86/darwin-bzero.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/darwin-bzero.ll?rev=56888&r1=56887&r2=56888&view=diff

==============================================================================
--- llvm/trunk/test/CodeGen/X86/darwin-bzero.ll (original)
+++ llvm/trunk/test/CodeGen/X86/darwin-bzero.ll Tue Sep 30 17:05:33 2008
@@ -1,5 +1,5 @@
 ; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin10 | grep __bzero
-; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin10 -no-builtin | grep _bzero
+; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin10 -no-builtin | grep _memset
 
 declare void @llvm.memset.i32(i8*, i8, i32, i32)
 





More information about the llvm-commits mailing list