/* zz30
 *
 * demonstrate a splay-tree depth problem
*/

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

#ifndef SCALE
#define SCALE 10000
#endif


struct list
{
  struct list *next;
};


int
main ()
{
  struct list *head = NULL;
  struct list *tail = NULL;
  struct list *p;
  long n;
  int direction;

  for (direction = 0; direction < 2; direction++)
    {
      fprintf (stdout, "allocating\n");
      fflush (stdout);

      for (n = 0; n < SCALE; ++n)
	{
	  p = malloc (sizeof *p);
	  if (NULL == p)
	    {
	      fprintf (stdout, "malloc failed\n");
	      break;
	    }
	  if (direction == 0)
	    {			/* add at tail */
	      p->next = NULL;
	      if (NULL != tail)
		tail->next = p;
	      else
		head = p;
	      tail = p;
	    }
	  else
	    {			/* add at head */
	      p->next = head;
	      if (NULL == tail)
		tail = p;
	      head = p;
	    }
	}

      fprintf (stdout, "freeing\n");
      fflush (stdout);

      while (NULL != head)
	{
	  p = head;
	  head = head->next;
	  free (p);
	}

    }

  fprintf (stdout, "done\n");
  fflush (stdout);

  return (0);
}

/* { dg-output "allocating.*freeing.*allocating.*freeing.*done" } */
