return link_handler (start_pc, end_pc, handler, type, &whole_range);
struct eh_range *ptr, *prev = NULL, *h;  for (ptr = whole_range.first_child; ptr; ptr = ptr->next_sibling) { if (start_pc >= ptr->start_pc && start_pc <= ptr->end_pc && TREE_PURPOSE (ptr->handlers) == type && TREE_VALUE (ptr->handlers) == handler) {  ptr->end_pc = MAX (ptr->end_pc, end_pc); return; } prev = ptr; }  h = (struct eh_range *) oballoc (sizeof (struct eh_range)); h->start_pc = start_pc; h->end_pc = end_pc; h->first_child = NULL; h->outer = NULL; h->handlers = build_tree_list (type, handler); h->next_sibling = NULL;  if (prev == NULL) whole_range.first_child = h; else prev->next_sibling = h;
add_handler (start_pc, end_pc, handler, type)     int start_pc, end_pc;     tree handler;     tree type;{  return link_handler (start_pc, end_pc, handler, type, &whole_range);}