Allow targets to define libcall names for mem(cpy,set,move) intrinsics, rather than...
authorSanjiv Gupta <sanjiv.gupta@microchip.com>
Thu, 30 Jul 2009 09:12:56 +0000 (09:12 +0000)
committerSanjiv Gupta <sanjiv.gupta@microchip.com>
Thu, 30 Jul 2009 09:12:56 +0000 (09:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77586 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/RuntimeLibcalls.h
lib/CodeGen/SelectionDAG/SelectionDAG.cpp
lib/CodeGen/SelectionDAG/TargetLowering.cpp

index 7f2c8bc3684028fc7ffcd88cc7688cb94957f3aa..ae708c912cc2f9d48f695bb7e074bfcc00e55fb3 100644 (file)
@@ -224,6 +224,11 @@ namespace RTLIB {
     O_F32,
     O_F64,
 
+    // MEMORY
+    MEMCPY,
+    MEMSET,
+    MEMMOVE,
+
     // EXCEPTION HANDLING
     UNWIND_RESUME,
 
index eca726a1df9c1fa503f4afc18b020afc2fbe9f87..480f837f3eec1bd858641af1824c0444d30f90d3 100644 (file)
@@ -3385,7 +3385,8 @@ SDValue SelectionDAG::getMemcpy(SDValue Chain, DebugLoc dl, SDValue Dst,
   std::pair<SDValue,SDValue> CallResult =
     TLI.LowerCallTo(Chain, Type::VoidTy,
                     false, false, false, false, 0, CallingConv::C, false,
-                    getExternalSymbol("memcpy", TLI.getPointerTy()),
+                    getExternalSymbol(TLI.getLibcallName(RTLIB::MEMCPY), 
+                                      TLI.getPointerTy()),
                     Args, *this, dl);
   return CallResult.second;
 }
@@ -3431,7 +3432,8 @@ SDValue SelectionDAG::getMemmove(SDValue Chain, DebugLoc dl, SDValue Dst,
   std::pair<SDValue,SDValue> CallResult =
     TLI.LowerCallTo(Chain, Type::VoidTy,
                     false, false, false, false, 0, CallingConv::C, false,
-                    getExternalSymbol("memmove", TLI.getPointerTy()),
+                    getExternalSymbol(TLI.getLibcallName(RTLIB::MEMMOVE), 
+                                      TLI.getPointerTy()),
                     Args, *this, dl);
   return CallResult.second;
 }
@@ -3483,7 +3485,8 @@ SDValue SelectionDAG::getMemset(SDValue Chain, DebugLoc dl, SDValue Dst,
   std::pair<SDValue,SDValue> CallResult =
     TLI.LowerCallTo(Chain, Type::VoidTy,
                     false, false, false, false, 0, CallingConv::C, false,
-                    getExternalSymbol("memset", TLI.getPointerTy()),
+                    getExternalSymbol(TLI.getLibcallName(RTLIB::MEMSET), 
+                                      TLI.getPointerTy()),
                     Args, *this, dl);
   return CallResult.second;
 }
index 85b47a001ebf259c611efac0b4cd87f2b1631816..21b8cce77f94977182fdf5530ba4c40417689faf 100644 (file)
@@ -241,6 +241,9 @@ static void InitLibcallNames(const char **Names) {
   Names[RTLIB::UO_F64] = "__unorddf2";
   Names[RTLIB::O_F32] = "__unordsf2";
   Names[RTLIB::O_F64] = "__unorddf2";
+  Names[RTLIB::MEMCPY] = "memcpy";
+  Names[RTLIB::MEMMOVE] = "memmove";
+  Names[RTLIB::MEMSET] = "memset";
   Names[RTLIB::UNWIND_RESUME] = "_Unwind_Resume";
 }