diff --git a/malloc/arena.c b/malloc/arena.c
index 405ae829c0..3259de5468 100644
--- a/malloc/arena.c
+++ b/malloc/arena.c
@@ -262,7 +262,7 @@ static void tcache_key_initialize (void);
 static void
 ptmalloc_init (void)
 {
-  if (__malloc_initialized)
+  if (__glibc_likely (__malloc_initialized))
     return;
 
   __malloc_initialized = true;
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 7f35f48769..ea2da0c9fc 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -3212,8 +3212,8 @@ tcache_next (tcache_entry *e)
 static __always_inline bool
 tcache_available (size_t tc_idx)
 {
-  if (tc_idx < mp_.tcache_bins
-      && tcache != NULL
+  if (__glibc_likely (tc_idx < TCACHE_MAX_BINS)
+      && __glibc_likely (tcache != NULL)
       && tcache->counts[tc_idx] > 0)
     return true;
   else
@@ -3250,7 +3250,8 @@ tcache_free (mchunkptr p, INTERNAL_SIZE_T size)
 {
   bool done = false;
   size_t tc_idx = csize2tidx (size);
-  if (tcache != NULL && tc_idx < mp_.tcache_bins)
+  if (__glibc_likely (tcache != NULL)
+      && __glibc_likely (tc_idx < mp_.tcache_bins))
     {
       /* Check to see if it's already in the tcache.  */
       tcache_entry *e = (tcache_entry *) chunk2mem (p);
@@ -4200,8 +4201,8 @@ _int_malloc (mstate av, size_t bytes)
 #if USE_TCACHE
 	      /* Fill cache first, return to user only if cache fills.
 		 We may return one of these chunks later.  */
-	      if (tcache_nb > 0
-		  && tcache->counts[tc_idx] < mp_.tcache_count)
+	      if (__glibc_likely (tcache_nb > 0)
+		  && __glibc_likely (tcache->counts[tc_idx] < mp_.tcache_count))
 		{
 		  tcache_put (victim, tc_idx);
 		  return_cached = 1;
