]> git.ipfire.org Git - thirdparty/gcc.git/blame - libmudflap/testsuite/libmudflap.c/heap-scalestress.c
Daily bump.
[thirdparty/gcc.git] / libmudflap / testsuite / libmudflap.c / heap-scalestress.c
CommitLineData
00dcddaa
FCE
1/* zz30
2 *
3 * demonstrate a splay-tree depth problem
4*/
5
6#include <stdlib.h>
7#include <stdio.h>
8#include <unistd.h>
9
10#ifndef SCALE
891a2e42 11#define SCALE 10000
00dcddaa
FCE
12#endif
13
14
15struct list
16{
17 struct list *next;
18};
19
20
21int
22main ()
23{
24 struct list *head = NULL;
25 struct list *tail = NULL;
26 struct list *p;
27 long n;
28 int direction;
29
30 for (direction = 0; direction < 2; direction++)
31 {
32 fprintf (stdout, "allocating\n");
33 fflush (stdout);
34
35 for (n = 0; n < SCALE; ++n)
36 {
37 p = malloc (sizeof *p);
38 if (NULL == p)
39 {
40 fprintf (stdout, "malloc failed\n");
41 break;
42 }
43 if (direction == 0)
44 { /* add at tail */
45 p->next = NULL;
46 if (NULL != tail)
47 tail->next = p;
48 else
49 head = p;
50 tail = p;
51 }
52 else
53 { /* add at head */
54 p->next = head;
55 if (NULL == tail)
56 tail = p;
57 head = p;
58 }
59 }
60
61 fprintf (stdout, "freeing\n");
62 fflush (stdout);
63
64 while (NULL != head)
65 {
66 p = head;
67 head = head->next;
68 free (p);
69 }
70
71 }
72
73 fprintf (stdout, "done\n");
74 fflush (stdout);
75
76 return (0);
77}
78
79/* { dg-output "allocating.*freeing.*allocating.*freeing.*done" } */