link_handler (start_pc, end_pc, handler, type, outer) int start_pc, end_pc; tree handler; tree type; struct eh_range *outer;
link_handler (range, outer) struct eh_range *range, *outer;
link_handler (start_pc, end_pc, handler, type, outer)     int start_pc, end_pc;     tree handler;     tree type;     struct eh_range *outer;{  struct eh_range **ptr;  if (start_pc < outer->start_pc || end_pc > outer->end_pc)    return 0;  /* invalid or non-nested exception range */  if (start_pc == outer->start_pc && end_pc == outer->end_pc)    {      outer->handlers = tree_cons (type, handler, outer->handlers);      return 1;    }  ptr = &outer->first_child;  for (;; ptr = &(*ptr)->next_sibling)    {      if (*ptr == NULL || end_pc <= (*ptr)->start_pc)	{	  struct eh_range *h = (struct eh_range *)	    oballoc (sizeof (struct eh_range));	  h->start_pc = start_pc;	  h->end_pc = end_pc;	  h->next_sibling = *ptr;	  h->first_child = NULL;	  h->outer = outer;	  h->handlers = build_tree_list (type, handler);	  *ptr = h;	  return 1;	}      else if (start_pc < (*ptr)->end_pc)	return link_handler (start_pc, end_pc, handler, type, *ptr);      /* end_pc > (*ptr)->start_pc && start_pc >= (*ptr)->end_pc. */    }}