assert (result == GL(dl_tls_max_dtv_idx));
assert (result == GL(dl_tls_max_dtv_idx) + 1);
_dl_next_tls_modid (void){  size_t result;  if (__builtin_expect (GL(dl_tls_dtv_gaps), false))    {      size_t disp = 0;      struct dtv_slotinfo_list *runp = GL(dl_tls_dtv_slotinfo_list);      /* Note that this branch will never be executed during program	 start since there are no gaps at that time.  Therefore it	 does not matter that the dl_tls_dtv_slotinfo is not allocated	 yet when the function is called for the first times.  */      result = GL(dl_tls_static_nelem) + 1;      /* If the following would not be true we mustn't have assumed	 there is a gap.  */      assert (result <= GL(dl_tls_max_dtv_idx));      do	{	  while (result - disp < runp->len)	    {	      if (runp->slotinfo[result - disp].map == NULL)		break;	      ++result;	      assert (result <= GL(dl_tls_max_dtv_idx) + 1);	    }	  if (result - disp < runp->len)	    break;	  disp += runp->len;	}      while ((runp = runp->next) != NULL);      if (result >= GL(dl_tls_max_dtv_idx))	{	  /* The new index must indeed be exactly one higher than the	     previous high.  */	  assert (result == GL(dl_tls_max_dtv_idx));	  /* There is no gap anymore.  */	  GL(dl_tls_dtv_gaps) = false;	  goto nogaps;	}    }  else    {      /* No gaps, allocate a new entry.  */    nogaps:      result = ++GL(dl_tls_max_dtv_idx);    }  return result;}