This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Make memset in calloc a tail call.


Hi, after reading a calloc code I found that we do not return memset
value. Unless compiler can recognize that memset result and return value
are same it will be used as normal call but a tail call is faster.

OK to commit?

	* malloc/malloc.c (calloc): Make memset a tail call.

diff --git a/malloc/malloc.c b/malloc/malloc.c
index 897c43a..3fac780 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -3214,7 +3214,7 @@ __libc_calloc(size_t n, size_t elem_size)
   if (chunk_is_mmapped (p))
     {
       if (__builtin_expect (perturb_byte, 0))
-	MALLOC_ZERO (mem, sz);
+	return MALLOC_ZERO (mem, sz);
       return mem;
     }
 
@@ -3236,7 +3236,7 @@ __libc_calloc(size_t n, size_t elem_size)
   assert(nclears >= 3);
 
   if (nclears > 9)
-    MALLOC_ZERO(d, clearsize);
+    return MALLOC_ZERO(d, clearsize);
 
   else {
     *(d+0) = 0;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]